@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
@@ -5,7 +5,7 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
5
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
6
6
  var _UploadInfo, _UploadFileInput, _UploadFileList;
7
7
  const _excluded = ["buttonTextSingular", "textSingular"],
8
- _excluded2 = ["id", "skeleton", "className", "acceptedFileTypes", "filesAmountLimit", "fileMaxSize", "onChange", "onFileDelete", "download", "title", "text", "fileTypeTableCaption", "fileTypeDescription", "fileSizeDescription", "fileAmountDescription", "fileSizeContent", "buttonText", "loadingText", "errorLargeFile", "errorUnsupportedFile", "errorAmountLimit", "deleteButton", "fileListAriaLabel"];
8
+ _excluded2 = ["id", "skeleton", "className", "acceptedFileTypes", "filesAmountLimit", "fileMaxSize", "onChange", "onFileDelete", "onFileClick", "download", "title", "text", "fileTypeTableCaption", "fileTypeDescription", "fileSizeDescription", "fileAmountDescription", "fileSizeContent", "buttonText", "loadingText", "errorLargeFile", "errorUnsupportedFile", "errorAmountLimit", "deleteButton", "fileListAriaLabel"];
9
9
  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; }
10
10
  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; }
11
11
  import React, { useCallback } from 'react';
@@ -46,6 +46,7 @@ const Upload = localProps => {
46
46
  fileMaxSize,
47
47
  onChange,
48
48
  onFileDelete,
49
+ onFileClick,
49
50
  download,
50
51
  title,
51
52
  text,
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.js","names":["React","useCallback","classnames","createSpacingClasses","Provider","Context","extendPropsWithContext","makeUniqueId","UploadFileInput","useUpload","UploadDropzone","UploadContext","defaultProps","verifyFiles","UploadFileList","UploadInfo","Upload","localProps","context","useContext","_context$getTranslati","getTranslation","buttonTextSingular","textSingular","translations","_objectWithoutProperties","_excluded","filesAmountLimit","buttonText","text","extendedProps","skeleton","id","className","acceptedFileTypes","fileMaxSize","onChange","onFileDelete","download","title","fileTypeTableCaption","fileTypeDescription","fileSizeDescription","fileAmountDescription","fileSizeContent","loadingText","errorLargeFile","errorUnsupportedFile","errorAmountLimit","deleteButton","fileListAriaLabel","props","_excluded2","spacingClasses","files","setFiles","setInternalFiles","getExistingFile","onInputUpload","newFiles","mergedFiles","map","fileItem","file","existingFile","exists","Boolean","verifiedFiles","filter","_ref","validFiles","slice","createElement","value","_objectSpread","_extends","_UploadInfo","_UploadFileInput","_UploadFileList","_formElement","_supportsSpacingProps"],"sources":["../../../../src/components/upload/Upload.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport classnames from 'classnames'\n\n// Shared\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport Provider from '../../shared/Provider'\nimport Context from '../../shared/Context'\nimport {\n extendPropsWithContext,\n makeUniqueId,\n} from '../../shared/component-helper'\n\n// Internal\nimport UploadFileInput from './UploadFileInput'\nimport useUpload from './useUpload'\nimport UploadDropzone from './UploadDropzone'\nimport { UploadContext, defaultProps } from './UploadContext'\nimport { verifyFiles } from './UploadVerify'\n\nimport type { UploadFile, UploadAllProps } from './types'\nimport UploadFileList from './UploadFileList'\nimport UploadInfo from './UploadInfo'\n\nexport type * from './types'\nexport { defaultProps }\n\nconst Upload = (localProps: UploadAllProps) => {\n const context = React.useContext(Context)\n\n const { buttonTextSingular, textSingular, ...translations } =\n context.getTranslation(localProps).Upload\n\n if (localProps?.filesAmountLimit === 1) {\n translations.buttonText = buttonTextSingular\n translations.text = textSingular\n }\n\n const extendedProps = extendPropsWithContext(\n localProps,\n defaultProps,\n { skeleton: context?.skeleton },\n translations,\n context.Upload\n )\n\n const {\n id,\n skeleton,\n className,\n acceptedFileTypes,\n filesAmountLimit,\n fileMaxSize,\n onChange,\n onFileDelete, // eslint-disable-line\n download, // eslint-disable-line\n title, // eslint-disable-line\n text, // eslint-disable-line\n fileTypeTableCaption, // eslint-disable-line\n fileTypeDescription, // eslint-disable-line\n fileSizeDescription, // eslint-disable-line\n fileAmountDescription, // eslint-disable-line\n fileSizeContent, // eslint-disable-line\n buttonText, // eslint-disable-line\n loadingText, // eslint-disable-line\n errorLargeFile,\n errorUnsupportedFile,\n errorAmountLimit, // eslint-disable-line\n deleteButton, // eslint-disable-line\n fileListAriaLabel, // eslint-disable-line\n ...props\n } = extendedProps\n\n const spacingClasses = createSpacingClasses(props)\n\n const { files, setFiles, setInternalFiles, getExistingFile } =\n useUpload(id)\n\n const onInputUpload = useCallback(\n (newFiles: Array<UploadFile>) => {\n const mergedFiles = [\n ...files,\n ...newFiles.map((fileItem) => {\n const { file } = fileItem\n\n const existingFile = getExistingFile(file, files)\n\n fileItem.exists = Boolean(existingFile)\n fileItem.id = fileItem.exists ? existingFile.id : makeUniqueId()\n\n return fileItem\n }),\n ]\n\n const verifiedFiles = verifyFiles(\n mergedFiles.filter(({ exists }) => !exists),\n {\n fileMaxSize,\n acceptedFileTypes,\n errorUnsupportedFile,\n errorLargeFile,\n }\n )\n\n const validFiles = [...verifiedFiles].slice(\n 0,\n filesAmountLimit\n ) as Array<UploadFile>\n\n setFiles(validFiles)\n setInternalFiles(mergedFiles)\n\n if (typeof onChange === 'function') {\n onChange({ files: validFiles })\n }\n\n return validFiles\n },\n [\n acceptedFileTypes,\n errorLargeFile,\n errorUnsupportedFile,\n fileMaxSize,\n files,\n filesAmountLimit,\n getExistingFile,\n onChange,\n setFiles,\n setInternalFiles,\n ]\n )\n\n return (\n <UploadContext.Provider\n value={{\n ...extendedProps,\n id,\n onInputUpload,\n }}\n >\n <Provider skeleton={skeleton}>\n <UploadDropzone\n className={classnames('dnb-upload', spacingClasses, className)}\n {...props}\n >\n <UploadInfo />\n\n <UploadFileInput />\n\n <UploadFileList />\n </UploadDropzone>\n </Provider>\n </UploadContext.Provider>\n )\n}\n\nUpload.useUpload = useUpload\n\nUpload._formElement = true\nUpload._supportsSpacingProps = true\n\nexport default Upload\n"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.js","names":["React","useCallback","classnames","createSpacingClasses","Provider","Context","extendPropsWithContext","makeUniqueId","UploadFileInput","useUpload","UploadDropzone","UploadContext","defaultProps","verifyFiles","UploadFileList","UploadInfo","Upload","localProps","context","useContext","_context$getTranslati","getTranslation","buttonTextSingular","textSingular","translations","_objectWithoutProperties","_excluded","filesAmountLimit","buttonText","text","extendedProps","skeleton","id","className","acceptedFileTypes","fileMaxSize","onChange","onFileDelete","onFileClick","download","title","fileTypeTableCaption","fileTypeDescription","fileSizeDescription","fileAmountDescription","fileSizeContent","loadingText","errorLargeFile","errorUnsupportedFile","errorAmountLimit","deleteButton","fileListAriaLabel","props","_excluded2","spacingClasses","files","setFiles","setInternalFiles","getExistingFile","onInputUpload","newFiles","mergedFiles","map","fileItem","file","existingFile","exists","Boolean","verifiedFiles","filter","_ref","validFiles","slice","createElement","value","_objectSpread","_extends","_UploadInfo","_UploadFileInput","_UploadFileList","_formElement","_supportsSpacingProps"],"sources":["../../../../src/components/upload/Upload.tsx"],"sourcesContent":["import React, { useCallback } from 'react'\nimport classnames from 'classnames'\n\n// Shared\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport Provider from '../../shared/Provider'\nimport Context from '../../shared/Context'\nimport {\n extendPropsWithContext,\n makeUniqueId,\n} from '../../shared/component-helper'\n\n// Internal\nimport UploadFileInput from './UploadFileInput'\nimport useUpload from './useUpload'\nimport UploadDropzone from './UploadDropzone'\nimport { UploadContext, defaultProps } from './UploadContext'\nimport { verifyFiles } from './UploadVerify'\n\nimport type { UploadFile, UploadAllProps } from './types'\nimport UploadFileList from './UploadFileList'\nimport UploadInfo from './UploadInfo'\n\nexport type * from './types'\nexport { defaultProps }\n\nconst Upload = (localProps: UploadAllProps) => {\n const context = React.useContext(Context)\n\n const { buttonTextSingular, textSingular, ...translations } =\n context.getTranslation(localProps).Upload\n\n if (localProps?.filesAmountLimit === 1) {\n translations.buttonText = buttonTextSingular\n translations.text = textSingular\n }\n\n const extendedProps = extendPropsWithContext(\n localProps,\n defaultProps,\n { skeleton: context?.skeleton },\n translations,\n context.Upload\n )\n\n const {\n id,\n skeleton,\n className,\n acceptedFileTypes,\n filesAmountLimit,\n fileMaxSize,\n onChange,\n onFileDelete, // eslint-disable-line\n onFileClick, // eslint-disable-line\n download, // eslint-disable-line\n title, // eslint-disable-line\n text, // eslint-disable-line\n fileTypeTableCaption, // eslint-disable-line\n fileTypeDescription, // eslint-disable-line\n fileSizeDescription, // eslint-disable-line\n fileAmountDescription, // eslint-disable-line\n fileSizeContent, // eslint-disable-line\n buttonText, // eslint-disable-line\n loadingText, // eslint-disable-line\n errorLargeFile,\n errorUnsupportedFile,\n errorAmountLimit, // eslint-disable-line\n deleteButton, // eslint-disable-line\n fileListAriaLabel, // eslint-disable-line\n ...props\n } = extendedProps\n\n const spacingClasses = createSpacingClasses(props)\n\n const { files, setFiles, setInternalFiles, getExistingFile } =\n useUpload(id)\n\n const onInputUpload = useCallback(\n (newFiles: Array<UploadFile>) => {\n const mergedFiles = [\n ...files,\n ...newFiles.map((fileItem) => {\n const { file } = fileItem\n\n const existingFile = getExistingFile(file, files)\n\n fileItem.exists = Boolean(existingFile)\n fileItem.id = fileItem.exists ? existingFile.id : makeUniqueId()\n\n return fileItem\n }),\n ]\n\n const verifiedFiles = verifyFiles(\n mergedFiles.filter(({ exists }) => !exists),\n {\n fileMaxSize,\n acceptedFileTypes,\n errorUnsupportedFile,\n errorLargeFile,\n }\n )\n\n const validFiles = [...verifiedFiles].slice(\n 0,\n filesAmountLimit\n ) as Array<UploadFile>\n\n setFiles(validFiles)\n setInternalFiles(mergedFiles)\n\n if (typeof onChange === 'function') {\n onChange({ files: validFiles })\n }\n\n return validFiles\n },\n [\n acceptedFileTypes,\n errorLargeFile,\n errorUnsupportedFile,\n fileMaxSize,\n files,\n filesAmountLimit,\n getExistingFile,\n onChange,\n setFiles,\n setInternalFiles,\n ]\n )\n\n return (\n <UploadContext.Provider\n value={{\n ...extendedProps,\n id,\n onInputUpload,\n }}\n >\n <Provider skeleton={skeleton}>\n <UploadDropzone\n className={classnames('dnb-upload', spacingClasses, className)}\n {...props}\n >\n <UploadInfo />\n\n <UploadFileInput />\n\n <UploadFileList />\n </UploadDropzone>\n </Provider>\n </UploadContext.Provider>\n )\n}\n\nUpload.useUpload = useUpload\n\nUpload._formElement = true\nUpload._supportsSpacingProps = true\n\nexport default Upload\n"],"mappings":"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"}
@@ -62,6 +62,11 @@ export const UploadEvents = {
62
62
  doc: 'Will be called once a file gets deleted by the user. Access the deleted file with `{ fileItem }`.',
63
63
  type: 'function',
64
64
  status: 'optional'
65
+ },
66
+ onFileClick: {
67
+ doc: 'Will be called once a file gets clicked on by the user. Access the clicked file with `{ fileItem }`.',
68
+ type: 'function',
69
+ status: 'optional'
65
70
  }
66
71
  };
