@dnb/eufemia 10.59.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 (354) hide show
  1. package/CHANGELOG.md +28 -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/height-animation/HeightAnimation.d.ts +1 -1
  6. package/cjs/components/height-animation/HeightAnimation.js.map +1 -1
  7. package/cjs/components/height-animation/HeightAnimationDocs.js +2 -2
  8. package/cjs/components/height-animation/HeightAnimationDocs.js.map +1 -1
  9. package/cjs/components/pagination/Pagination.d.ts +1 -1
  10. package/cjs/components/upload/Upload.js +2 -1
  11. package/cjs/components/upload/Upload.js.map +1 -1
  12. package/cjs/components/upload/UploadDocs.js +5 -0
  13. package/cjs/components/upload/UploadDocs.js.map +1 -1
  14. package/cjs/components/upload/UploadFileList.js +80 -12
  15. package/cjs/components/upload/UploadFileList.js.map +1 -1
  16. package/cjs/components/upload/UploadFileListCell.d.ts +5 -1
  17. package/cjs/components/upload/UploadFileListCell.js +7 -7
  18. package/cjs/components/upload/UploadFileListCell.js.map +1 -1
  19. package/cjs/components/upload/UploadFileListLink.d.ts +13 -0
  20. package/cjs/components/upload/UploadFileListLink.js +66 -0
  21. package/cjs/components/upload/UploadFileListLink.js.map +1 -0
  22. package/cjs/components/upload/types.d.ts +8 -2
  23. package/cjs/components/upload/types.js.map +1 -1
  24. package/cjs/extensions/forms/DataContext/Provider/Provider.js +17 -9
  25. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  26. package/cjs/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  27. package/cjs/extensions/forms/Field/Upload/Upload.js +22 -8
  28. package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
  29. package/cjs/extensions/forms/Form/Element/Element.js +1 -1
  30. package/cjs/extensions/forms/Form/Element/Element.js.map +1 -1
  31. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlay.d.ts +36 -0
  32. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlay.js +132 -0
  33. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlay.js.map +1 -0
  34. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.d.ts +3 -0
  35. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js +68 -0
  36. package/cjs/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js.map +1 -0
  37. package/cjs/extensions/forms/Form/InfoOverlay/index.d.ts +2 -0
  38. package/cjs/extensions/forms/Form/InfoOverlay/index.js +27 -0
  39. package/cjs/extensions/forms/Form/InfoOverlay/index.js.map +1 -0
  40. package/cjs/extensions/forms/Form/InfoOverlay/setContent.d.ts +4 -0
  41. package/cjs/extensions/forms/Form/InfoOverlay/setContent.js +14 -0
  42. package/cjs/extensions/forms/Form/InfoOverlay/setContent.js.map +1 -0
  43. package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +8 -4
  44. package/cjs/extensions/forms/Form/Visibility/Visibility.js +18 -2
  45. package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  46. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.d.ts +1 -0
  47. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +11 -1
  48. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  49. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  50. package/cjs/extensions/forms/Form/index.js +7 -0
  51. package/cjs/extensions/forms/Form/index.js.map +1 -1
  52. package/cjs/extensions/forms/Value/Upload/Upload.d.ts +3 -2
  53. package/cjs/extensions/forms/Value/Upload/Upload.js +18 -10
  54. package/cjs/extensions/forms/Value/Upload/Upload.js.map +1 -1
  55. package/cjs/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -1
  56. package/cjs/extensions/forms/Value/Upload/UploadDocs.js +8 -3
  57. package/cjs/extensions/forms/Value/Upload/UploadDocs.js.map +1 -1
  58. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +2 -3
  59. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  60. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.css +1 -1
  61. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  62. package/cjs/extensions/forms/Wizard/style/dnb-wizard-layout.scss +1 -1
  63. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +12 -0
  64. package/cjs/extensions/forms/constants/locales/en-GB.js +12 -0
  65. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  66. package/cjs/extensions/forms/constants/locales/en-US.d.ts +12 -0
  67. package/cjs/extensions/forms/constants/locales/index.d.ts +24 -0
  68. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +12 -0
  69. package/cjs/extensions/forms/constants/locales/nb-NO.js +12 -0
  70. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  71. package/cjs/extensions/forms/style/dnb-forms.css +1 -1
  72. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  73. package/cjs/fragments/drawer-list/DrawerListProvider.js +58 -21
  74. package/cjs/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  75. package/cjs/shared/Eufemia.d.ts +1 -1
  76. package/cjs/shared/Eufemia.js +2 -2
  77. package/cjs/shared/Eufemia.js.map +1 -1
  78. package/cjs/shared/helpers/useSharedState.d.ts +14 -6
  79. package/cjs/shared/helpers/useSharedState.js +52 -27
  80. package/cjs/shared/helpers/useSharedState.js.map +1 -1
  81. package/cjs/shared/locales/en-GB.js +1 -1
  82. package/cjs/shared/locales/en-GB.js.map +1 -1
  83. package/cjs/shared/locales/nb-NO.js +1 -1
  84. package/cjs/shared/locales/nb-NO.js.map +1 -1
  85. package/cjs/style/core/scopes.scss +1 -1
  86. package/cjs/style/dnb-ui-basis.css +1 -1
  87. package/cjs/style/dnb-ui-basis.min.css +1 -1
  88. package/cjs/style/dnb-ui-body.css +1 -1
  89. package/cjs/style/dnb-ui-body.min.css +1 -1
  90. package/cjs/style/dnb-ui-components.css +3 -2
  91. package/cjs/style/dnb-ui-components.min.css +2 -2
  92. package/cjs/style/dnb-ui-core.css +1 -1
  93. package/cjs/style/dnb-ui-core.min.css +1 -1
  94. package/cjs/style/dnb-ui-extensions.css +1 -1
  95. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  96. package/cjs/style/dnb-ui-forms.css +1 -1
  97. package/cjs/style/dnb-ui-forms.min.css +1 -1
  98. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +4 -3
  99. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  100. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  101. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  102. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  103. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  104. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +4 -3
  105. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  106. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  107. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  108. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  109. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  110. package/cjs/style/themes/theme-ui/ui-theme-components.css +4 -3
  111. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  112. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  113. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  114. package/cjs/style/themes/theme-ui/ui-theme-forms.css +1 -1
  115. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  116. package/components/dialog/style/dnb-dialog.css +2 -1
  117. package/components/dialog/style/dnb-dialog.min.css +1 -1
  118. package/components/dialog/style/dnb-dialog.scss +2 -1
  119. package/components/height-animation/HeightAnimation.d.ts +1 -1
  120. package/components/height-animation/HeightAnimation.js.map +1 -1
  121. package/components/height-animation/HeightAnimationDocs.js +2 -2
  122. package/components/height-animation/HeightAnimationDocs.js.map +1 -1
  123. package/components/pagination/Pagination.d.ts +1 -1
  124. package/components/upload/Upload.js +2 -1
  125. package/components/upload/Upload.js.map +1 -1
  126. package/components/upload/UploadDocs.js +5 -0
  127. package/components/upload/UploadDocs.js.map +1 -1
  128. package/components/upload/UploadFileList.js +77 -12
  129. package/components/upload/UploadFileList.js.map +1 -1
  130. package/components/upload/UploadFileListCell.d.ts +5 -1
  131. package/components/upload/UploadFileListCell.js +7 -7
  132. package/components/upload/UploadFileListCell.js.map +1 -1
  133. package/components/upload/UploadFileListLink.d.ts +13 -0
  134. package/components/upload/UploadFileListLink.js +56 -0
  135. package/components/upload/UploadFileListLink.js.map +1 -0
  136. package/components/upload/types.d.ts +8 -2
  137. package/components/upload/types.js.map +1 -1
  138. package/es/components/dialog/style/dnb-dialog.css +2 -1
  139. package/es/components/dialog/style/dnb-dialog.min.css +1 -1
  140. package/es/components/dialog/style/dnb-dialog.scss +2 -1
  141. package/es/components/height-animation/HeightAnimation.d.ts +1 -1
  142. package/es/components/height-animation/HeightAnimation.js.map +1 -1
  143. package/es/components/height-animation/HeightAnimationDocs.js +2 -2
  144. package/es/components/height-animation/HeightAnimationDocs.js.map +1 -1
  145. package/es/components/pagination/Pagination.d.ts +1 -1
  146. package/es/components/upload/Upload.js +2 -1
  147. package/es/components/upload/Upload.js.map +1 -1
  148. package/es/components/upload/UploadDocs.js +5 -0
  149. package/es/components/upload/UploadDocs.js.map +1 -1
  150. package/es/components/upload/UploadFileList.js +77 -12
  151. package/es/components/upload/UploadFileList.js.map +1 -1
  152. package/es/components/upload/UploadFileListCell.d.ts +5 -1
  153. package/es/components/upload/UploadFileListCell.js +7 -7
  154. package/es/components/upload/UploadFileListCell.js.map +1 -1
  155. package/es/components/upload/UploadFileListLink.d.ts +13 -0
  156. package/es/components/upload/UploadFileListLink.js +56 -0
  157. package/es/components/upload/UploadFileListLink.js.map +1 -0
  158. package/es/components/upload/types.d.ts +8 -2
  159. package/es/components/upload/types.js.map +1 -1
  160. package/es/extensions/forms/DataContext/Provider/Provider.js +17 -9
  161. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  162. package/es/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  163. package/es/extensions/forms/Field/Upload/Upload.js +18 -7
  164. package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
  165. package/es/extensions/forms/Form/Element/Element.js +1 -1
  166. package/es/extensions/forms/Form/Element/Element.js.map +1 -1
  167. package/es/extensions/forms/Form/InfoOverlay/InfoOverlay.d.ts +36 -0
  168. package/es/extensions/forms/Form/InfoOverlay/InfoOverlay.js +122 -0
  169. package/es/extensions/forms/Form/InfoOverlay/InfoOverlay.js.map +1 -0
  170. package/es/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.d.ts +3 -0
  171. package/es/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js +60 -0
  172. package/es/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js.map +1 -0
  173. package/es/extensions/forms/Form/InfoOverlay/index.d.ts +2 -0
  174. package/es/extensions/forms/Form/InfoOverlay/index.js +3 -0
  175. package/es/extensions/forms/Form/InfoOverlay/index.js.map +1 -0
  176. package/es/extensions/forms/Form/InfoOverlay/setContent.d.ts +4 -0
  177. package/es/extensions/forms/Form/InfoOverlay/setContent.js +8 -0
  178. package/es/extensions/forms/Form/InfoOverlay/setContent.js.map +1 -0
  179. package/es/extensions/forms/Form/Visibility/Visibility.d.ts +8 -4
  180. package/es/extensions/forms/Form/Visibility/Visibility.js +16 -2
  181. package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  182. package/es/extensions/forms/Form/Visibility/VisibilityDocs.d.ts +1 -0
  183. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +9 -0
  184. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  185. package/es/extensions/forms/Form/index.d.ts +1 -0
  186. package/es/extensions/forms/Form/index.js +1 -0
  187. package/es/extensions/forms/Form/index.js.map +1 -1
  188. package/es/extensions/forms/Value/Upload/Upload.d.ts +3 -2
  189. package/es/extensions/forms/Value/Upload/Upload.js +18 -10
  190. package/es/extensions/forms/Value/Upload/Upload.js.map +1 -1
  191. package/es/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -1
  192. package/es/extensions/forms/Value/Upload/UploadDocs.js +5 -1
  193. package/es/extensions/forms/Value/Upload/UploadDocs.js.map +1 -1
  194. package/es/extensions/forms/Wizard/Container/WizardContainer.js +2 -3
  195. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  196. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.css +1 -1
  197. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  198. package/es/extensions/forms/Wizard/style/dnb-wizard-layout.scss +1 -1
  199. package/es/extensions/forms/constants/locales/en-GB.d.ts +12 -0
  200. package/es/extensions/forms/constants/locales/en-GB.js +12 -0
  201. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  202. package/es/extensions/forms/constants/locales/en-US.d.ts +12 -0
  203. package/es/extensions/forms/constants/locales/index.d.ts +24 -0
  204. package/es/extensions/forms/constants/locales/nb-NO.d.ts +12 -0
  205. package/es/extensions/forms/constants/locales/nb-NO.js +12 -0
  206. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  207. package/es/extensions/forms/style/dnb-forms.css +1 -1
  208. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  209. package/es/fragments/drawer-list/DrawerListProvider.js +57 -21
  210. package/es/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  211. package/es/shared/Eufemia.d.ts +1 -1
  212. package/es/shared/Eufemia.js +2 -2
  213. package/es/shared/Eufemia.js.map +1 -1
  214. package/es/shared/helpers/useSharedState.d.ts +14 -6
  215. package/es/shared/helpers/useSharedState.js +51 -28
  216. package/es/shared/helpers/useSharedState.js.map +1 -1
  217. package/es/shared/locales/en-GB.js +1 -1
  218. package/es/shared/locales/en-GB.js.map +1 -1
  219. package/es/shared/locales/nb-NO.js +1 -1
  220. package/es/shared/locales/nb-NO.js.map +1 -1
  221. package/es/style/core/scopes.scss +1 -1
  222. package/es/style/dnb-ui-basis.css +1 -1
  223. package/es/style/dnb-ui-basis.min.css +1 -1
  224. package/es/style/dnb-ui-body.css +1 -1
  225. package/es/style/dnb-ui-body.min.css +1 -1
  226. package/es/style/dnb-ui-components.css +3 -2
  227. package/es/style/dnb-ui-components.min.css +2 -2
  228. package/es/style/dnb-ui-core.css +1 -1
  229. package/es/style/dnb-ui-core.min.css +1 -1
  230. package/es/style/dnb-ui-extensions.css +1 -1
  231. package/es/style/dnb-ui-extensions.min.css +1 -1
  232. package/es/style/dnb-ui-forms.css +1 -1
  233. package/es/style/dnb-ui-forms.min.css +1 -1
  234. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +4 -3
  235. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  236. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  237. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  238. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  239. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  240. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +4 -3
  241. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  242. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  243. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  244. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  245. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  246. package/es/style/themes/theme-ui/ui-theme-components.css +4 -3
  247. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  248. package/es/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  249. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  250. package/es/style/themes/theme-ui/ui-theme-forms.css +1 -1
  251. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  252. package/esm/dnb-ui-basis.min.mjs +1 -1
  253. package/esm/dnb-ui-components.min.mjs +1 -1
  254. package/esm/dnb-ui-elements.min.mjs +1 -1
  255. package/esm/dnb-ui-extensions.min.mjs +3 -3
  256. package/esm/dnb-ui-lib.min.mjs +1 -1
  257. package/extensions/forms/DataContext/Provider/Provider.js +17 -9
  258. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  259. package/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  260. package/extensions/forms/Field/Upload/Upload.js +23 -9
  261. package/extensions/forms/Field/Upload/Upload.js.map +1 -1
  262. package/extensions/forms/Form/Element/Element.js +1 -1
  263. package/extensions/forms/Form/Element/Element.js.map +1 -1
  264. package/extensions/forms/Form/InfoOverlay/InfoOverlay.d.ts +36 -0
  265. package/extensions/forms/Form/InfoOverlay/InfoOverlay.js +122 -0
  266. package/extensions/forms/Form/InfoOverlay/InfoOverlay.js.map +1 -0
  267. package/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.d.ts +3 -0
  268. package/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js +60 -0
  269. package/extensions/forms/Form/InfoOverlay/InfoOverlayDocs.js.map +1 -0
  270. package/extensions/forms/Form/InfoOverlay/index.d.ts +2 -0
  271. package/extensions/forms/Form/InfoOverlay/index.js +3 -0
  272. package/extensions/forms/Form/InfoOverlay/index.js.map +1 -0
  273. package/extensions/forms/Form/InfoOverlay/setContent.d.ts +4 -0
  274. package/extensions/forms/Form/InfoOverlay/setContent.js +8 -0
  275. package/extensions/forms/Form/InfoOverlay/setContent.js.map +1 -0
  276. package/extensions/forms/Form/Visibility/Visibility.d.ts +8 -4
  277. package/extensions/forms/Form/Visibility/Visibility.js +16 -2
  278. package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  279. package/extensions/forms/Form/Visibility/VisibilityDocs.d.ts +1 -0
  280. package/extensions/forms/Form/Visibility/VisibilityDocs.js +9 -0
  281. package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  282. package/extensions/forms/Form/index.d.ts +1 -0
  283. package/extensions/forms/Form/index.js +1 -0
  284. package/extensions/forms/Form/index.js.map +1 -1
  285. package/extensions/forms/Value/Upload/Upload.d.ts +3 -2
  286. package/extensions/forms/Value/Upload/Upload.js +18 -10
  287. package/extensions/forms/Value/Upload/Upload.js.map +1 -1
  288. package/extensions/forms/Value/Upload/UploadDocs.d.ts +2 -1
  289. package/extensions/forms/Value/Upload/UploadDocs.js +5 -1
  290. package/extensions/forms/Value/Upload/UploadDocs.js.map +1 -1
  291. package/extensions/forms/Wizard/Container/WizardContainer.js +2 -3
  292. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  293. package/extensions/forms/Wizard/style/dnb-wizard-layout.css +1 -1
  294. package/extensions/forms/Wizard/style/dnb-wizard-layout.min.css +1 -1
  295. package/extensions/forms/Wizard/style/dnb-wizard-layout.scss +1 -1
  296. package/extensions/forms/constants/locales/en-GB.d.ts +12 -0
  297. package/extensions/forms/constants/locales/en-GB.js +12 -0
  298. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  299. package/extensions/forms/constants/locales/en-US.d.ts +12 -0
  300. package/extensions/forms/constants/locales/index.d.ts +24 -0
  301. package/extensions/forms/constants/locales/nb-NO.d.ts +12 -0
  302. package/extensions/forms/constants/locales/nb-NO.js +12 -0
  303. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  304. package/extensions/forms/style/dnb-forms.css +1 -1
  305. package/extensions/forms/style/dnb-forms.min.css +1 -1
  306. package/fragments/drawer-list/DrawerListProvider.js +58 -21
  307. package/fragments/drawer-list/DrawerListProvider.js.map +1 -1
  308. package/package.json +1 -1
  309. package/shared/Eufemia.d.ts +1 -1
  310. package/shared/Eufemia.js +2 -2
  311. package/shared/Eufemia.js.map +1 -1
  312. package/shared/helpers/useSharedState.d.ts +14 -6
  313. package/shared/helpers/useSharedState.js +52 -27
  314. package/shared/helpers/useSharedState.js.map +1 -1
  315. package/shared/locales/en-GB.js +1 -1
  316. package/shared/locales/en-GB.js.map +1 -1
  317. package/shared/locales/nb-NO.js +1 -1
  318. package/shared/locales/nb-NO.js.map +1 -1
  319. package/style/core/scopes.scss +1 -1
  320. package/style/dnb-ui-basis.css +1 -1
  321. package/style/dnb-ui-basis.min.css +1 -1
  322. package/style/dnb-ui-body.css +1 -1
  323. package/style/dnb-ui-body.min.css +1 -1
  324. package/style/dnb-ui-components.css +3 -2
  325. package/style/dnb-ui-components.min.css +2 -2
  326. package/style/dnb-ui-core.css +1 -1
  327. package/style/dnb-ui-core.min.css +1 -1
  328. package/style/dnb-ui-extensions.css +1 -1
  329. package/style/dnb-ui-extensions.min.css +1 -1
  330. package/style/dnb-ui-forms.css +1 -1
  331. package/style/dnb-ui-forms.min.css +1 -1
  332. package/style/themes/theme-eiendom/eiendom-theme-components.css +4 -3
  333. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  334. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +1 -1
  335. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  336. package/style/themes/theme-eiendom/eiendom-theme-forms.css +1 -1
  337. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  338. package/style/themes/theme-sbanken/sbanken-theme-components.css +4 -3
  339. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  340. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +1 -1
  341. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  342. package/style/themes/theme-sbanken/sbanken-theme-forms.css +1 -1
  343. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  344. package/style/themes/theme-ui/ui-theme-components.css +4 -3
  345. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  346. package/style/themes/theme-ui/ui-theme-extensions.css +1 -1
  347. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  348. package/style/themes/theme-ui/ui-theme-forms.css +1 -1
  349. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  350. package/umd/dnb-ui-basis.min.js +1 -1
  351. package/umd/dnb-ui-components.min.js +1 -1
  352. package/umd/dnb-ui-elements.min.js +1 -1
  353. package/umd/dnb-ui-extensions.min.js +5 -5
  354. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFileListCell.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_Anchor","_Button","_Icon2","_FormStatus2","_progressIndicator","_icons","_componentHelper","_useUpload","_UploadVerify","_ProgressIndicator","_Icon","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","fileExtensionImages","png","jpg","pdf","doc","docx","odt","xls","ppt","csv","txt","xml","file","exports","UploadFileListCell","_ref","_div","_FormStatus","id","uploadFile","onDelete","loadingText","deleteButtonText","download","errorMessage","isLoading","hasWarning","fileType","getFileTypeFromExtension","imageUrl","URL","createObjectURL","cellRef","useRef","exists","useExistsHighlight","handleDisappearFocus","cellElement","current","focusElement","getPreviousSibling","querySelector","focus","e","warn","onDeleteHandler","createElement","className","classnames","ref","getIcon","getTitle","icon","TrashIcon","variant","onClick","icon_position","disabled","getWarning","ExclamationIcon","iconFileType","mimeParts","type","split","target","href","name","rel","top","text","stretch","_default","internalFiles","useUpload","updateExists","React","useState","timerRef","clearTimers","clearTimeout","useEffect","some","_ref2","f","size","setTimeout"],"sources":["../../../../src/components/upload/UploadFileListCell.tsx"],"sourcesContent":["import React, { useRef } from 'react'\nimport classnames from 'classnames'\n\n// Components\nimport Anchor from '../../components/Anchor'\nimport Button from '../button/Button'\nimport Icon from '../../components/Icon'\nimport FormStatus from '../../components/FormStatus'\nimport ProgressIndicator from '../../components/progress-indicator'\n\n// Icons\nimport {\n trash as TrashIcon,\n exclamation_medium as ExclamationIcon,\n file_png_medium as png,\n file_jpg_medium as jpg,\n file_word_medium as doc,\n file_pdf_medium as pdf,\n file_xls_medium as xls,\n file_ppt_medium as ppt,\n file_csv_medium as csv,\n file_txt_medium as txt,\n file_xml_medium as xml,\n file_medium as file,\n} from '../../icons'\nimport { UploadFile, UploadFileNative } from './types'\n\n// Shared\nimport { getPreviousSibling, warn } from '../../shared/component-helper'\nimport useUpload from './useUpload'\nimport { getFileTypeFromExtension } from './UploadVerify'\n\n// Will be deprecated - and then default to only showing the file icon,\n// and not file icon per file extension type\nexport const fileExtensionImages = {\n png,\n jpg,\n pdf,\n doc,\n docx: doc,\n odt: doc,\n xls,\n ppt,\n csv,\n txt,\n xml,\n file,\n}\n\nexport type UploadFileListCellProps = {\n id: string\n\n /**\n * Uploaded file\n */\n uploadFile: UploadFile | UploadFileNative\n\n /**\n * Calls onDelete when clicking the delete button\n */\n onDelete: () => void\n\n /**\n * Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window.\n * Default: false\n */\n download?: boolean\n\n /**\n * Text\n */\n loadingText: React.ReactNode\n deleteButtonText: React.ReactNode\n}\n\nconst UploadFileListCell = ({\n id,\n uploadFile,\n onDelete,\n loadingText,\n deleteButtonText,\n download,\n}: UploadFileListCellProps) => {\n const { file, errorMessage, isLoading } = uploadFile\n const hasWarning = errorMessage != null\n\n const fileType = getFileTypeFromExtension(file)\n\n const imageUrl = URL.createObjectURL(file)\n const cellRef = useRef<HTMLLIElement>()\n const exists = useExistsHighlight(id, file)\n\n const handleDisappearFocus = () => {\n try {\n const cellElement = cellRef.current\n const focusElement = getPreviousSibling(\n '.dnb-upload',\n cellElement\n ).querySelector(\n '.dnb-upload__file-input-button'\n ) as HTMLButtonElement\n focusElement.focus()\n } catch (e) {\n warn(e)\n }\n }\n\n const onDeleteHandler = () => {\n handleDisappearFocus()\n\n onDelete()\n }\n\n return (\n <li\n className={classnames(\n 'dnb-upload__file-cell',\n hasWarning && 'dnb-upload__file-cell--warning',\n exists && 'dnb-upload__file-cell--highlight'\n )}\n ref={cellRef}\n >\n <div className=\"dnb-upload__file-cell__content\">\n <div className=\"dnb-upload__file-cell__content__left\">\n {getIcon()}\n {getTitle()}\n </div>\n <div>\n <Button\n icon={TrashIcon}\n variant=\"tertiary\"\n onClick={onDeleteHandler}\n icon_position=\"left\"\n disabled={isLoading}\n >\n {deleteButtonText}\n </Button>\n </div>\n </div>\n\n {getWarning()}\n </li>\n )\n\n function getIcon() {\n if (isLoading) {\n return <ProgressIndicator />\n }\n\n if (hasWarning) return <Icon icon={ExclamationIcon} />\n\n let iconFileType = fileType\n\n if (!iconFileType) {\n const mimeParts = file.type.split('/')\n iconFileType =\n fileExtensionImages[mimeParts[0]] ||\n fileExtensionImages[mimeParts[1]]\n }\n\n if (\n !Object.prototype.hasOwnProperty.call(\n fileExtensionImages,\n iconFileType\n )\n ) {\n iconFileType = 'file'\n }\n\n return <Icon icon={fileExtensionImages[iconFileType]} />\n }\n\n function getTitle() {\n return isLoading ? (\n <div\n className={classnames(\n 'dnb-upload__file-cell__text-container',\n 'dnb-upload__file-cell__text-container--loading'\n )}\n >\n {loadingText}\n </div>\n ) : (\n <div className=\"dnb-upload__file-cell__text-container\">\n <Anchor\n target=\"_blank\"\n href={imageUrl}\n download={download ? file.name : null}\n className={classnames(\n 'dnb-anchor--no-launch-icon',\n 'dnb-upload__file-cell__title'\n )}\n rel=\"noopener noreferrer\"\n >\n {file.name}\n </Anchor>\n </div>\n )\n }\n\n function getWarning() {\n return hasWarning ? (\n <FormStatus top=\"small\" text={errorMessage} stretch />\n ) : null\n }\n}\n\nexport default UploadFileListCell\n\nfunction useExistsHighlight(id: string, file: File) {\n const { internalFiles } = useUpload(id)\n const [exists, updateExists] = React.useState(false)\n const timerRef = React.useRef<NodeJS.Timer>()\n\n const clearTimers = () => {\n clearTimeout(timerRef.current)\n }\n\n React.useEffect(() => {\n const exists = internalFiles.some(({ exists, file: f }) => {\n return exists && f.name === file.name && f.size === file.size\n })\n\n if (exists) {\n updateExists(true)\n clearTimers()\n timerRef.current = setTimeout(() => updateExists(false), 1500) // transition-duration in CSS\n }\n\n return clearTimers\n }, [file, internalFiles])\n\n return exists\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"UploadFileListCell.js","names":["_react","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_Button","_Icon2","_FormStatus2","_progressIndicator","_icons","_componentHelper","_useUpload","_UploadVerify","_UploadFileListLink","_ProgressIndicator","_Icon","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","fileExtensionImages","png","jpg","pdf","doc","docx","odt","xls","ppt","csv","txt","xml","file","exports","UploadFileListCell","_ref","_div","_FormStatus","id","uploadFile","onDelete","onClick","loadingText","deleteButtonText","download","errorMessage","isLoading","hasWarning","fileType","getFileTypeFromExtension","imageUrl","URL","createObjectURL","cellRef","useRef","exists","useExistsHighlight","handleDisappearFocus","cellElement","current","focusElement","getPreviousSibling","querySelector","focus","e","warn","onDeleteHandler","createElement","className","classnames","ref","getIcon","getTitle","icon","TrashIcon","variant","icon_position","disabled","getWarning","ExclamationIcon","iconFileType","mimeParts","type","split","text","name","href","top","stretch","_default","internalFiles","useUpload","updateExists","React","useState","timerRef","clearTimers","clearTimeout","useEffect","some","_ref2","f","size","setTimeout"],"sources":["../../../../src/components/upload/UploadFileListCell.tsx"],"sourcesContent":["import React, { useRef } from 'react'\nimport classnames from 'classnames'\n\n// Components\nimport Button from '../button/Button'\nimport Icon from '../../components/Icon'\nimport FormStatus from '../../components/FormStatus'\nimport ProgressIndicator from '../../components/progress-indicator'\n\n// Icons\nimport {\n trash as TrashIcon,\n exclamation_medium as ExclamationIcon,\n file_png_medium as png,\n file_jpg_medium as jpg,\n file_word_medium as doc,\n file_pdf_medium as pdf,\n file_xls_medium as xls,\n file_ppt_medium as ppt,\n file_csv_medium as csv,\n file_txt_medium as txt,\n file_xml_medium as xml,\n file_medium as file,\n} from '../../icons'\nimport { UploadFile, UploadFileNative } from './types'\n\n// Shared\nimport { getPreviousSibling, warn } from '../../shared/component-helper'\nimport useUpload from './useUpload'\nimport { getFileTypeFromExtension } from './UploadVerify'\nimport UploadFileLink from './UploadFileListLink'\n\n// Will be deprecated - and then default to only showing the file icon,\n// and not file icon per file extension type\nexport const fileExtensionImages = {\n png,\n jpg,\n pdf,\n doc,\n docx: doc,\n odt: doc,\n xls,\n ppt,\n csv,\n txt,\n xml,\n file,\n}\n\nexport type UploadFileListCellProps = {\n id: string\n\n /**\n * Uploaded file\n */\n uploadFile: UploadFile | UploadFileNative\n\n /**\n * Calls onDelete when clicking the delete button\n */\n onDelete: () => void\n\n /**\n * Calls onClick when clicking the file name\n */\n onClick?: () => void\n\n /**\n * Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window.\n * Default: false\n */\n download?: boolean\n\n /**\n * Text\n */\n loadingText: React.ReactNode\n deleteButtonText: React.ReactNode\n}\n\nconst UploadFileListCell = ({\n id,\n uploadFile,\n onDelete,\n onClick,\n loadingText,\n deleteButtonText,\n download,\n}: UploadFileListCellProps) => {\n const { file, errorMessage, isLoading } = uploadFile\n const hasWarning = errorMessage != null\n\n const fileType = getFileTypeFromExtension(file)\n\n const imageUrl = URL.createObjectURL(file)\n const cellRef = useRef<HTMLLIElement>()\n const exists = useExistsHighlight(id, file)\n\n const handleDisappearFocus = () => {\n try {\n const cellElement = cellRef.current\n const focusElement = getPreviousSibling(\n '.dnb-upload',\n cellElement\n ).querySelector(\n '.dnb-upload__file-input-button'\n ) as HTMLButtonElement\n focusElement.focus()\n } catch (e) {\n warn(e)\n }\n }\n\n const onDeleteHandler = () => {\n handleDisappearFocus()\n\n onDelete()\n }\n\n return (\n <li\n className={classnames(\n 'dnb-upload__file-cell',\n hasWarning && 'dnb-upload__file-cell--warning',\n exists && 'dnb-upload__file-cell--highlight'\n )}\n ref={cellRef}\n >\n <div className=\"dnb-upload__file-cell__content\">\n <div className=\"dnb-upload__file-cell__content__left\">\n {getIcon()}\n {getTitle()}\n </div>\n <div>\n <Button\n icon={TrashIcon}\n variant=\"tertiary\"\n onClick={onDeleteHandler}\n icon_position=\"left\"\n disabled={isLoading}\n >\n {deleteButtonText}\n </Button>\n </div>\n </div>\n\n {getWarning()}\n </li>\n )\n\n function getIcon() {\n if (isLoading) {\n return <ProgressIndicator />\n }\n\n if (hasWarning) return <Icon icon={ExclamationIcon} />\n\n let iconFileType = fileType\n\n if (!iconFileType) {\n const mimeParts = file.type.split('/')\n iconFileType =\n fileExtensionImages[mimeParts[0]] ||\n fileExtensionImages[mimeParts[1]]\n }\n\n if (\n !Object.prototype.hasOwnProperty.call(\n fileExtensionImages,\n iconFileType\n )\n ) {\n iconFileType = 'file'\n }\n\n return <Icon icon={fileExtensionImages[iconFileType]} />\n }\n\n function getTitle() {\n return isLoading ? (\n <div\n className={classnames(\n 'dnb-upload__file-cell__text-container',\n 'dnb-upload__file-cell__text-container--loading'\n )}\n >\n {loadingText}\n </div>\n ) : (\n <div className=\"dnb-upload__file-cell__text-container\">\n <UploadFileLink\n text={file.name}\n href={imageUrl}\n download={download}\n onClick={onClick}\n />\n </div>\n )\n }\n\n function getWarning() {\n return hasWarning ? (\n <FormStatus top=\"small\" text={errorMessage} stretch />\n ) : null\n }\n}\n\nexport default UploadFileListCell\n\nfunction useExistsHighlight(id: string, file: File) {\n const { internalFiles } = useUpload(id)\n const [exists, updateExists] = React.useState(false)\n const timerRef = React.useRef<NodeJS.Timer>()\n\n const clearTimers = () => {\n clearTimeout(timerRef.current)\n }\n\n React.useEffect(() => {\n const exists = internalFiles.some(({ exists, file: f }) => {\n return exists && f.name === file.name && f.size === file.size\n })\n\n if (exists) {\n updateExists(true)\n clearTimers()\n timerRef.current = setTimeout(() => updateExists(false), 1500) // transition-duration in CSS\n }\n\n return clearTimers\n }, [file, internalFiles])\n\n return exists\n}\n"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { SpacingProps } from '../space/types';
