@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,14 +1,23 @@
1
1
  "use strict";
2
+ "use client";
2
3
 
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
8
9
  var _UploadContext = require("./UploadContext");
9
10
  var _UploadFileListCell = _interopRequireDefault(require("./UploadFileListCell"));
10
11
  var _useUpload = _interopRequireDefault(require("./useUpload"));
12
+ var _isAsync = require("../../shared/helpers/isAsync");
11
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
17
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
20
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
12
21
  function UploadFileList() {
13
22
  const context = _react.default.useContext(_UploadContext.UploadContext);
14
23
  const {
@@ -18,6 +27,7 @@ function UploadFileList() {
18
27
  download,
19
28
  loadingText,
20
29
  onFileDelete,
30
+ onFileClick,
21
31
  onChange
22
32
  } = context;
23
33
  const {
@@ -25,26 +35,83 @@ function UploadFileList() {
25
35
  setFiles,
26
36
  setInternalFiles
27
37
  } = (0, _useUpload.default)(id);
38
+ const filesRef = (0, _react.useRef)(null);
39
+ (0, _react.useEffect)(() => {
40
+ filesRef.current = files;
41
+ }, [files]);
28
42
  if (files === null || files.length < 1) {
29
43
  return null;
30
44
  }
45
+ const removeFile = fileToBeRemoved => {
46
+ return filesRef.current.filter(fileListElement => fileListElement.file != fileToBeRemoved.file);
47
+ };
48
+ const updateFile = (fileToBeUpdated, props) => {
49
+ return filesRef.current.map(fileListElement => fileListElement.id === fileToBeUpdated.id ? _objectSpread(_objectSpread({}, fileListElement), props) : fileListElement);
50
+ };
51
+ const updateFiles = updatedFiles => {
52
+ setFiles(updatedFiles);
53
+ setInternalFiles(updatedFiles);
54
+ if (typeof onChange === 'function') {
55
+ onChange({
56
+ files: updatedFiles
57
+ });
58
+ }
59
+ };
60
+ const handleDeleteAsync = async uploadFile => {
61
+ updateFiles(updateFile(uploadFile, {
62
+ isLoading: true,
63
+ errorMessage: null
64
+ }));
65
+ try {
66
+ await onFileDelete({
67
+ fileItem: uploadFile
68
+ });
69
+ updateFiles(removeFile(uploadFile));
70
+ } catch (error) {
71
+ updateFiles(updateFile(uploadFile, {
72
+ isLoading: false,
73
+ errorMessage: error.message
74
+ }));
75
+ }
76
+ };
77
+ const handleFileClickAsync = async uploadFile => {
78
+ updateFiles(updateFile(uploadFile, {
79
+ isLoading: true
80
+ }));
81
+ await onFileClick({
82
+ fileItem: uploadFile
83
+ });
84
+ updateFiles(updateFile(uploadFile, {
85
+ isLoading: false
86
+ }));
87
+ };
31
88
  return _react.default.createElement("ul", {
32
89
  className: "dnb-upload__file-list",
33
90
  "aria-label": fileListAriaLabel
34
91
  }, files.map((uploadFile, index) => {
35
- const onDeleteHandler = () => {
92
+ const onDeleteHandler = async () => {
36
93
  if (typeof onFileDelete === 'function') {
37
- onFileDelete({
38
- fileItem: uploadFile
39
- });
94
+ if ((0, _isAsync.isAsync)(onFileDelete)) {
95
+ handleDeleteAsync(uploadFile);
96
+ } else {
97
+ onFileDelete({
98
+ fileItem: uploadFile
99
+ });
100
+ updateFiles(removeFile(uploadFile));
101
+ }
102
+ } else {
103
+ updateFiles(removeFile(uploadFile));
40
104
  }
41
- const cleanedFiles = files.filter(fileListElement => fileListElement.file != uploadFile.file);
42
- setFiles(cleanedFiles);
43
- setInternalFiles(cleanedFiles);
44
- if (typeof onChange === 'function') {
45
- onChange({
46
- files: cleanedFiles
47
- });
105
+ };
106
+ const onFileClickHandler = async () => {
107
+ if (typeof onFileClick === 'function') {
108
+ if ((0, _isAsync.isAsync)(onFileClick)) {
109
+ handleFileClickAsync(uploadFile);
110
+ } else {
111
+ onFileClick({
112
+ fileItem: uploadFile
113
+ });
114
+ }
48
115
  }
49
116
  };
50
117
  return _react.default.createElement(_UploadFileListCell.default, {
@@ -52,6 +119,7 @@ function UploadFileList() {
52
119
  id: id,
53
120
  uploadFile: uploadFile,
54
121
  onDelete: onDeleteHandler,
122
+ onClick: onFileClick && onFileClickHandler,
55
123
  deleteButtonText: deleteButton,
56
124
  loadingText: loadingText,
57
125
  download: download
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFileList.js","names":["_react","_interopRequireDefault","require","_UploadContext","_UploadFileListCell","_useUpload","obj","__esModule","default","UploadFileList","context","React","useContext","UploadContext","id","fileListAriaLabel","deleteButton","download","loadingText","onFileDelete","onChange","files","setFiles","setInternalFiles","useUpload","length","createElement","className","map","uploadFile","index","onDeleteHandler","fileItem","cleanedFiles","filter","fileListElement","file","key","onDelete","deleteButtonText","_default","exports"],"sources":["../../../../src/components/upload/UploadFileList.tsx"],"sourcesContent":["import React from 'react'\nimport { UploadFile } from './types'\nimport { UploadContext } from './UploadContext'\nimport UploadFileListCell from './UploadFileListCell'\nimport useUpload from './useUpload'\n\nfunction UploadFileList() {\n const context = React.useContext(UploadContext)\n\n const {\n id,\n fileListAriaLabel,\n deleteButton,\n download,\n loadingText,\n onFileDelete,\n onChange,\n } = context\n\n const { files, setFiles, setInternalFiles } = useUpload(id)\n\n if (files === null || files.length < 1) {\n return null\n }\n\n return (\n <ul className=\"dnb-upload__file-list\" aria-label={fileListAriaLabel}>\n {files.map((uploadFile: UploadFile, index: number) => {\n const onDeleteHandler = () => {\n if (typeof onFileDelete === 'function') {\n onFileDelete({ fileItem: uploadFile })\n }\n\n const cleanedFiles = files.filter(\n (fileListElement) => fileListElement.file != uploadFile.file\n )\n\n setFiles(cleanedFiles)\n setInternalFiles(cleanedFiles)\n\n if (typeof onChange === 'function') {\n onChange({ files: cleanedFiles })\n }\n }\n\n return (\n <UploadFileListCell\n key={index}\n id={id}\n uploadFile={uploadFile}\n onDelete={onDeleteHandler}\n deleteButtonText={deleteButton}\n loadingText={loadingText}\n download={download}\n />\n )\n })}\n </ul>\n )\n}\n\nexport default UploadFileList\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAAmC,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEnC,SAASG,cAAcA,CAAA,EAAG;EACxB,MAAMC,OAAO,GAAGC,cAAK,CAACC,UAAU,CAACC,4BAAa,CAAC;EAE/C,MAAM;IACJC,EAAE;IACFC,iBAAiB;IACjBC,YAAY;IACZC,QAAQ;IACRC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAGV,OAAO;EAEX,MAAM;IAAEW,KAAK;IAAEC,QAAQ;IAAEC;EAAiB,CAAC,GAAG,IAAAC,kBAAS,EAACV,EAAE,CAAC;EAE3D,IAAIO,KAAK,KAAK,IAAI,IAAIA,KAAK,CAACI,MAAM,GAAG,CAAC,EAAE;IACtC,OAAO,IAAI;EACb;EAEA,OACEzB,MAAA,CAAAQ,OAAA,CAAAkB,aAAA;IAAIC,SAAS,EAAC,uBAAuB;IAAC,cAAYZ;EAAkB,GACjEM,KAAK,CAACO,GAAG,CAAC,CAACC,UAAsB,EAAEC,KAAa,KAAK;IACpD,MAAMC,eAAe,GAAGA,CAAA,KAAM;MAC5B,IAAI,OAAOZ,YAAY,KAAK,UAAU,EAAE;QACtCA,YAAY,CAAC;UAAEa,QAAQ,EAAEH;QAAW,CAAC,CAAC;MACxC;MAEA,MAAMI,YAAY,GAAGZ,KAAK,CAACa,MAAM,CAC9BC,eAAe,IAAKA,eAAe,CAACC,IAAI,IAAIP,UAAU,CAACO,IAC1D,CAAC;MAEDd,QAAQ,CAACW,YAAY,CAAC;MACtBV,gBAAgB,CAACU,YAAY,CAAC;MAE9B,IAAI,OAAOb,QAAQ,KAAK,UAAU,EAAE;QAClCA,QAAQ,CAAC;UAAEC,KAAK,EAAEY;QAAa,CAAC,CAAC;MACnC;IACF,CAAC;IAED,OACEjC,MAAA,CAAAQ,OAAA,CAAAkB,aAAA,CAACtB,mBAAA,CAAAI,OAAkB;MACjB6B,GAAG,EAAEP,KAAM;MACXhB,EAAE,EAAEA,EAAG;MACPe,UAAU,EAAEA,UAAW;MACvBS,QAAQ,EAAEP,eAAgB;MAC1BQ,gBAAgB,EAAEvB,YAAa;MAC/BE,WAAW,EAAEA,WAAY;MACzBD,QAAQ,EAAEA;IAAS,CACpB,CAAC;EAEN,CAAC,CACC,CAAC;AAET;AAAC,IAAAuB,QAAA,GAEc/B,cAAc;AAAAgC,OAAA,CAAAjC,OAAA,GAAAgC,QAAA"}
1
+ {"version":3,"file":"UploadFileList.js","names":["_react","_interopRequireWildcard","require","_UploadContext","_UploadFileListCell","_interopRequireDefault","_useUpload","_isAsync","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","UploadFileList","context","React","useContext","UploadContext","id","fileListAriaLabel","deleteButton","download","loadingText","onFileDelete","onFileClick","onChange","files","setFiles","setInternalFiles","useUpload","filesRef","useRef","useEffect","current","removeFile","fileToBeRemoved","fileListElement","file","updateFile","fileToBeUpdated","props","map","updateFiles","updatedFiles","handleDeleteAsync","uploadFile","isLoading","errorMessage","fileItem","error","message","handleFileClickAsync","createElement","className","index","onDeleteHandler","isAsync","onFileClickHandler","onDelete","onClick","deleteButtonText","_default","exports"],"sources":["../../../../src/components/upload/UploadFileList.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react'\nimport { UploadFile } from './types'\nimport { UploadContext } from './UploadContext'\nimport UploadFileListCell from './UploadFileListCell'\nimport useUpload from './useUpload'\nimport { isAsync } from '../../shared/helpers/isAsync'\n\nfunction UploadFileList() {\n const context = React.useContext(UploadContext)\n\n const {\n id,\n fileListAriaLabel,\n deleteButton,\n download,\n loadingText,\n onFileDelete,\n onFileClick,\n onChange,\n } = context\n\n const { files, setFiles, setInternalFiles } = useUpload(id)\n\n const filesRef = useRef(null)\n\n useEffect(() => {\n filesRef.current = files\n }, [files])\n\n if (files === null || files.length < 1) {\n return null\n }\n\n const removeFile = (fileToBeRemoved: UploadFile) => {\n return filesRef.current.filter(\n (fileListElement) => fileListElement.file != fileToBeRemoved.file\n )\n }\n\n const updateFile = (\n fileToBeUpdated: UploadFile,\n props: Partial<UploadFile>\n ) => {\n return filesRef.current.map((fileListElement) =>\n fileListElement.id === fileToBeUpdated.id\n ? {\n ...fileListElement,\n ...props,\n }\n : fileListElement\n )\n }\n\n const updateFiles = (updatedFiles: UploadFile[]) => {\n setFiles(updatedFiles)\n setInternalFiles(updatedFiles)\n\n if (typeof onChange === 'function') {\n onChange({ files: updatedFiles })\n }\n }\n\n const handleDeleteAsync = async (uploadFile: UploadFile) => {\n updateFiles(\n updateFile(uploadFile, {\n isLoading: true,\n errorMessage: null,\n })\n )\n\n try {\n await onFileDelete({ fileItem: uploadFile })\n updateFiles(removeFile(uploadFile))\n } catch (error) {\n updateFiles(\n updateFile(uploadFile, {\n isLoading: false,\n errorMessage: error.message,\n })\n )\n }\n }\n\n const handleFileClickAsync = async (uploadFile: UploadFile) => {\n updateFiles(\n updateFile(uploadFile, {\n isLoading: true,\n })\n )\n\n await onFileClick({ fileItem: uploadFile })\n updateFiles(\n updateFile(uploadFile, {\n isLoading: false,\n })\n )\n }\n\n return (\n <ul className=\"dnb-upload__file-list\" aria-label={fileListAriaLabel}>\n {files.map((uploadFile: UploadFile, index: number) => {\n const onDeleteHandler = async () => {\n if (typeof onFileDelete === 'function') {\n if (isAsync(onFileDelete)) {\n handleDeleteAsync(uploadFile)\n } else {\n onFileDelete({ fileItem: uploadFile })\n updateFiles(removeFile(uploadFile))\n }\n } else {\n updateFiles(removeFile(uploadFile))\n }\n }\n\n const onFileClickHandler = async () => {\n if (typeof onFileClick === 'function') {\n if (isAsync(onFileClick)) {\n handleFileClickAsync(uploadFile)\n } else {\n onFileClick({ fileItem: uploadFile })\n }\n }\n }\n\n return (\n <UploadFileListCell\n key={index}\n id={id}\n uploadFile={uploadFile}\n onDelete={onDeleteHandler}\n onClick={onFileClick && onFileClickHandler}\n deleteButtonText={deleteButton}\n loadingText={loadingText}\n download={download}\n />\n )\n })}\n </ul>\n )\n}\n\nexport default UploadFileList\n"],"mappings":"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"}
@@ -24,6 +24,10 @@ export type UploadFileListCellProps = {
24
24
  * Calls onDelete when clicking the delete button
25
25
  */
26
26
  onDelete: () => void;
27
+ /**
28
+ * Calls onClick when clicking the file name
29
+ */
30
+ onClick?: () => void;
27
31
  /**
28
32
  * Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window.
29
33
  * Default: false
@@ -35,5 +39,5 @@ export type UploadFileListCellProps = {
35
39
  loadingText: React.ReactNode;
36
40
  deleteButtonText: React.ReactNode;
37
41
  };
38
- declare const UploadFileListCell: ({ id, uploadFile, onDelete, loadingText, deleteButtonText, download, }: UploadFileListCellProps) => import("react/jsx-runtime").JSX.Element;
42
+ declare const UploadFileListCell: ({ id, uploadFile, onDelete, onClick, loadingText, deleteButtonText, download, }: UploadFileListCellProps) => import("react/jsx-runtime").JSX.Element;
39
43
  export default UploadFileListCell;
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.fileExtensionImages = exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
- var _Anchor = _interopRequireDefault(require("../../components/Anchor"));
11
10
  var _Button = _interopRequireDefault(require("../button/Button"));
12
11
  var _Icon2 = _interopRequireDefault(require("../../components/Icon"));
13
12
  var _FormStatus2 = _interopRequireDefault(require("../../components/FormStatus"));
@@ -16,6 +15,7 @@ var _icons = require("../../icons");
16
15
  var _componentHelper = require("../../shared/component-helper");
17
16
  var _useUpload = _interopRequireDefault(require("./useUpload"));
18
17
  var _UploadVerify = require("./UploadVerify");
18
+ var _UploadFileListLink = _interopRequireDefault(require("./UploadFileListLink"));
19
19
  var _ProgressIndicator, _Icon;
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -41,6 +41,7 @@ const UploadFileListCell = _ref => {
41
41
  id,
42
42
  uploadFile,
43
43
  onDelete,
44
+ onClick,
44
45
  loadingText,
45
46
  deleteButtonText,
46
47
  download
@@ -79,7 +80,8 @@ const UploadFileListCell = _ref => {
79
80
  icon: _icons.trash,
80
81
  variant: "tertiary",
81
82
  onClick: onDeleteHandler,
82
- icon_position: "left"
83
+ icon_position: "left",
84
+ disabled: isLoading
83
85
  }, deleteButtonText))), getWarning());
84
86
  function getIcon() {
85
87
  if (isLoading) {
@@ -105,13 +107,12 @@ const UploadFileListCell = _ref => {
105
107
  className: "dnb-upload__file-cell__text-container dnb-upload__file-cell__text-container--loading"
106
108
  }, loadingText)) : _react.default.createElement("div", {
107
109
  className: "dnb-upload__file-cell__text-container"
108
- }, _react.default.createElement(_Anchor.default, {
109
- target: "_blank",
110
+ }, _react.default.createElement(_UploadFileListLink.default, {
111
+ text: file.name,
110
112
  href: imageUrl,
111
- download: download ? file.name : null,
112
- className: "dnb-anchor--no-launch-icon dnb-upload__file-cell__title",
113
- rel: "noopener noreferrer"
114
- }, file.name));
113
+ download: download,
114
+ onClick: onClick
115
+ }));
115
116
  }
116
117
  function getWarning() {
117
118
  return hasWarning ? _FormStatus || (_FormStatus = _react.default.createElement(_FormStatus2.default, {
@@ -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","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 >\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
  }