67
72
  //# sourceMappingURL=UploadDocs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UploadDocs.js","names":["UploadProperties","acceptedFileTypes","doc","type","status","filesAmountLimit","fileMaxSize","title","text","download","skeleton","AcceptedFileTypeProperties","fileType","UploadEvents","onChange","onFileDelete"],"sources":["../../../../src/components/upload/UploadDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../shared/types'\n\nexport const UploadProperties: PropertiesTableProps = {\n acceptedFileTypes: {\n doc: 'List of accepted file types. Either as string or [AcceptedFileType](/uilib/components/upload/properties/#acceptedfiletype). When providing a list of [AcceptedFileType](/uilib/components/upload/properties/#acceptedfiletype), the accepted file types will be presented in a table(see [example](/uilib/components/upload/demos/#upload-with-file-max-size-based-on-file-type)).',\n type: ['Array<string>', 'Array<AcceptedFileType>'],\n status: 'required',\n },\n filesAmountLimit: {\n doc: 'Defines the amount of files the user can select and upload. Defaults to 100.',\n type: 'number',\n status: 'optional',\n },\n fileMaxSize: {\n doc: 'Defines the max file size of each file in MB. Use either `0` or `false` to disable. Defaults to 5 MB.',\n type: ['number', 'false'],\n status: 'optional',\n },\n title: {\n doc: 'Custom text property. Replaces the default title. Can be disabled using `false`.',\n type: 'string',\n status: 'optional',\n },\n text: {\n doc: 'Custom text property. Replaces the default text. Can be disabled using `false`.',\n type: 'string',\n status: 'optional',\n },\n download: {\n doc: 'Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n skeleton: {\n doc: 'Skeleton should be applied when loading content.',\n type: 'boolean',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n\nexport const AcceptedFileTypeProperties: PropertiesTableProps = {\n fileType: {\n doc: 'The name of the accepted file type.',\n type: 'string',\n status: 'required',\n },\n fileMaxSize: {\n doc: 'Defines the max file size of the given file type in MB. Use either `0` or `false` to disable. If not provided, it defaults to the value of [Uploads](/uilib/components/upload/properties/#properties) `fileMaxSize` which defaults to 5 MB.',\n type: ['number', 'false'],\n status: 'optional',\n },\n}\n\nexport const UploadEvents: PropertiesTableProps = {\n onChange: {\n doc: 'Will be called on `files` changes made by the user. Access the files with `{ files }` (containing each a `fileItem`).',\n type: 'function',\n status: 'optional',\n },\n onFileDelete: {\n doc: 'Will be called once a file gets deleted by the user. Access the deleted file with `{ fileItem }`.',\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,gBAAsC,GAAG;EACpDC,iBAAiB,EAAE;IACjBC,GAAG,EAAE,oXAAoX;IACzXC,IAAI,EAAE,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAClDC,MAAM,EAAE;EACV,CAAC;EACDC,gBAAgB,EAAE;IAChBH,GAAG,EAAE,8EAA8E;IACnFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,WAAW,EAAE;IACXJ,GAAG,EAAE,uGAAuG;IAC5GC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDG,KAAK,EAAE;IACLL,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,IAAI,EAAE;IACJN,GAAG,EAAE,iFAAiF;IACtFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,QAAQ,EAAE;IACRP,GAAG,EAAE,2IAA2I;IAChJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDM,QAAQ,EAAE;IACRR,GAAG,EAAE,kDAAkD;IACvDC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMO,0BAAgD,GAAG;EAC9DC,QAAQ,EAAE;IACRV,GAAG,EAAE,qCAAqC;IAC1CC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,WAAW,EAAE;IACXJ,GAAG,EAAE,6OAA6O;IAClPC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMS,YAAkC,GAAG;EAChDC,QAAQ,EAAE;IACRZ,GAAG,EAAE,uHAAuH;IAC5HC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDW,YAAY,EAAE;IACZb,GAAG,EAAE,mGAAmG;IACxGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC"}