2
+ export type UploadFileLinkProps = UploadFileAnchorProps & UploadFileButtonProps;
3
+ export declare const UploadFileLink: (props: UploadFileLinkProps) => import("react/jsx-runtime").JSX.Element;
4
+ export default UploadFileLink;
5
+ type UploadFileButtonProps = {
6
+ text: string;
7
+ onClick?: () => void;
8
+ } & SpacingProps;
9
+ type UploadFileAnchorProps = {
10
+ text: string;
11
+ href: string;
12
+ download?: boolean;
13
+ } & SpacingProps;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.UploadFileLink = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _Anchor = _interopRequireDefault(require("../../components/Anchor"));
9
+ var _Button = _interopRequireDefault(require("../button/Button"));
10
+ var _SpacingUtils = require("../space/SpacingUtils");
11
+ var _classnames = _interopRequireDefault(require("classnames"));
12
+ const _excluded = ["onClick", "text", "href", "download"];
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
15
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
16
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
17
+ const UploadFileLink = props => {
18
+ const {
19
+ onClick,
20
+ text,
21
+ href,
22
+ download
23
+ } = props,
24
+ rest = _objectWithoutProperties(props, _excluded);
25
+ if (onClick) return _react.default.createElement(UploadFileButton, _extends({
26
+ text: text,
27
+ onClick: onClick
28
+ }, rest));
29
+ return _react.default.createElement(UploadFileAnchor, _extends({
30
+ text: text,
31
+ href: href,
32
+ download: download
33
+ }, rest));
34
+ };
35
+ exports.UploadFileLink = UploadFileLink;
36
+ var _default = UploadFileLink;
37
+ exports.default = _default;
38
+ const UploadFileButton = props => {
39
+ const {
40
+ text,
41
+ onClick
42
+ } = props;
43
+ const spacingClasses = (0, _SpacingUtils.createSpacingClasses)(props);
44
+ return _react.default.createElement(_Button.default, {
45
+ icon: false,
46
+ variant: "tertiary",
47
+ onClick: onClick,
48
+ className: (0, _classnames.default)(spacingClasses)
49
+ }, text);
50
+ };
51
+ const UploadFileAnchor = props => {
52
+ const {
53
+ text,
54
+ href,
55
+ download
56
+ } = props;
57
+ const spacingClasses = (0, _SpacingUtils.createSpacingClasses)(props);
58
+ return _react.default.createElement(_Anchor.default, {
59
+ target: "_blank",
60
+ href: href,
61
+ download: download ? text : null,
62
+ className: (0, _classnames.default)('dnb-anchor--no-launch-icon', spacingClasses),
63
+ rel: "noopener noreferrer"
64
+ }, text);
65
+ };
66
+ //# sourceMappingURL=UploadFileListLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadFileListLink.js","names":["_react","_interopRequireDefault","require","_Anchor","_Button","_SpacingUtils","_classnames","_excluded","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","keys","UploadFileLink","props","onClick","text","href","download","rest","createElement","UploadFileButton","UploadFileAnchor","exports","_default","spacingClasses","createSpacingClasses","icon","variant","className","classNames","rel"],"sources":["../../../../src/components/upload/UploadFileListLink.tsx"],"sourcesContent":["import React from 'react'\n\nimport Anchor from '../../components/Anchor'\nimport Button from '../button/Button'\nimport { SpacingProps } from '../space/types'\nimport { createSpacingClasses } from '../space/SpacingUtils'\nimport classNames from 'classnames'\n\nexport type UploadFileLinkProps = UploadFileAnchorProps &\n UploadFileButtonProps\n\nexport const UploadFileLink = (props: UploadFileLinkProps) => {\n const { onClick, text, href, download, ...rest } = props\n if (onClick)\n return <UploadFileButton text={text} onClick={onClick} {...rest} />\n return (\n <UploadFileAnchor\n text={text}\n href={href}\n download={download}\n {...rest}\n />\n )\n}\n\nexport default UploadFileLink\n\ntype UploadFileButtonProps = {\n text: string\n onClick?: () => void\n} & SpacingProps\n\nconst UploadFileButton = (props: UploadFileButtonProps) => {\n const { text, onClick } = props\n\n const spacingClasses = createSpacingClasses(props)\n return (\n <Button\n icon={false}\n variant=\"tertiary\"\n onClick={onClick}\n className={classNames(spacingClasses)}\n >\n {text}\n </Button>\n )\n}\n\ntype UploadFileAnchorProps = {\n text: string\n href: string\n download?: boolean\n} & SpacingProps\n\nconst UploadFileAnchor = (props: UploadFileAnchorProps) => {\n const { text, href, download } = props\n\n const spacingClasses = createSpacingClasses(props)\n\n return (\n <Anchor\n target=\"_blank\"\n href={href}\n download={download ? text : null}\n className={classNames('dnb-anchor--no-launch-icon', spacingClasses)}\n rel=\"noopener noreferrer\"\n >\n {text}\n </Anchor>\n )\n}\n"],"mappings":"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"}
@@ -40,9 +40,15 @@ export type UploadProps = {
40
40
  /**
41
41
  * will be called once a file gets deleted by the user. Access the deleted file with `{ fileItem }`.
42
42
  */
43
- onFileDelete?: ({ fileItem }: {
43
+ onFileDelete?: ({ fileItem, }: {
44
44
  fileItem: UploadFile;
45
- }) => void;
45
+ }) => void | Promise<void>;
46
+ /**
47
+ * Will be called once a file gets clicked on by the user. Access the clicked file with `{ fileItem }`.
48
+ */
49
+ onFileClick?: ({ fileItem, }: {
50
+ fileItem: UploadFile;
51
+ }) => void | Promise<void>;
46
52
  /**
47
53
  * Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window.
48
54
  * Default: false
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/components/upload/types.ts"],"sourcesContent":["import React from 'react'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport type { LocaleProps, SpacingProps } from '../../shared/types'\n\nexport type UploadAcceptedFileTypes = string[]\n\nexport type UploadAcceptedFileTypesWithFileMaxSize =\n UploadAcceptedFileTypeObject[]\n\nexport type UploadAcceptedFileTypeObject = {\n fileType: string\n fileMaxSize?: number | false\n}\n\nexport type UploadProps = {\n /**\n * unique id used with the useUpload hook to manage the files\n */\n id: string\n\n /**\n * list of accepted file types.\n */\n acceptedFileTypes:\n | UploadAcceptedFileTypes\n | UploadAcceptedFileTypesWithFileMaxSize\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /**\n * Defines the amount of files the user can select and upload\n * Default: 100\n */\n filesAmountLimit?: number\n\n /**\n * Defines the max file size of each file in MB. Use either `0` or `false` to disable.\n * Default: 5 MB\n */\n fileMaxSize?: number | false\n\n /**\n * will be called on `files` changes made by the user. Access the files with `{ files }`.\n */\n onChange?: ({ files }: { files: Array<UploadFile> }) => void\n\n /**\n * will be called once a file gets deleted by the user. Access the deleted file with `{ fileItem }`.\n */\n onFileDelete?: ({ fileItem }: { fileItem: UploadFile }) => void\n\n /**\n * Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window.\n * Default: false\n */\n download?: boolean\n\n /**\n * Custom text properties\n */\n title?: React.ReactNode\n text?: React.ReactNode\n fileTypeTableCaption?: React.ReactNode\n fileTypeDescription?: React.ReactNode\n fileSizeDescription?: React.ReactNode\n fileAmountDescription?: React.ReactNode\n fileSizeContent?: React.ReactNode\n buttonText?: React.ReactNode\n errorLargeFile?: React.ReactNode\n errorUnsupportedFile?: React.ReactNode\n errorAmountLimit?: React.ReactNode\n loadingText?: React.ReactNode\n deleteButton?: React.ReactNode\n fileListAriaLabel?: string\n children?: React.ReactNode\n}\n\nexport type UploadAllProps = UploadProps &\n SpacingProps &\n LocaleProps &\n Omit<React.HTMLProps<HTMLElement>, 'onChange' | 'title'>\n\nexport type UploadContextProps = {\n id?: string\n onInputUpload: (files: Array<UploadFileNative>) => void\n} & Partial<UploadProps>\n\nexport type UploadFile = {\n file: File\n id: string\n exists: boolean\n isLoading?: boolean\n errorMessage?: React.ReactNode\n}\n\nexport type UploadFileNative = Omit<UploadFile, 'id' | 'exists'> &\n Partial<Pick<UploadFile, 'id' | 'exists'>>\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/components/upload/types.ts"],"sourcesContent":["import React from 'react'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport type { LocaleProps, SpacingProps } from '../../shared/types'\n\nexport type UploadAcceptedFileTypes = string[]\n\nexport type UploadAcceptedFileTypesWithFileMaxSize =\n UploadAcceptedFileTypeObject[]\n\nexport type UploadAcceptedFileTypeObject = {\n fileType: string\n fileMaxSize?: number | false\n}\n\nexport type UploadProps = {\n /**\n * unique id used with the useUpload hook to manage the files\n */\n id: string\n\n /**\n * list of accepted file types.\n */\n acceptedFileTypes:\n | UploadAcceptedFileTypes\n | UploadAcceptedFileTypesWithFileMaxSize\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /**\n * Defines the amount of files the user can select and upload\n * Default: 100\n */\n filesAmountLimit?: number\n\n /**\n * Defines the max file size of each file in MB. Use either `0` or `false` to disable.\n * Default: 5 MB\n */\n fileMaxSize?: number | false\n\n /**\n * will be called on `files` changes made by the user. Access the files with `{ files }`.\n */\n onChange?: ({ files }: { files: Array<UploadFile> }) => void\n\n /**\n * will be called once a file gets deleted by the user. Access the deleted file with `{ fileItem }`.\n */\n onFileDelete?: ({\n fileItem,\n }: {\n fileItem: UploadFile\n }) => void | Promise<void>\n\n /**\n * Will be called once a file gets clicked on by the user. Access the clicked file with `{ fileItem }`.\n */\n onFileClick?: ({\n fileItem,\n }: {\n fileItem: UploadFile\n }) => void | Promise<void>\n\n /**\n * Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window.\n * Default: false\n */\n download?: boolean\n\n /**\n * Custom text properties\n */\n title?: React.ReactNode\n text?: React.ReactNode\n fileTypeTableCaption?: React.ReactNode\n fileTypeDescription?: React.ReactNode\n fileSizeDescription?: React.ReactNode\n fileAmountDescription?: React.ReactNode\n fileSizeContent?: React.ReactNode\n buttonText?: React.ReactNode\n errorLargeFile?: React.ReactNode\n errorUnsupportedFile?: React.ReactNode\n errorAmountLimit?: React.ReactNode\n loadingText?: React.ReactNode\n deleteButton?: React.ReactNode\n fileListAriaLabel?: string\n children?: React.ReactNode\n}\n\nexport type UploadAllProps = UploadProps &\n SpacingProps &\n LocaleProps &\n Omit<React.HTMLProps<HTMLElement>, 'onChange' | 'title'>\n\nexport type UploadContextProps = {\n id?: string\n onInputUpload: (files: Array<UploadFileNative>) => void\n} & Partial<UploadProps>\n\nexport type UploadFile = {\n file: File\n id: string\n exists: boolean\n isLoading?: boolean\n errorMessage?: React.ReactNode\n}\n\nexport type UploadFileNative = Omit<UploadFile, 'id' | 'exists'> &\n Partial<Pick<UploadFile, 'id' | 'exists'>>\n"],"mappings":""}
@@ -376,7 +376,7 @@ function Provider(props) {
376
376
  isEmptyDataRef.current = true;
377
377
  internalDataRef.current = (_ref4 = typeof emptyData === 'function' ? emptyData(internalDataRef.current) : emptyData) !== null && _ref4 !== void 0 ? _ref4 : Array.isArray(internalDataRef.current) ? [] : clearedData;
378
378
  if (id) {
379
- setSharedData === null || setSharedData === void 0 ? void 0 : setSharedData(internalDataRef.current);
379
+ setSharedData(internalDataRef.current);
380
380
  }
381
381
  forceUpdate();
382
382
  onClear === null || onClear === void 0 ? void 0 : onClear();
@@ -385,16 +385,17 @@ function Provider(props) {
385
385
  });