1
+ {"version":3,"file":"UploadDocs.js","names":["UploadProperties","acceptedFileTypes","doc","type","status","filesAmountLimit","fileMaxSize","title","text","download","skeleton","AcceptedFileTypeProperties","fileType","UploadEvents","onChange","onFileDelete","onFileClick"],"sources":["../../../../src/components/upload/UploadDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../shared/types'\n\nexport const UploadProperties: PropertiesTableProps = {\n acceptedFileTypes: {\n doc: 'List of accepted file types. Either as string or [AcceptedFileType](/uilib/components/upload/properties/#acceptedfiletype). When providing a list of [AcceptedFileType](/uilib/components/upload/properties/#acceptedfiletype), the accepted file types will be presented in a table(see [example](/uilib/components/upload/demos/#upload-with-file-max-size-based-on-file-type)).',\n type: ['Array<string>', 'Array<AcceptedFileType>'],\n status: 'required',\n },\n filesAmountLimit: {\n doc: 'Defines the amount of files the user can select and upload. Defaults to 100.',\n type: 'number',\n status: 'optional',\n },\n fileMaxSize: {\n doc: 'Defines the max file size of each file in MB. Use either `0` or `false` to disable. Defaults to 5 MB.',\n type: ['number', 'false'],\n status: 'optional',\n },\n title: {\n doc: 'Custom text property. Replaces the default title. Can be disabled using `false`.',\n type: 'string',\n status: 'optional',\n },\n text: {\n doc: 'Custom text property. Replaces the default text. Can be disabled using `false`.',\n type: 'string',\n status: 'optional',\n },\n download: {\n doc: 'Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window. Defaults to `false`.',\n type: 'boolean',\n status: 'optional',\n },\n skeleton: {\n doc: 'Skeleton should be applied when loading content.',\n type: 'boolean',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: ['string', 'object'],\n status: 'optional',\n },\n}\n\nexport const AcceptedFileTypeProperties: PropertiesTableProps = {\n fileType: {\n doc: 'The name of the accepted file type.',\n type: 'string',\n status: 'required',\n },\n fileMaxSize: {\n doc: 'Defines the max file size of the given file type in MB. Use either `0` or `false` to disable. If not provided, it defaults to the value of [Uploads](/uilib/components/upload/properties/#properties) `fileMaxSize` which defaults to 5 MB.',\n type: ['number', 'false'],\n status: 'optional',\n },\n}\n\nexport const UploadEvents: PropertiesTableProps = {\n onChange: {\n doc: 'Will be called on `files` changes made by the user. Access the files with `{ files }` (containing each a `fileItem`).',\n type: 'function',\n status: 'optional',\n },\n onFileDelete: {\n doc: 'Will be called once a file gets deleted by the user. Access the deleted file with `{ fileItem }`.',\n type: 'function',\n status: 'optional',\n },\n onFileClick: {\n doc: 'Will be called once a file gets clicked on by the user. Access the clicked file with `{ fileItem }`.',\n type: 'function',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,gBAAsC,GAAG;EACpDC,iBAAiB,EAAE;IACjBC,GAAG,EAAE,oXAAoX;IACzXC,IAAI,EAAE,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAClDC,MAAM,EAAE;EACV,CAAC;EACDC,gBAAgB,EAAE;IAChBH,GAAG,EAAE,8EAA8E;IACnFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,WAAW,EAAE;IACXJ,GAAG,EAAE,uGAAuG;IAC5GC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDG,KAAK,EAAE;IACLL,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,IAAI,EAAE;IACJN,GAAG,EAAE,iFAAiF;IACtFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,QAAQ,EAAE;IACRP,GAAG,EAAE,2IAA2I;IAChJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDM,QAAQ,EAAE;IACRR,GAAG,EAAE,kDAAkD;IACvDC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCF,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1BC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMO,0BAAgD,GAAG;EAC9DC,QAAQ,EAAE;IACRV,GAAG,EAAE,qCAAqC;IAC1CC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,WAAW,EAAE;IACXJ,GAAG,EAAE,6OAA6O;IAClPC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMS,YAAkC,GAAG;EAChDC,QAAQ,EAAE;IACRZ,GAAG,EAAE,uHAAuH;IAC5HC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDW,YAAY,EAAE;IACZb,GAAG,EAAE,mGAAmG;IACxGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDY,WAAW,EAAE;IACXd,GAAG,EAAE,sGAAsG;IAC3GC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -1,7 +1,13 @@
1
- import React from 'react';
1
+ "use client";
2
+
3
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ 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; }
5
+ 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; }
6
+ import React, { useEffect, useRef } from 'react';
2
7
  import { UploadContext } from './UploadContext';
3
8
  import UploadFileListCell from './UploadFileListCell';
4
9
  import useUpload from './useUpload';
10
+ import { isAsync } from '../../shared/helpers/isAsync';
5
11
  function UploadFileList() {
6
12
  const context = React.useContext(UploadContext);
7
13
  const {
@@ -11,6 +17,7 @@ function UploadFileList() {
11
17
  download,
12
18
  loadingText,
13
19
  onFileDelete,
20
+ onFileClick,
14
21
  onChange
15
22
  } = context;
16
23
  const {
@@ -18,26 +25,83 @@ function UploadFileList() {
18
25
  setFiles,
19
26
  setInternalFiles
20
27
  } = useUpload(id);
28
+ const filesRef = useRef(null);
29
+ useEffect(() => {
30
+ filesRef.current = files;
31
+ }, [files]);
21
32
  if (files === null || files.length < 1) {
22
33
  return null;
23
34
  }
35
+ const removeFile = fileToBeRemoved => {
36
+ return filesRef.current.filter(fileListElement => fileListElement.file != fileToBeRemoved.file);
37
+ };
38
+ const updateFile = (fileToBeUpdated, props) => {
39
+ return filesRef.current.map(fileListElement => fileListElement.id === fileToBeUpdated.id ? _objectSpread(_objectSpread({}, fileListElement), props) : fileListElement);
40
+ };
41
+ const updateFiles = updatedFiles => {
42
+ setFiles(updatedFiles);
43
+ setInternalFiles(updatedFiles);
44
+ if (typeof onChange === 'function') {
45
+ onChange({
46
+ files: updatedFiles
47
+ });
48
+ }
49
+ };
50
+ const handleDeleteAsync = async uploadFile => {
51
+ updateFiles(updateFile(uploadFile, {
52
+ isLoading: true,
53
+ errorMessage: null
54
+ }));
55
+ try {
56
+ await onFileDelete({
57
+ fileItem: uploadFile
58
+ });
59
+ updateFiles(removeFile(uploadFile));
60
+ } catch (error) {
61
+ updateFiles(updateFile(uploadFile, {
62
+ isLoading: false,
63
+ errorMessage: error.message
64
+ }));
65
+ }
66
+ };
67
+ const handleFileClickAsync = async uploadFile => {
68
+ updateFiles(updateFile(uploadFile, {
69
+ isLoading: true
70
+ }));
71
+ await onFileClick({
72
+ fileItem: uploadFile
73
+ });
74
+ updateFiles(updateFile(uploadFile, {
75
+ isLoading: false
76
+ }));
77
+ };
24
78
  return React.createElement("ul", {
25
79
  className: "dnb-upload__file-list",
26
80
  "aria-label": fileListAriaLabel
27
81
  }, files.map((uploadFile, index) => {
28
- const onDeleteHandler = () => {
82
+ const onDeleteHandler = async () => {
29
83
  if (typeof onFileDelete === 'function') {
30
- onFileDelete({
31
- fileItem: uploadFile
32
- });
84
+ if (isAsync(onFileDelete)) {
85
+ handleDeleteAsync(uploadFile);
86
+ } else {
87
+ onFileDelete({
88
+ fileItem: uploadFile
89
+ });
90
+ updateFiles(removeFile(uploadFile));
91
+ }
92
+ } else {
93
+ updateFiles(removeFile(uploadFile));
33
94
  }
34
- const cleanedFiles = files.filter(fileListElement => fileListElement.file != uploadFile.file);
35
- setFiles(cleanedFiles);
36
- setInternalFiles(cleanedFiles);
37
- if (typeof onChange === 'function') {
38
- onChange({
39
- files: cleanedFiles
40
- });
95
+ };
96
+ const onFileClickHandler = async () => {
97
+ if (typeof onFileClick === 'function') {
98
+ if (isAsync(onFileClick)) {
99
+ handleFileClickAsync(uploadFile);
100
+ } else {
101
+ onFileClick({
102
+ fileItem: uploadFile
103
+ });
104
+ }
41
105
  }
42
106
  };
43
107
  return React.createElement(UploadFileListCell, {
@@ -45,6 +109,7 @@ function UploadFileList() {
45
109
  id: id,
46
110
  uploadFile: uploadFile,
47
111
  onDelete: onDeleteHandler,
112
+ onClick: onFileClick && onFileClickHandler,
48
113
  deleteButtonText: deleteButton,
49
114
  loadingText: loadingText,
50
115
  download: download
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFileList.js","names":["React","UploadContext","UploadFileListCell","useUpload","UploadFileList","context","useContext","id","fileListAriaLabel","deleteButton","download","loadingText","onFileDelete","onChange","files","setFiles","setInternalFiles","length","createElement","className","map","uploadFile","index","onDeleteHandler","fileItem","cleanedFiles","filter","fileListElement","file","key","onDelete","deleteButtonText"],"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,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,OAAOC,kBAAkB,MAAM,sBAAsB;AACrD,OAAOC,SAAS,MAAM,aAAa;AAEnC,SAASC,cAAcA,CAAA,EAAG;EACxB,MAAMC,OAAO,GAAGL,KAAK,CAACM,UAAU,CAACL,aAAa,CAAC;EAE/C,MAAM;IACJM,EAAE;IACFC,iBAAiB;IACjBC,YAAY;IACZC,QAAQ;IACRC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAGR,OAAO;EAEX,MAAM;IAAES,KAAK;IAAEC,QAAQ;IAAEC;EAAiB,CAAC,GAAGb,SAAS,CAACI,EAAE,CAAC;EAE3D,IAAIO,KAAK,KAAK,IAAI,IAAIA,KAAK,CAACG,MAAM,GAAG,CAAC,EAAE;IACtC,OAAO,IAAI;EACb;EAEA,OACEjB,KAAA,CAAAkB,aAAA;IAAIC,SAAS,EAAC,uBAAuB;IAAC,cAAYX;EAAkB,GACjEM,KAAK,CAACM,GAAG,CAAC,CAACC,UAAsB,EAAEC,KAAa,KAAK;IACpD,MAAMC,eAAe,GAAGA,CAAA,KAAM;MAC5B,IAAI,OAAOX,YAAY,KAAK,UAAU,EAAE;QACtCA,YAAY,CAAC;UAAEY,QAAQ,EAAEH;QAAW,CAAC,CAAC;MACxC;MAEA,MAAMI,YAAY,GAAGX,KAAK,CAACY,MAAM,CAC9BC,eAAe,IAAKA,eAAe,CAACC,IAAI,IAAIP,UAAU,CAACO,IAC1D,CAAC;MAEDb,QAAQ,CAACU,YAAY,CAAC;MACtBT,gBAAgB,CAACS,YAAY,CAAC;MAE9B,IAAI,OAAOZ,QAAQ,KAAK,UAAU,EAAE;QAClCA,QAAQ,CAAC;UAAEC,KAAK,EAAEW;QAAa,CAAC,CAAC;MACnC;IACF,CAAC;IAED,OACEzB,KAAA,CAAAkB,aAAA,CAAChB,kBAAkB;MACjB2B,GAAG,EAAEP,KAAM;MACXf,EAAE,EAAEA,EAAG;MACPc,UAAU,EAAEA,UAAW;MACvBS,QAAQ,EAAEP,eAAgB;MAC1BQ,gBAAgB,EAAEtB,YAAa;MAC/BE,WAAW,EAAEA,WAAY;MACzBD,QAAQ,EAAEA;IAAS,CACpB,CAAC;EAEN,CAAC,CACC,CAAC;AAET;AAEA,eAAeN,cAAc"}
1
+ {"version":3,"file":"UploadFileList.js","names":["React","useEffect","useRef","UploadContext","UploadFileListCell","useUpload","isAsync","UploadFileList","context","useContext","id","fileListAriaLabel","deleteButton","download","loadingText","onFileDelete","onFileClick","onChange","files","setFiles","setInternalFiles","filesRef","current","length","removeFile","fileToBeRemoved","filter","fileListElement","file","updateFile","fileToBeUpdated","props","map","_objectSpread","updateFiles","updatedFiles","handleDeleteAsync","uploadFile","isLoading","errorMessage","fileItem","error","message","handleFileClickAsync","createElement","className","index","onDeleteHandler","onFileClickHandler","key","onDelete","onClick","deleteButtonText"],"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;
@@ -3,7 +3,6 @@
3
3
  var _ProgressIndicator, _Icon;
4
4
  import React, { useRef } from 'react';
5
5
  import classnames from 'classnames';
6
- import Anchor from '../../components/Anchor';
7
6
  import Button from '../button/Button';
8
7
  import Icon from '../../components/Icon';
9
8
  import FormStatus from '../../components/FormStatus';
@@ -12,6 +11,7 @@ import { trash as TrashIcon, exclamation_medium as ExclamationIcon, file_png_med
12
11
  import { getPreviousSibling, warn } from '../../shared/component-helper';
13
12
  import useUpload from './useUpload';
14
13
  import { getFileTypeFromExtension } from './UploadVerify';
14
+ import UploadFileLink from './UploadFileListLink';
15
15
  export const fileExtensionImages = {
16
16
  png,
17
17
  jpg,
@@ -32,6 +32,7 @@ const UploadFileListCell = _ref => {
32
32
  id,
33
33
  uploadFile,
34
34
  onDelete,
35
+ onClick,
35
36
  loadingText,
36
37
  deleteButtonText,
37
38
  download
@@ -70,7 +71,8 @@ const UploadFileListCell = _ref => {
70
71
  icon: TrashIcon,
71
72
  variant: "tertiary",
72
73
  onClick: onDeleteHandler,
73
- icon_position: "left"
74
+ icon_position: "left",
75
+ disabled: isLoading
74
76
  }, deleteButtonText))), getWarning());
75
77
  function getIcon() {
76
78
  if (isLoading) {
@@ -96,13 +98,12 @@ const UploadFileListCell = _ref => {
96
98
  className: "dnb-upload__file-cell__text-container dnb-upload__file-cell__text-container--loading"
97
99
  }, loadingText)) : React.createElement("div", {
98
100
  className: "dnb-upload__file-cell__text-container"
99
- }, React.createElement(Anchor, {
100
- target: "_blank",
101
+ }, React.createElement(UploadFileLink, {
102
+ text: file.name,
101
103
  href: imageUrl,
102
- download: download ? file.name : null,
103
- className: "dnb-anchor--no-launch-icon dnb-upload__file-cell__title",
104
- rel: "noopener noreferrer"
105
- }, file.name));
104
+ download: download,
105
+ onClick: onClick
106
+ }));
106
107
  }
107
108
  function getWarning() {
108
109
  return hasWarning ? _FormStatus || (_FormStatus = React.createElement(FormStatus, {
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFileListCell.js","names":["React","useRef","classnames","Anchor","Button","Icon","FormStatus","ProgressIndicator","trash","TrashIcon","exclamation_medium","ExclamationIcon","file_png_medium","png","file_jpg_medium","jpg","file_word_medium","doc","file_pdf_medium","pdf","file_xls_medium","xls","file_ppt_medium","ppt","file_csv_medium","csv","file_txt_medium","txt","file_xml_medium","xml","file_medium","file","getPreviousSibling","warn","useUpload","getFileTypeFromExtension","fileExtensionImages","docx","odt","UploadFileListCell","_ref","_div","_FormStatus","id","uploadFile","onDelete","loadingText","deleteButtonText","download","errorMessage","isLoading","hasWarning","fileType","imageUrl","URL","createObjectURL","cellRef","exists","useExistsHighlight","handleDisappearFocus","cellElement","current","focusElement","querySelector","focus","e","onDeleteHandler","createElement","className","ref","getIcon","getTitle","icon","variant","onClick","icon_position","getWarning","_ProgressIndicator","_Icon","iconFileType","mimeParts","type","split","Object","prototype","hasOwnProperty","call","target","href","name","rel","top","text","stretch","internalFiles","updateExists","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","useRef","classnames","Button","Icon","FormStatus","ProgressIndicator","trash","TrashIcon","exclamation_medium","ExclamationIcon","file_png_medium","png","file_jpg_medium","jpg","file_word_medium","doc","file_pdf_medium","pdf","file_xls_medium","xls","file_ppt_medium","ppt","file_csv_medium","csv","file_txt_medium","txt","file_xml_medium","xml","file_medium","file","getPreviousSibling","warn","useUpload","getFileTypeFromExtension","UploadFileLink","fileExtensionImages","docx","odt","UploadFileListCell","_ref","_div","_FormStatus","id","uploadFile","onDelete","onClick","loadingText","deleteButtonText","download","errorMessage","isLoading","hasWarning","fileType","imageUrl","URL","createObjectURL","cellRef","exists","useExistsHighlight","handleDisappearFocus","cellElement","current","focusElement","querySelector","focus","e","onDeleteHandler","createElement","className","ref","getIcon","getTitle","icon","variant","icon_position","disabled","getWarning","_ProgressIndicator","_Icon","iconFileType","mimeParts","type","split","Object","prototype","hasOwnProperty","call","text","name","href","top","stretch","internalFiles","updateExists","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,56 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ const _excluded = ["onClick", "text", "href", "download"];
4
+ import React from 'react';
5
+ import Anchor from '../../components/Anchor';
6
+ import Button from '../button/Button';
7
+ import { createSpacingClasses } from '../space/SpacingUtils';
8
+ import classNames from 'classnames';
9
+ export const UploadFileLink = props => {
10
+ const {
11
+ onClick,
12
+ text,
13
+ href,
14
+ download
15
+ } = props,
16
+ rest = _objectWithoutProperties(props, _excluded);
17
+ if (onClick) return React.createElement(UploadFileButton, _extends({
18
+ text: text,
19
+ onClick: onClick
20
+ }, rest));
21
+ return React.createElement(UploadFileAnchor, _extends({
22
+ text: text,
23
+ href: href,
24
+ download: download
25
+ }, rest));
26
+ };
27
+ export default UploadFileLink;
28
+ const UploadFileButton = props => {
29
+ const {
30
+ text,
31
+ onClick
32
+ } = props;
33
+ const spacingClasses = createSpacingClasses(props);
34
+ return React.createElement(Button, {
35
+ icon: false,
36
+ variant: "tertiary",
37
+ onClick: onClick,
38
+ className: classNames(spacingClasses)
39
+ }, text);
40
+ };
41
+ const UploadFileAnchor = props => {
42
+ const {
43
+ text,
44
+ href,
45
+ download
46
+ } = props;
47
+ const spacingClasses = createSpacingClasses(props);
48
+ return React.createElement(Anchor, {
49
+ target: "_blank",
50
+ href: href,
51
+ download: download ? text : null,
52
+ className: classNames('dnb-anchor--no-launch-icon', spacingClasses),
53
+ rel: "noopener noreferrer"
54
+ }, text);
55
+ };
56
+ //# sourceMappingURL=UploadFileListLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadFileListLink.js","names":["React","Anchor","Button","createSpacingClasses","classNames","UploadFileLink","props","onClick","text","href","download","rest","_objectWithoutProperties","_excluded","createElement","UploadFileButton","_extends","UploadFileAnchor","spacingClasses","icon","variant","className","target","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":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,MAAM,MAAM,yBAAyB;AAC5C,OAAOC,MAAM,MAAM,kBAAkB;AAErC,SAASC,oBAAoB,QAAQ,uBAAuB;AAC5D,OAAOC,UAAU,MAAM,YAAY;AAKnC,OAAO,MAAMC,cAAc,GAAIC,KAA0B,IAAK;EAC5D,MAAM;MAAEC,OAAO;MAAEC,IAAI;MAAEC,IAAI;MAAEC;IAAkB,CAAC,GAAGJ,KAAK;IAAdK,IAAI,GAAAC,wBAAA,CAAKN,KAAK,EAAAO,SAAA;EACxD,IAAIN,OAAO,EACT,OAAOP,KAAA,CAAAc,aAAA,CAACC,gBAAgB,EAAAC,QAAA;IAACR,IAAI,EAAEA,IAAK;IAACD,OAAO,EAAEA;EAAQ,GAAKI,IAAI,CAAG,CAAC;EACrE,OACEX,KAAA,CAAAc,aAAA,CAACG,gBAAgB,EAAAD,QAAA;IACfR,IAAI,EAAEA,IAAK;IACXC,IAAI,EAAEA,IAAK;IACXC,QAAQ,EAAEA;EAAS,GACfC,IAAI,CACT,CAAC;AAEN,CAAC;AAED,eAAeN,cAAc;AAO7B,MAAMU,gBAAgB,GAAIT,KAA4B,IAAK;EACzD,MAAM;IAAEE,IAAI;IAAED;EAAQ,CAAC,GAAGD,KAAK;EAE/B,MAAMY,cAAc,GAAGf,oBAAoB,CAACG,KAAK,CAAC;EAClD,OACEN,KAAA,CAAAc,aAAA,CAACZ,MAAM;IACLiB,IAAI,EAAE,KAAM;IACZC,OAAO,EAAC,UAAU;IAClBb,OAAO,EAAEA,OAAQ;IACjBc,SAAS,EAAEjB,UAAU,CAACc,cAAc;EAAE,GAErCV,IACK,CAAC;AAEb,CAAC;AAQD,MAAMS,gBAAgB,GAAIX,KAA4B,IAAK;EACzD,MAAM;IAAEE,IAAI;IAAEC,IAAI;IAAEC;EAAS,CAAC,GAAGJ,KAAK;EAEtC,MAAMY,cAAc,GAAGf,oBAAoB,CAACG,KAAK,CAAC;EAElD,OACEN,KAAA,CAAAc,aAAA,CAACb,MAAM;IACLqB,MAAM,EAAC,QAAQ;IACfb,IAAI,EAAEA,IAAK;IACXC,QAAQ,EAAEA,QAAQ,GAAGF,IAAI,GAAG,IAAK;IACjCa,SAAS,EAAEjB,UAAU,CAAC,4BAA4B,EAAEc,cAAc,CAAE;IACpEK,GAAG,EAAC;EAAqB,GAExBf,IACK,CAAC;AAEb,CAAC"}
@@ -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":""}
@@ -110,7 +110,8 @@
110
110
  max-height: 100vh;
111
111
  overflow: hidden;
112
112
  }
113
- .dnb-dialog .dnb-scroll-view {
113
+ .dnb-dialog > .dnb-scroll-view {
114
+ height: 100%;
114
115
  max-height: 90vh;
115
116
  }
116
117
  .dnb-dialog__inner {
@@ -1 +1 @@
1
- @keyframes show-modal{0%{opacity:.1;transform:translate3d(0,-1rem,0)}to{opacity:1;transform:translateZ(0)}}@keyframes hide-modal{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,1rem,0)}}@keyframes show-drawer{to{opacity:1;transform:translateZ(0)}}@keyframes hide-drawer-left{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(-20rem,0,0)}}@keyframes hide-drawer-top{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20rem,0)}}@keyframes hide-drawer-bottom{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,20rem,0)}}@keyframes hide-drawer-right{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(20rem,0,0)}}@keyframes show-modal-overlay{0%{opacity:0}to{opacity:1}}@keyframes hide-modal-overlay{0%{opacity:1}to{opacity:0}}.dnb-dialog{--dialog-min-width:320px;--dialog-avg-width:60vw;--dialog-max-width:49rem;--dialog-confirm-max-width:40rem;--dialog-spacing:2rem;--dialog-spacing-minus:-2rem;--dialog-radius:0.5rem;-webkit-tap-highlight-color:rgba(0,0,0,0);background:var(--dialog-background);border:none;border-radius:var(--dialog-radius);box-shadow:var(--shadow-default);max-height:100vh;overflow:hidden;position:relative;-webkit-user-select:text;user-select:text}.dnb-dialog .dnb-scroll-view{max-height:90vh}.dnb-dialog__inner{display:flex;flex-direction:column;height:100%;position:relative;width:100%}.dnb-dialog--information{max-width:var(--dialog-max-width);min-width:var(--dialog-min-width);width:var(--dialog-avg-width)}.dnb-dialog--confirmation{margin-left:1rem;margin-right:1rem;max-width:var(--dialog-confirm-max-width)}@media screen and (max-width:40em){.dnb-dialog--auto-fullscreen{border-radius:0;box-shadow:none;height:100vh;margin:auto 0;max-height:100vh;max-width:100%;width:100%}}.dnb-dialog--fullscreen{border-radius:0;box-shadow:none;height:100vh;margin:auto 0;max-height:100vh;max-width:100%;width:100%}.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__content{padding-bottom:calc(var(--dialog-spacing)*2)}.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__inner{padding-left:calc(var(--dialog-spacing)*1.75);padding-right:calc(var(--dialog-spacing)*1.75)}@media screen and (max-width:72em){.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__inner{padding-left:calc(var(--dialog-spacing));padding-right:calc(var(--dialog-spacing))}}@media screen and (max-width:40em){.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__inner{padding-left:calc(var(--dialog-spacing)/2);padding-right:calc(var(--dialog-spacing)/2)}}.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__navigation.dnb-section{margin-bottom:calc(var(--dialog-spacing)/2);margin-top:calc(var(--dialog-spacing))}@media screen and (max-width:60em){.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__navigation.dnb-section{margin-top:calc(var(--dialog-spacing)/2)}}.dnb-dialog--spacing.dnb-dialog--confirmation .dnb-dialog__inner{padding:calc(var(--dialog-spacing))}.dnb-dialog__align--centered .dnb-dialog__inner{align-items:center;justify-content:center}.dnb-dialog__align--centered .dnb-dialog__title,.dnb-dialog__align--centered.dnb-dialog--confirmation .dnb-dialog__content{text-align:center}.dnb-dialog__content{position:relative;z-index:1}.dnb-dialog__actions{display:flex;flex-flow:row wrap;gap:1rem;justify-content:center;padding-top:1.5rem;width:100%}.dnb-dialog--information .dnb-dialog__actions{justify-content:left}.dnb-dialog__align--center .dnb-dialog__content{align-items:center;text-align:center}.dnb-dialog__align--right .dnb-dialog__content{align-items:flex-end;text-align:right}.dnb-dialog__title~.dnb-dialog__content{padding-top:calc(var(--dialog-spacing)/2)}@media screen and (max-width:60em){.dnb-dialog__title{font-size:var(--font-size-large)!important;line-height:var(--line-height-medium)!important}}@media screen and (max-width:40em){.dnb-dialog__title{font-size:var(--font-size-medium)!important;line-height:var(--line-height-lead)!important}}.dnb-dialog--information .dnb-dialog__title{margin-bottom:var(--spacing-small)!important}.dnb-dialog--confirmation .dnb-dialog__title{margin-bottom:var(--spacing-x-small)!important}.dnb-dialog__navigation.dnb-section{display:flex;flex-direction:row;justify-content:space-between}html:not([data-visual-test]) .dnb-dialog{animation:show-modal var(--modal-animation-duration) ease-out}html:not([data-visual-test]) .dnb-dialog--hide{animation:hide-modal .22s ease-in-out forwards}.dnb-dialog--no-animation{animation-duration:0ms!important}@media screen and (max-width:40em){.dnb-dialog--no-animation-on-mobile{animation-delay:0ms!important;animation-duration:0ms!important}}.dnb-dialog__body{margin-bottom:calc(var(--dialog-spacing-minus)*2);padding-bottom:calc(var(--dialog-spacing)*2)}.dnb-dialog__header:after{height:600%;top:-500%}.dnb-dialog__header .dnb-modal__title,.dnb-dialog__header [class*=dnb-h--]{padding:0}.dnb-dialog__header .dnb-modal__title:not([class*=__top]),.dnb-dialog__header [class*=dnb-h--]:not([class*=__top]){margin-top:0}.dnb-dialog__header .dnb-modal__title:not([class*=__bottom]),.dnb-dialog__header [class*=dnb-h--]:not([class*=__bottom]){margin-bottom:0}.dnb-dialog--spacing .dnb-dialog__header .dnb-tabs{margin-top:3.5rem}.dnb-dialog__icon{display:flex}.dnb-dialog__icon__primary.dnb-icon--border{--icon-border-positioning--default:var(--dialog-icon-positioning);color:var(--dialog-icon-color)}.dnb-dialog__icon__primary.dnb-icon--border svg{position:relative;z-index:1}.dnb-dialog__icon__primary.dnb-icon--border:after{background-color:var(--dialog-icon-background);border:none}.dnb-dialog__icon__primary.dnb-dialog__icon--warning{--dialog-icon-color:var(--dialog-icon-color--warning);--dialog-icon-background:var(--dialog-icon-background--warning)}.dnb-dialog__icon__primary.dnb-dialog__icon--info{--dialog-icon-color:var(--dialog-icon-color--info);--dialog-icon-background:var(--dialog-icon-background--info)}.dnb-dialog__icon~.dnb-dialog__header{margin-top:1.5rem}@supports (-webkit-touch-callout:none){@media (max-height:40em){.dnb-dialog .dnb-scroll-view{max-height:82vh}}}[data-visual-test].hide-page-content #___gatsby{opacity:0}
1
+ @keyframes show-modal{0%{opacity:.1;transform:translate3d(0,-1rem,0)}to{opacity:1;transform:translateZ(0)}}@keyframes hide-modal{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,1rem,0)}}@keyframes show-drawer{to{opacity:1;transform:translateZ(0)}}@keyframes hide-drawer-left{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(-20rem,0,0)}}@keyframes hide-drawer-top{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20rem,0)}}@keyframes hide-drawer-bottom{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,20rem,0)}}@keyframes hide-drawer-right{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(20rem,0,0)}}@keyframes show-modal-overlay{0%{opacity:0}to{opacity:1}}@keyframes hide-modal-overlay{0%{opacity:1}to{opacity:0}}.dnb-dialog{--dialog-min-width:320px;--dialog-avg-width:60vw;--dialog-max-width:49rem;--dialog-confirm-max-width:40rem;--dialog-spacing:2rem;--dialog-spacing-minus:-2rem;--dialog-radius:0.5rem;-webkit-tap-highlight-color:rgba(0,0,0,0);background:var(--dialog-background);border:none;border-radius:var(--dialog-radius);box-shadow:var(--shadow-default);max-height:100vh;overflow:hidden;position:relative;-webkit-user-select:text;user-select:text}.dnb-dialog>.dnb-scroll-view{height:100%;max-height:90vh}.dnb-dialog__inner{display:flex;flex-direction:column;height:100%;position:relative;width:100%}.dnb-dialog--information{max-width:var(--dialog-max-width);min-width:var(--dialog-min-width);width:var(--dialog-avg-width)}.dnb-dialog--confirmation{margin-left:1rem;margin-right:1rem;max-width:var(--dialog-confirm-max-width)}@media screen and (max-width:40em){.dnb-dialog--auto-fullscreen{border-radius:0;box-shadow:none;height:100vh;margin:auto 0;max-height:100vh;max-width:100%;width:100%}}.dnb-dialog--fullscreen{border-radius:0;box-shadow:none;height:100vh;margin:auto 0;max-height:100vh;max-width:100%;width:100%}.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__content{padding-bottom:calc(var(--dialog-spacing)*2)}.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__inner{padding-left:calc(var(--dialog-spacing)*1.75);padding-right:calc(var(--dialog-spacing)*1.75)}@media screen and (max-width:72em){.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__inner{padding-left:calc(var(--dialog-spacing));padding-right:calc(var(--dialog-spacing))}}@media screen and (max-width:40em){.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__inner{padding-left:calc(var(--dialog-spacing)/2);padding-right:calc(var(--dialog-spacing)/2)}}.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__navigation.dnb-section{margin-bottom:calc(var(--dialog-spacing)/2);margin-top:calc(var(--dialog-spacing))}@media screen and (max-width:60em){.dnb-dialog--spacing.dnb-dialog--information .dnb-dialog__navigation.dnb-section{margin-top:calc(var(--dialog-spacing)/2)}}.dnb-dialog--spacing.dnb-dialog--confirmation .dnb-dialog__inner{padding:calc(var(--dialog-spacing))}.dnb-dialog__align--centered .dnb-dialog__inner{align-items:center;justify-content:center}.dnb-dialog__align--centered .dnb-dialog__title,.dnb-dialog__align--centered.dnb-dialog--confirmation .dnb-dialog__content{text-align:center}.dnb-dialog__content{position:relative;z-index:1}.dnb-dialog__actions{display:flex;flex-flow:row wrap;gap:1rem;justify-content:center;padding-top:1.5rem;width:100%}.dnb-dialog--information .dnb-dialog__actions{justify-content:left}.dnb-dialog__align--center .dnb-dialog__content{align-items:center;text-align:center}.dnb-dialog__align--right .dnb-dialog__content{align-items:flex-end;text-align:right}.dnb-dialog__title~.dnb-dialog__content{padding-top:calc(var(--dialog-spacing)/2)}@media screen and (max-width:60em){.dnb-dialog__title{font-size:var(--font-size-large)!important;line-height:var(--line-height-medium)!important}}@media screen and (max-width:40em){.dnb-dialog__title{font-size:var(--font-size-medium)!important;line-height:var(--line-height-lead)!important}}.dnb-dialog--information .dnb-dialog__title{margin-bottom:var(--spacing-small)!important}.dnb-dialog--confirmation .dnb-dialog__title{margin-bottom:var(--spacing-x-small)!important}.dnb-dialog__navigation.dnb-section{display:flex;flex-direction:row;justify-content:space-between}html:not([data-visual-test]) .dnb-dialog{animation:show-modal var(--modal-animation-duration) ease-out}html:not([data-visual-test]) .dnb-dialog--hide{animation:hide-modal .22s ease-in-out forwards}.dnb-dialog--no-animation{animation-duration:0ms!important}@media screen and (max-width:40em){.dnb-dialog--no-animation-on-mobile{animation-delay:0ms!important;animation-duration:0ms!important}}.dnb-dialog__body{margin-bottom:calc(var(--dialog-spacing-minus)*2);padding-bottom:calc(var(--dialog-spacing)*2)}.dnb-dialog__header:after{height:600%;top:-500%}.dnb-dialog__header .dnb-modal__title,.dnb-dialog__header [class*=dnb-h--]{padding:0}.dnb-dialog__header .dnb-modal__title:not([class*=__top]),.dnb-dialog__header [class*=dnb-h--]:not([class*=__top]){margin-top:0}.dnb-dialog__header .dnb-modal__title:not([class*=__bottom]),.dnb-dialog__header [class*=dnb-h--]:not([class*=__bottom]){margin-bottom:0}.dnb-dialog--spacing .dnb-dialog__header .dnb-tabs{margin-top:3.5rem}.dnb-dialog__icon{display:flex}.dnb-dialog__icon__primary.dnb-icon--border{--icon-border-positioning--default:var(--dialog-icon-positioning);color:var(--dialog-icon-color)}.dnb-dialog__icon__primary.dnb-icon--border svg{position:relative;z-index:1}.dnb-dialog__icon__primary.dnb-icon--border:after{background-color:var(--dialog-icon-background);border:none}.dnb-dialog__icon__primary.dnb-dialog__icon--warning{--dialog-icon-color:var(--dialog-icon-color--warning);--dialog-icon-background:var(--dialog-icon-background--warning)}.dnb-dialog__icon__primary.dnb-dialog__icon--info{--dialog-icon-color:var(--dialog-icon-color--info);--dialog-icon-background:var(--dialog-icon-background--info)}.dnb-dialog__icon~.dnb-dialog__header{margin-top:1.5rem}@supports (-webkit-touch-callout:none){@media (max-height:40em){.dnb-dialog .dnb-scroll-view{max-height:82vh}}}[data-visual-test].hide-page-content #___gatsby{opacity:0}
@@ -28,7 +28,8 @@
28
28
  max-height: 100vh;