386
386
  }, [emptyData, id, onClear, setSharedData]);
387
387
  useLayoutEffect(() => {
388
- if (id && initialData && !sharedData.data) {
389
- extendSharedData === null || extendSharedData === void 0 ? void 0 : extendSharedData(initialData);
388
+ if (id) {
389
+ if (initialData && !sharedData.data) {
390
+ extendSharedData(initialData, {
391
+ preventSyncOfSameInstance: true
392
+ });
393
+ }
390
394
  }
391
395
  }, [id, initialData, extendSharedData, sharedData.data]);
392
- (0, _react.useMemo)(() => {
393
- executeAjvValidator();
394
- }, [internalDataRef.current]);
395
396
  useLayoutEffect(() => {
396
397
  if (id) {
397
- extendAttachment === null || extendAttachment === void 0 ? void 0 : extendAttachment({
398
+ extendAttachment({
398
399
  visibleDataHandler,
399
400
  filterDataHandler,
400
401
  hasErrors,
@@ -403,12 +404,17 @@ function Provider(props) {
403
404
  setSubmitState,
404
405
  clearData,
405
406
  fieldConnectionsRef
407
+ }, {
408
+ preventSyncOfSameInstance: true
406
409
  });
407
410
  if (filterSubmitData) {
408
411
  rerenderUseDataHook === null || rerenderUseDataHook === void 0 ? void 0 : rerenderUseDataHook();
409
412
  }
410
413
  }
411
- }, [extendAttachment, visibleDataHandler, filterDataHandler, filterSubmitData, hasErrors, hasFieldError, id, rerenderUseDataHook, setShowAllErrors, setSubmitState, clearData]);
414
+ }, [extendAttachment, visibleDataHandler, filterDataHandler, filterSubmitData, hasErrors, hasFieldError, id, rerenderUseDataHook, setShowAllErrors, setSubmitState, clearData, extendSharedData]);
415
+ (0, _react.useMemo)(() => {
416
+ executeAjvValidator();
417
+ }, [internalDataRef.current]);
412
418
  const storeInSession = (0, _react.useMemo)(() => {
413
419
  return (0, _helpers.debounce)(() => {
414
420
  var _window$sessionStorag2;
@@ -422,7 +428,9 @@ function Provider(props) {
422
428
  }
423
429
  internalDataRef.current = newData;
424
430
  if (id) {
425
- extendSharedData === null || extendSharedData === void 0 ? void 0 : extendSharedData(newData);
431
+ extendSharedData(newData, {
432
+ preventSyncOfSameInstance: true
433
+ });
426
434
  if (filterSubmitData) {
427
435
  rerenderUseDataHook === null || rerenderUseDataHook === void 0 ? void 0 : rerenderUseDataHook();
428
436
  }