29
29
  overflow: hidden;
30
30
 
31
- .dnb-scroll-view {
31
+ & > .dnb-scroll-view {
32
+ height: 100%; // ensure a Dropdown opens with the full height
32
33
  max-height: 90vh; // make it scrollable
33
34
  }
34
35
 
@@ -55,8 +55,7 @@ export default function FormLabel(localProps) {
55
55
  }
56
56
  const forElem = document.querySelector(`#${forId}`);
57
57
  const target = (forElem === null || forElem === void 0 ? void 0 : forElem.closest('.dnb-input__border--root')) || (forElem === null || forElem === void 0 ? void 0 : forElem.closest('.dnb-input__border'));
58
- if (target) {
59
- var _elem$addEventListene, _elem$addEventListene2;
58
+ if (target && ref.current) {
60
59
  const elem = ref.current;
61
60
  const buttonEnter = () => {
62
61
  target.classList.add('no-hover');
@@ -78,17 +77,21 @@ export default function FormLabel(localProps) {
78
77
  });
79
78
  };
80
79
  const leave = () => {
81
- var _elem$querySelector, _elem$querySelector$r;
80
+ var _button$removeEventLi;
82
81
  target.classList.remove('hover');
83
- (_elem$querySelector = elem.querySelector('button')) === null || _elem$querySelector === void 0 ? void 0 : (_elem$querySelector$r = _elem$querySelector.removeEventListener) === null || _elem$querySelector$r === void 0 ? void 0 : _elem$querySelector$r.call(_elem$querySelector, 'mouseenter', buttonEnter);
82
+ const button = elem.querySelector('button');
83
+ button === null || button === void 0 ? void 0 : (_button$removeEventLi = button.removeEventListener) === null || _button$removeEventLi === void 0 ? void 0 : _button$removeEventLi.call(button, 'mouseenter', buttonEnter);
84
84
  };
85
- elem === null || elem === void 0 ? void 0 : (_elem$addEventListene = elem.addEventListener) === null || _elem$addEventListene === void 0 ? void 0 : _elem$addEventListene.call(elem, 'mouseenter', enter);
86
- elem === null || elem === void 0 ? void 0 : (_elem$addEventListene2 = elem.addEventListener) === null || _elem$addEventListene2 === void 0 ? void 0 : _elem$addEventListene2.call(elem, 'mouseleave', leave);
85
+ elem.addEventListener('mouseenter', enter);
86
+ elem.addEventListener('mouseleave', leave);
87
87
  return () => {
88
- var _elem$removeEventList, _elem$removeEventList2, _elem$querySelector2, _elem$querySelector2$;
89
- elem === null || elem === void 0 ? void 0 : (_elem$removeEventList = elem.removeEventListener) === null || _elem$removeEventList === void 0 ? void 0 : _elem$removeEventList.call(elem, 'mouseenter', enter);
90
- elem === null || elem === void 0 ? void 0 : (_elem$removeEventList2 = elem.removeEventListener) === null || _elem$removeEventList2 === void 0 ? void 0 : _elem$removeEventList2.call(elem, 'mouseleave', leave);
91
- (_elem$querySelector2 = elem.querySelector('button')) === null || _elem$querySelector2 === void 0 ? void 0 : (_elem$querySelector2$ = _elem$querySelector2.removeEventListener) === null || _elem$querySelector2$ === void 0 ? void 0 : _elem$querySelector2$.call(_elem$querySelector2, 'mouseleave', buttonLeave);
88
+ if (elem) {
89
+ var _button$removeEventLi2;
90
+ elem.removeEventListener('mouseenter', enter);
91
+ elem.removeEventListener('mouseleave', leave);
92
+ const button = elem.querySelector('button');
93
+ button === null || button === void 0 ? void 0 : (_button$removeEventLi2 = button.removeEventListener) === null || _button$removeEventLi2 === void 0 ? void 0 : _button$removeEventLi2.call(button, 'mouseleave', buttonLeave);
94
+ }
92
95
  };
93
96
  }
94
97
  }, [forId, ref]);