@dnb/eufemia 10.69.1 → 10.70.1

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 (918) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/cjs/components/aria-live/AriaLiveDocs.d.ts +2 -0
  3. package/cjs/components/aria-live/AriaLiveDocs.js +54 -0
  4. package/cjs/components/aria-live/AriaLiveDocs.js.map +1 -0
  5. package/cjs/components/autocomplete/AutocompleteDocs.js +3 -3
  6. package/cjs/components/autocomplete/AutocompleteDocs.js.map +1 -1
  7. package/cjs/components/avatar/Avatar.d.ts +10 -0
  8. package/cjs/components/avatar/Avatar.js +12 -3
  9. package/cjs/components/avatar/Avatar.js.map +1 -1
  10. package/cjs/components/avatar/AvatarDocs.d.ts +3 -0
  11. package/cjs/components/avatar/AvatarDocs.js +101 -0
  12. package/cjs/components/avatar/AvatarDocs.js.map +1 -0
  13. package/cjs/components/avatar/AvatarGroup.d.ts +10 -0
  14. package/cjs/components/avatar/AvatarGroup.js +17 -5
  15. package/cjs/components/avatar/AvatarGroup.js.map +1 -1
  16. package/cjs/components/avatar/style/dnb-avatar.css +8 -0
  17. package/cjs/components/avatar/style/dnb-avatar.min.css +1 -1
  18. package/cjs/components/avatar/style/dnb-avatar.scss +9 -0
  19. package/cjs/components/avatar/style/themes/dnb-avatar-theme-sbanken.css +5 -5
  20. package/cjs/components/avatar/style/themes/dnb-avatar-theme-sbanken.min.css +1 -1
  21. package/cjs/components/avatar/style/themes/dnb-avatar-theme-sbanken.scss +5 -6
  22. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.css +5 -5
  23. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -1
  24. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.scss +5 -5
  25. package/cjs/components/badge/BadgeDocs.d.ts +2 -0
  26. package/cjs/components/badge/BadgeDocs.js +54 -0
  27. package/cjs/components/badge/BadgeDocs.js.map +1 -0
  28. package/cjs/components/breadcrumb/BreadcrumbDocs.d.ts +5 -0
  29. package/cjs/components/breadcrumb/BreadcrumbDocs.js +125 -0
  30. package/cjs/components/breadcrumb/BreadcrumbDocs.js.map +1 -0
  31. package/cjs/components/button/Button.d.ts +0 -3
  32. package/cjs/components/button/ButtonDocs.d.ts +1 -0
  33. package/cjs/components/button/ButtonDocs.js +8 -1
  34. package/cjs/components/button/ButtonDocs.js.map +1 -1
  35. package/cjs/components/checkbox/CheckboxDocs.js +2 -2
  36. package/cjs/components/checkbox/CheckboxDocs.js.map +1 -1
  37. package/cjs/components/date-picker/DatePickerAddon.js +1 -3
  38. package/cjs/components/date-picker/DatePickerAddon.js.map +1 -1
  39. package/cjs/components/date-picker/DatePickerCalc.d.ts +13 -0
  40. package/cjs/components/date-picker/DatePickerCalc.js +44 -0
  41. package/cjs/components/date-picker/DatePickerCalc.js.map +1 -1
  42. package/cjs/components/date-picker/DatePickerCalendar.js +13 -11
  43. package/cjs/components/date-picker/DatePickerCalendar.js.map +1 -1
  44. package/cjs/components/date-picker/DatePickerContext.d.ts +1 -1
  45. package/cjs/components/date-picker/DatePickerContext.js.map +1 -1
  46. package/cjs/components/date-picker/DatePickerDocs.js +1 -1
  47. package/cjs/components/date-picker/DatePickerDocs.js.map +1 -1
  48. package/cjs/components/date-picker/DatePickerInput.js +120 -94
  49. package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
  50. package/cjs/components/date-picker/DatePickerProvider.js +2 -2
  51. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  52. package/cjs/components/date-picker/hooks/useViews.d.ts +2 -4
  53. package/cjs/components/date-picker/hooks/useViews.js +37 -23
  54. package/cjs/components/date-picker/hooks/useViews.js.map +1 -1
  55. package/cjs/components/date-picker/style/dnb-date-picker.css +4 -0
  56. package/cjs/components/date-picker/style/dnb-date-picker.min.css +1 -1
  57. package/cjs/components/date-picker/style/dnb-date-picker.scss +3 -0
  58. package/cjs/components/dialog/DialogDocs.d.ts +1 -0
  59. package/cjs/components/dialog/DialogDocs.js +20 -3
  60. package/cjs/components/dialog/DialogDocs.js.map +1 -1
  61. package/cjs/components/drawer/DrawerDocs.d.ts +2 -0
  62. package/cjs/components/drawer/DrawerDocs.js +69 -0
  63. package/cjs/components/drawer/DrawerDocs.js.map +1 -0
  64. package/cjs/components/dropdown/Dropdown.d.ts +20 -20
  65. package/cjs/components/dropdown/DropdownDocs.d.ts +3 -0
  66. package/cjs/components/dropdown/DropdownDocs.js +186 -0
  67. package/cjs/components/dropdown/DropdownDocs.js.map +1 -0
  68. package/cjs/components/flex/ContainerDocs.js +1 -1
  69. package/cjs/components/flex/ContainerDocs.js.map +1 -1
  70. package/cjs/components/flex/ItemDocs.d.ts +2 -0
  71. package/cjs/components/flex/ItemDocs.js +39 -0
  72. package/cjs/components/flex/ItemDocs.js.map +1 -0
  73. package/cjs/components/form-label/FormLabelDocs.d.ts +2 -0
  74. package/cjs/components/form-label/FormLabelDocs.js +59 -0
  75. package/cjs/components/form-label/FormLabelDocs.js.map +1 -0
  76. package/cjs/components/form-row/FormRow.d.ts +45 -0
  77. package/cjs/components/form-row/FormRowDocs.d.ts +2 -0
  78. package/cjs/components/form-row/FormRowDocs.js +89 -0
  79. package/cjs/components/form-row/FormRowDocs.js.map +1 -0
  80. package/cjs/components/form-set/FormSet.d.ts +18 -0
  81. package/cjs/components/form-set/FormSetDocs.d.ts +3 -0
  82. package/cjs/components/form-set/FormSetDocs.js +56 -0
  83. package/cjs/components/form-set/FormSetDocs.js.map +1 -0
  84. package/cjs/components/form-status/FormStatus.d.ts +18 -18
  85. package/cjs/components/form-status/FormStatusDocs.d.ts +2 -0
  86. package/cjs/components/form-status/FormStatusDocs.js +89 -0
  87. package/cjs/components/form-status/FormStatusDocs.js.map +1 -0
  88. package/cjs/components/global-error/GlobalError.d.ts +12 -0
  89. package/cjs/components/global-error/GlobalError.js +15 -6
  90. package/cjs/components/global-error/GlobalError.js.map +1 -1
  91. package/cjs/components/global-error/GlobalErrorDocs.js +14 -4
  92. package/cjs/components/global-error/GlobalErrorDocs.js.map +1 -1
  93. package/cjs/components/global-status/GlobalStatus.d.ts +37 -58
  94. package/cjs/components/global-status/GlobalStatusController.d.ts +0 -9
  95. package/cjs/components/global-status/GlobalStatusDocs.d.ts +6 -0
  96. package/cjs/components/global-status/GlobalStatusDocs.js +192 -0
  97. package/cjs/components/global-status/GlobalStatusDocs.js.map +1 -0
  98. package/cjs/components/grid/ItemDocs.d.ts +2 -0
  99. package/cjs/components/grid/ItemDocs.js +19 -0
  100. package/cjs/components/grid/ItemDocs.js.map +1 -0
  101. package/cjs/components/heading/HeadingDocs.d.ts +2 -0
  102. package/cjs/components/heading/HeadingDocs.js +79 -0
  103. package/cjs/components/heading/HeadingDocs.js.map +1 -0
  104. package/cjs/components/help-button/HelpButtonDocs.d.ts +3 -0
  105. package/cjs/components/help-button/HelpButtonDocs.js +46 -0
  106. package/cjs/components/help-button/HelpButtonDocs.js.map +1 -0
  107. package/cjs/components/icon/IconDocs.d.ts +2 -0
  108. package/cjs/components/icon/IconDocs.js +59 -0
  109. package/cjs/components/icon/IconDocs.js.map +1 -0
  110. package/cjs/components/icon/IconPrimaryDocs.d.ts +2 -0
  111. package/cjs/components/icon/IconPrimaryDocs.js +24 -0
  112. package/cjs/components/icon/IconPrimaryDocs.js.map +1 -0
  113. package/cjs/components/info-card/InfoCard.d.ts +6 -1
  114. package/cjs/components/info-card/InfoCard.js +4 -3
  115. package/cjs/components/info-card/InfoCard.js.map +1 -1
  116. package/cjs/components/info-card/InfoCardDocs.js +8 -3
  117. package/cjs/components/info-card/InfoCardDocs.js.map +1 -1
  118. package/cjs/components/input/Input.d.ts +0 -21
  119. package/cjs/components/input/InputDocs.d.ts +1 -0
  120. package/cjs/components/input/InputDocs.js +36 -4
  121. package/cjs/components/input/InputDocs.js.map +1 -1
  122. package/cjs/components/input-masked/InputMasked.d.ts +0 -15
  123. package/cjs/components/input-masked/InputMaskedDocs.d.ts +2 -0
  124. package/cjs/components/input-masked/InputMaskedDocs.js +70 -1
  125. package/cjs/components/input-masked/InputMaskedDocs.js.map +1 -1
  126. package/cjs/components/input-masked/MultiInputMaskedDocs.d.ts +4 -0
  127. package/cjs/components/input-masked/MultiInputMaskedDocs.js +93 -0
  128. package/cjs/components/input-masked/MultiInputMaskedDocs.js.map +1 -0
  129. package/cjs/components/input-masked/style/dnb-input-masked.css +9 -0
  130. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  131. package/cjs/components/input-masked/style/dnb-input-masked.scss +12 -0
  132. package/cjs/components/input-masked/text-mask/InputModeNumber.d.ts +8 -0
  133. package/cjs/components/input-masked/text-mask/InputModeNumber.js +32 -9
  134. package/cjs/components/input-masked/text-mask/InputModeNumber.js.map +1 -1
  135. package/cjs/components/input-masked/text-mask/adjustCaretPosition.d.ts +2 -1
  136. package/cjs/components/input-masked/text-mask/adjustCaretPosition.js +3 -2
  137. package/cjs/components/input-masked/text-mask/adjustCaretPosition.js.map +1 -1
  138. package/cjs/components/input-masked/text-mask/createTextMaskInputElement.js +9 -3
  139. package/cjs/components/input-masked/text-mask/createTextMaskInputElement.js.map +1 -1
  140. package/cjs/components/modal/ModalDocs.d.ts +3 -0
  141. package/cjs/components/modal/ModalDocs.js +191 -0
  142. package/cjs/components/modal/ModalDocs.js.map +1 -0
  143. package/cjs/components/pagination/Pagination.d.ts +35 -33
  144. package/cjs/components/pagination/Pagination.js +2 -0
  145. package/cjs/components/pagination/Pagination.js.map +1 -1
  146. package/cjs/components/pagination/PaginationDocs.d.ts +3 -0
  147. package/cjs/components/pagination/PaginationDocs.js +191 -0
  148. package/cjs/components/pagination/PaginationDocs.js.map +1 -0
  149. package/cjs/components/pagination/PaginationHelpers.d.ts +0 -3
  150. package/cjs/components/pagination/PaginationInfinity.d.ts +0 -3
  151. package/cjs/components/pagination/PaginationProvider.js +1 -1
  152. package/cjs/components/pagination/PaginationProvider.js.map +1 -1
  153. package/cjs/components/radio/Radio.d.ts +12 -15
  154. package/cjs/components/radio/RadioDocs.d.ts +5 -0
  155. package/cjs/components/radio/RadioDocs.js +145 -0
  156. package/cjs/components/radio/RadioDocs.js.map +1 -0
  157. package/cjs/components/radio/RadioGroup.d.ts +0 -30
  158. package/cjs/components/section/Section.js +2 -7
  159. package/cjs/components/section/Section.js.map +1 -1
  160. package/cjs/components/section/SectionDocs.js +1 -1
  161. package/cjs/components/section/SectionDocs.js.map +1 -1
  162. package/cjs/components/skeleton/SkeletonDocs.d.ts +2 -0
  163. package/cjs/components/skeleton/SkeletonDocs.js +44 -0
  164. package/cjs/components/skeleton/SkeletonDocs.js.map +1 -0
  165. package/cjs/components/skeleton/SkeletonHelper.d.ts +0 -6
  166. package/cjs/components/skip-content/SkipContentDocs.d.ts +2 -0
  167. package/cjs/components/skip-content/SkipContentDocs.js +29 -0
  168. package/cjs/components/skip-content/SkipContentDocs.js.map +1 -0
  169. package/cjs/components/slider/SliderDocs.js +2 -2
  170. package/cjs/components/slider/SliderDocs.js.map +1 -1
  171. package/cjs/components/space/SpaceDocs.d.ts +3 -0
  172. package/cjs/components/space/SpaceDocs.js +61 -0
  173. package/cjs/components/space/SpaceDocs.js.map +1 -0
  174. package/cjs/components/switch/SwitchDocs.js +2 -2
  175. package/cjs/components/switch/SwitchDocs.js.map +1 -1
  176. package/cjs/components/tag/TagDocs.d.ts +4 -0
  177. package/cjs/components/tag/TagDocs.js +93 -0
  178. package/cjs/components/tag/TagDocs.js.map +1 -0
  179. package/cjs/components/textarea/Textarea.d.ts +0 -12
  180. package/cjs/components/textarea/TextareaDocs.d.ts +1 -0
  181. package/cjs/components/textarea/TextareaDocs.js +26 -4
  182. package/cjs/components/textarea/TextareaDocs.js.map +1 -1
  183. package/cjs/components/timeline/TimelineDocs.d.ts +3 -0
  184. package/cjs/components/timeline/TimelineDocs.js +66 -0
  185. package/cjs/components/timeline/TimelineDocs.js.map +1 -0
  186. package/cjs/components/toggle-button/ToggleButton.d.ts +0 -3
  187. package/cjs/components/toggle-button/ToggleButtonDocs.d.ts +1 -0
  188. package/cjs/components/toggle-button/ToggleButtonDocs.js +8 -1
  189. package/cjs/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  190. package/cjs/components/toggle-button/ToggleButtonGroup.d.ts +0 -3
  191. package/cjs/components/toggle-button/ToggleButtonGroupDocs.d.ts +1 -0
  192. package/cjs/components/toggle-button/ToggleButtonGroupDocs.js +9 -2
  193. package/cjs/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -1
  194. package/cjs/components/tooltip/TooltipDocs.d.ts +2 -0
  195. package/cjs/components/tooltip/TooltipDocs.js +79 -0
  196. package/cjs/components/tooltip/TooltipDocs.js.map +1 -0
  197. package/cjs/components/upload/Upload.js +6 -4
  198. package/cjs/components/upload/Upload.js.map +1 -1
  199. package/cjs/components/upload/UploadDocs.js +5 -0
  200. package/cjs/components/upload/UploadDocs.js.map +1 -1
  201. package/cjs/components/upload/UploadFileList.js +3 -1
  202. package/cjs/components/upload/UploadFileList.js.map +1 -1
  203. package/cjs/components/upload/UploadFileListCell.d.ts +6 -1
  204. package/cjs/components/upload/UploadFileListCell.js +8 -5
  205. package/cjs/components/upload/UploadFileListCell.js.map +1 -1
  206. package/cjs/components/upload/types.d.ts +5 -0
  207. package/cjs/components/upload/types.js.map +1 -1
  208. package/cjs/components/upload/useUpload.d.ts +1 -0
  209. package/cjs/components/upload/useUpload.js +9 -2
  210. package/cjs/components/upload/useUpload.js.map +1 -1
  211. package/cjs/components/visually-hidden/VisuallyHiddenDocs.d.ts +2 -0
  212. package/cjs/components/visually-hidden/VisuallyHiddenDocs.js +19 -0
  213. package/cjs/components/visually-hidden/VisuallyHiddenDocs.js.map +1 -0
  214. package/cjs/extensions/forms/DataContext/At/AtDocs.d.ts +2 -0
  215. package/cjs/extensions/forms/DataContext/At/AtDocs.js +24 -0
  216. package/cjs/extensions/forms/DataContext/At/AtDocs.js.map +1 -0
  217. package/cjs/extensions/forms/DataContext/Context.d.ts +6 -5
  218. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  219. package/cjs/extensions/forms/DataContext/Provider/Provider.js +29 -35
  220. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  221. package/cjs/extensions/forms/Field/Date/Date.d.ts +1 -0
  222. package/cjs/extensions/forms/Field/Date/Date.js +8 -8
  223. package/cjs/extensions/forms/Field/Date/Date.js.map +1 -1
  224. package/cjs/extensions/forms/Field/Password/Password.js +2 -1
  225. package/cjs/extensions/forms/Field/Password/Password.js.map +1 -1
  226. package/cjs/extensions/forms/Field/Password/PasswordDocs.d.ts +1 -0
  227. package/cjs/extensions/forms/Field/Password/PasswordDocs.js +14 -2
  228. package/cjs/extensions/forms/Field/Password/PasswordDocs.js.map +1 -1
  229. package/cjs/extensions/forms/Field/Provider/useFieldProvider.d.ts +9 -3
  230. package/cjs/extensions/forms/Field/String/StringDocs.js +1 -1
  231. package/cjs/extensions/forms/Field/String/StringDocs.js.map +1 -1
  232. package/cjs/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  233. package/cjs/extensions/forms/Field/Upload/Upload.js +10 -2
  234. package/cjs/extensions/forms/Field/Upload/Upload.js.map +1 -1
  235. package/cjs/extensions/forms/Form/ButtonRow/ButtonRowDocs.d.ts +2 -0
  236. package/cjs/extensions/forms/Form/ButtonRow/ButtonRowDocs.js +19 -0
  237. package/cjs/extensions/forms/Form/ButtonRow/ButtonRowDocs.js.map +1 -0
  238. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +1 -1
  239. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  240. package/cjs/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js +4 -4
  241. package/cjs/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js.map +1 -1
  242. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  243. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  244. package/cjs/extensions/forms/Form/Visibility/useVisibility.js +10 -14
  245. package/cjs/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  246. package/cjs/extensions/forms/Value/Date/Date.d.ts +0 -6
  247. package/cjs/extensions/forms/Value/Date/Date.js +14 -38
  248. package/cjs/extensions/forms/Value/Date/Date.js.map +1 -1
  249. package/cjs/extensions/forms/Wizard/Buttons/ButtonsDocs.d.ts +2 -0
  250. package/cjs/extensions/forms/Wizard/Buttons/ButtonsDocs.js +14 -0
  251. package/cjs/extensions/forms/Wizard/Buttons/ButtonsDocs.js.map +1 -0
  252. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +2 -2
  253. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  254. package/cjs/extensions/forms/hooks/useFieldProps.js +8 -5
  255. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  256. package/cjs/extensions/payment-card/PaymentCard.d.ts +7 -7
  257. package/cjs/extensions/payment-card/PaymentCardDocs.d.ts +5 -0
  258. package/cjs/extensions/payment-card/PaymentCardDocs.js +205 -0
  259. package/cjs/extensions/payment-card/PaymentCardDocs.js.map +1 -0
  260. package/cjs/fragments/scroll-view/ScrollViewDocs.d.ts +2 -0
  261. package/cjs/fragments/scroll-view/ScrollViewDocs.js +19 -0
  262. package/cjs/fragments/scroll-view/ScrollViewDocs.js.map +1 -0
  263. package/cjs/fragments/text-counter/TextCounterDocs.d.ts +2 -0
  264. package/cjs/fragments/text-counter/TextCounterDocs.js +29 -0
  265. package/cjs/fragments/text-counter/TextCounterDocs.js.map +1 -0
  266. package/cjs/shared/Eufemia.d.ts +1 -1
  267. package/cjs/shared/Eufemia.js +2 -2
  268. package/cjs/shared/Eufemia.js.map +1 -1
  269. package/cjs/shared/MediaQueryDocs.d.ts +2 -0
  270. package/cjs/shared/MediaQueryDocs.js +34 -0
  271. package/cjs/shared/MediaQueryDocs.js.map +1 -0
  272. package/cjs/shared/ThemeDocs.d.ts +2 -0
  273. package/cjs/shared/ThemeDocs.js +39 -0
  274. package/cjs/shared/ThemeDocs.js.map +1 -0
  275. package/cjs/shared/helpers.d.ts +1 -0
  276. package/cjs/shared/helpers.js +7 -0
  277. package/cjs/shared/helpers.js.map +1 -1
  278. package/cjs/shared/locales/en-GB.d.ts +1 -0
  279. package/cjs/shared/locales/en-GB.js +1 -0
  280. package/cjs/shared/locales/en-GB.js.map +1 -1
  281. package/cjs/shared/locales/en-US.d.ts +1 -0
  282. package/cjs/shared/locales/index.d.ts +2 -0
  283. package/cjs/shared/locales/nb-NO.d.ts +1 -0
  284. package/cjs/shared/locales/nb-NO.js +1 -0
  285. package/cjs/shared/locales/nb-NO.js.map +1 -1
  286. package/cjs/shared/locales/sv-SE.d.ts +1 -0
  287. package/cjs/shared/locales/sv-SE.js +3 -2
  288. package/cjs/shared/locales/sv-SE.js.map +1 -1
  289. package/cjs/style/core/scopes.scss +1 -1
  290. package/cjs/style/dnb-ui-basis.css +1 -1
  291. package/cjs/style/dnb-ui-basis.min.css +1 -1
  292. package/cjs/style/dnb-ui-body.css +1 -1
  293. package/cjs/style/dnb-ui-body.min.css +1 -1
  294. package/cjs/style/dnb-ui-components.css +21 -0
  295. package/cjs/style/dnb-ui-components.min.css +1 -1
  296. package/cjs/style/dnb-ui-core.css +1 -1
  297. package/cjs/style/dnb-ui-core.min.css +1 -1
  298. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +26 -5
  299. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  300. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +26 -5
  301. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  302. package/cjs/style/themes/theme-ui/ui-theme-components.css +26 -5
  303. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  304. package/components/aria-live/AriaLiveDocs.d.ts +2 -0
  305. package/components/aria-live/AriaLiveDocs.js +48 -0
  306. package/components/aria-live/AriaLiveDocs.js.map +1 -0
  307. package/components/autocomplete/AutocompleteDocs.js +3 -3
  308. package/components/autocomplete/AutocompleteDocs.js.map +1 -1
  309. package/components/avatar/Avatar.d.ts +10 -0
  310. package/components/avatar/Avatar.js +12 -3
  311. package/components/avatar/Avatar.js.map +1 -1
  312. package/components/avatar/AvatarDocs.d.ts +3 -0
  313. package/components/avatar/AvatarDocs.js +95 -0
  314. package/components/avatar/AvatarDocs.js.map +1 -0
  315. package/components/avatar/AvatarGroup.d.ts +10 -0
  316. package/components/avatar/AvatarGroup.js +17 -5
  317. package/components/avatar/AvatarGroup.js.map +1 -1
  318. package/components/avatar/style/dnb-avatar.css +8 -0
  319. package/components/avatar/style/dnb-avatar.min.css +1 -1
  320. package/components/avatar/style/dnb-avatar.scss +9 -0
  321. package/components/avatar/style/themes/dnb-avatar-theme-sbanken.css +5 -5
  322. package/components/avatar/style/themes/dnb-avatar-theme-sbanken.min.css +1 -1
  323. package/components/avatar/style/themes/dnb-avatar-theme-sbanken.scss +5 -6
  324. package/components/avatar/style/themes/dnb-avatar-theme-ui.css +5 -5
  325. package/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -1
  326. package/components/avatar/style/themes/dnb-avatar-theme-ui.scss +5 -5
  327. package/components/badge/BadgeDocs.d.ts +2 -0
  328. package/components/badge/BadgeDocs.js +48 -0
  329. package/components/badge/BadgeDocs.js.map +1 -0
  330. package/components/breadcrumb/BreadcrumbDocs.d.ts +5 -0
  331. package/components/breadcrumb/BreadcrumbDocs.js +119 -0
  332. package/components/breadcrumb/BreadcrumbDocs.js.map +1 -0
  333. package/components/button/Button.d.ts +0 -3
  334. package/components/button/ButtonDocs.d.ts +1 -0
  335. package/components/button/ButtonDocs.js +7 -0
  336. package/components/button/ButtonDocs.js.map +1 -1
  337. package/components/checkbox/CheckboxDocs.js +2 -2
  338. package/components/checkbox/CheckboxDocs.js.map +1 -1
  339. package/components/date-picker/DatePickerAddon.js +1 -3
  340. package/components/date-picker/DatePickerAddon.js.map +1 -1
  341. package/components/date-picker/DatePickerCalc.d.ts +13 -0
  342. package/components/date-picker/DatePickerCalc.js +41 -0
  343. package/components/date-picker/DatePickerCalc.js.map +1 -1
  344. package/components/date-picker/DatePickerCalendar.js +13 -11
  345. package/components/date-picker/DatePickerCalendar.js.map +1 -1
  346. package/components/date-picker/DatePickerContext.d.ts +1 -1
  347. package/components/date-picker/DatePickerContext.js.map +1 -1
  348. package/components/date-picker/DatePickerDocs.js +1 -1
  349. package/components/date-picker/DatePickerDocs.js.map +1 -1
  350. package/components/date-picker/DatePickerInput.js +121 -95
  351. package/components/date-picker/DatePickerInput.js.map +1 -1
  352. package/components/date-picker/DatePickerProvider.js +2 -2
  353. package/components/date-picker/DatePickerProvider.js.map +1 -1
  354. package/components/date-picker/hooks/useViews.d.ts +2 -4
  355. package/components/date-picker/hooks/useViews.js +38 -24
  356. package/components/date-picker/hooks/useViews.js.map +1 -1
  357. package/components/date-picker/style/dnb-date-picker.css +4 -0
  358. package/components/date-picker/style/dnb-date-picker.min.css +1 -1
  359. package/components/date-picker/style/dnb-date-picker.scss +3 -0
  360. package/components/dialog/DialogDocs.d.ts +1 -0
  361. package/components/dialog/DialogDocs.js +19 -2
  362. package/components/dialog/DialogDocs.js.map +1 -1
  363. package/components/drawer/DrawerDocs.d.ts +2 -0
  364. package/components/drawer/DrawerDocs.js +63 -0
  365. package/components/drawer/DrawerDocs.js.map +1 -0
  366. package/components/dropdown/Dropdown.d.ts +20 -20
  367. package/components/dropdown/DropdownDocs.d.ts +3 -0
  368. package/components/dropdown/DropdownDocs.js +180 -0
  369. package/components/dropdown/DropdownDocs.js.map +1 -0
  370. package/components/flex/ContainerDocs.js +1 -1
  371. package/components/flex/ContainerDocs.js.map +1 -1
  372. package/components/flex/ItemDocs.d.ts +2 -0
  373. package/components/flex/ItemDocs.js +33 -0
  374. package/components/flex/ItemDocs.js.map +1 -0
  375. package/components/form-label/FormLabelDocs.d.ts +2 -0
  376. package/components/form-label/FormLabelDocs.js +53 -0
  377. package/components/form-label/FormLabelDocs.js.map +1 -0
  378. package/components/form-row/FormRow.d.ts +45 -0
  379. package/components/form-row/FormRowDocs.d.ts +2 -0
  380. package/components/form-row/FormRowDocs.js +83 -0
  381. package/components/form-row/FormRowDocs.js.map +1 -0
  382. package/components/form-set/FormSet.d.ts +18 -0
  383. package/components/form-set/FormSetDocs.d.ts +3 -0
  384. package/components/form-set/FormSetDocs.js +50 -0
  385. package/components/form-set/FormSetDocs.js.map +1 -0
  386. package/components/form-status/FormStatus.d.ts +18 -18
  387. package/components/form-status/FormStatusDocs.d.ts +2 -0
  388. package/components/form-status/FormStatusDocs.js +83 -0
  389. package/components/form-status/FormStatusDocs.js.map +1 -0
  390. package/components/global-error/GlobalError.d.ts +12 -0
  391. package/components/global-error/GlobalError.js +15 -6
  392. package/components/global-error/GlobalError.js.map +1 -1
  393. package/components/global-error/GlobalErrorDocs.js +14 -4
  394. package/components/global-error/GlobalErrorDocs.js.map +1 -1
  395. package/components/global-status/GlobalStatus.d.ts +37 -58
  396. package/components/global-status/GlobalStatusController.d.ts +0 -9
  397. package/components/global-status/GlobalStatusDocs.d.ts +6 -0
  398. package/components/global-status/GlobalStatusDocs.js +186 -0
  399. package/components/global-status/GlobalStatusDocs.js.map +1 -0
  400. package/components/grid/ItemDocs.d.ts +2 -0
  401. package/components/grid/ItemDocs.js +13 -0
  402. package/components/grid/ItemDocs.js.map +1 -0
  403. package/components/heading/HeadingDocs.d.ts +2 -0
  404. package/components/heading/HeadingDocs.js +73 -0
  405. package/components/heading/HeadingDocs.js.map +1 -0
  406. package/components/help-button/HelpButtonDocs.d.ts +3 -0
  407. package/components/help-button/HelpButtonDocs.js +40 -0
  408. package/components/help-button/HelpButtonDocs.js.map +1 -0
  409. package/components/icon/IconDocs.d.ts +2 -0
  410. package/components/icon/IconDocs.js +53 -0
  411. package/components/icon/IconDocs.js.map +1 -0
  412. package/components/icon/IconPrimaryDocs.d.ts +2 -0
  413. package/components/icon/IconPrimaryDocs.js +18 -0
  414. package/components/icon/IconPrimaryDocs.js.map +1 -0
  415. package/components/info-card/InfoCard.d.ts +6 -1
  416. package/components/info-card/InfoCard.js +4 -3
  417. package/components/info-card/InfoCard.js.map +1 -1
  418. package/components/info-card/InfoCardDocs.js +8 -3
  419. package/components/info-card/InfoCardDocs.js.map +1 -1
  420. package/components/input/Input.d.ts +0 -21
  421. package/components/input/InputDocs.d.ts +1 -0
  422. package/components/input/InputDocs.js +35 -3
  423. package/components/input/InputDocs.js.map +1 -1
  424. package/components/input-masked/InputMasked.d.ts +0 -15
  425. package/components/input-masked/InputMaskedDocs.d.ts +2 -0
  426. package/components/input-masked/InputMaskedDocs.js +69 -0
  427. package/components/input-masked/InputMaskedDocs.js.map +1 -1
  428. package/components/input-masked/MultiInputMaskedDocs.d.ts +4 -0
  429. package/components/input-masked/MultiInputMaskedDocs.js +87 -0
  430. package/components/input-masked/MultiInputMaskedDocs.js.map +1 -0
  431. package/components/input-masked/style/dnb-input-masked.css +9 -0
  432. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  433. package/components/input-masked/style/dnb-input-masked.scss +12 -0
  434. package/components/input-masked/text-mask/InputModeNumber.d.ts +8 -0
  435. package/components/input-masked/text-mask/InputModeNumber.js +32 -9
  436. package/components/input-masked/text-mask/InputModeNumber.js.map +1 -1
  437. package/components/input-masked/text-mask/adjustCaretPosition.d.ts +2 -1
  438. package/components/input-masked/text-mask/adjustCaretPosition.js +3 -2
  439. package/components/input-masked/text-mask/adjustCaretPosition.js.map +1 -1
  440. package/components/input-masked/text-mask/createTextMaskInputElement.js +9 -3
  441. package/components/input-masked/text-mask/createTextMaskInputElement.js.map +1 -1
  442. package/components/modal/ModalDocs.d.ts +3 -0
  443. package/components/modal/ModalDocs.js +185 -0
  444. package/components/modal/ModalDocs.js.map +1 -0
  445. package/components/pagination/Pagination.d.ts +35 -33
  446. package/components/pagination/Pagination.js +2 -0
  447. package/components/pagination/Pagination.js.map +1 -1
  448. package/components/pagination/PaginationDocs.d.ts +3 -0
  449. package/components/pagination/PaginationDocs.js +185 -0
  450. package/components/pagination/PaginationDocs.js.map +1 -0
  451. package/components/pagination/PaginationHelpers.d.ts +0 -3
  452. package/components/pagination/PaginationInfinity.d.ts +0 -3
  453. package/components/pagination/PaginationProvider.js +1 -1
  454. package/components/pagination/PaginationProvider.js.map +1 -1
  455. package/components/radio/Radio.d.ts +12 -15
  456. package/components/radio/RadioDocs.d.ts +5 -0
  457. package/components/radio/RadioDocs.js +139 -0
  458. package/components/radio/RadioDocs.js.map +1 -0
  459. package/components/radio/RadioGroup.d.ts +0 -30
  460. package/components/section/Section.js +1 -6
  461. package/components/section/Section.js.map +1 -1
  462. package/components/section/SectionDocs.js +1 -1
  463. package/components/section/SectionDocs.js.map +1 -1
  464. package/components/skeleton/SkeletonDocs.d.ts +2 -0
  465. package/components/skeleton/SkeletonDocs.js +38 -0
  466. package/components/skeleton/SkeletonDocs.js.map +1 -0
  467. package/components/skeleton/SkeletonHelper.d.ts +0 -6
  468. package/components/skip-content/SkipContentDocs.d.ts +2 -0
  469. package/components/skip-content/SkipContentDocs.js +23 -0
  470. package/components/skip-content/SkipContentDocs.js.map +1 -0
  471. package/components/slider/SliderDocs.js +2 -2
  472. package/components/slider/SliderDocs.js.map +1 -1
  473. package/components/space/SpaceDocs.d.ts +3 -0
  474. package/components/space/SpaceDocs.js +55 -0
  475. package/components/space/SpaceDocs.js.map +1 -0
  476. package/components/switch/SwitchDocs.js +2 -2
  477. package/components/switch/SwitchDocs.js.map +1 -1
  478. package/components/tag/TagDocs.d.ts +4 -0
  479. package/components/tag/TagDocs.js +87 -0
  480. package/components/tag/TagDocs.js.map +1 -0
  481. package/components/textarea/Textarea.d.ts +0 -12
  482. package/components/textarea/TextareaDocs.d.ts +1 -0
  483. package/components/textarea/TextareaDocs.js +25 -3
  484. package/components/textarea/TextareaDocs.js.map +1 -1
  485. package/components/timeline/TimelineDocs.d.ts +3 -0
  486. package/components/timeline/TimelineDocs.js +60 -0
  487. package/components/timeline/TimelineDocs.js.map +1 -0
  488. package/components/toggle-button/ToggleButton.d.ts +0 -3
  489. package/components/toggle-button/ToggleButtonDocs.d.ts +1 -0
  490. package/components/toggle-button/ToggleButtonDocs.js +7 -0
  491. package/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  492. package/components/toggle-button/ToggleButtonGroup.d.ts +0 -3
  493. package/components/toggle-button/ToggleButtonGroupDocs.d.ts +1 -0
  494. package/components/toggle-button/ToggleButtonGroupDocs.js +8 -1
  495. package/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -1
  496. package/components/tooltip/TooltipDocs.d.ts +2 -0
  497. package/components/tooltip/TooltipDocs.js +73 -0
  498. package/components/tooltip/TooltipDocs.js.map +1 -0
  499. package/components/upload/Upload.js +6 -4
  500. package/components/upload/Upload.js.map +1 -1
  501. package/components/upload/UploadDocs.js +5 -0
  502. package/components/upload/UploadDocs.js.map +1 -1
  503. package/components/upload/UploadFileList.js +3 -1
  504. package/components/upload/UploadFileList.js.map +1 -1
  505. package/components/upload/UploadFileListCell.d.ts +6 -1
  506. package/components/upload/UploadFileListCell.js +8 -5
  507. package/components/upload/UploadFileListCell.js.map +1 -1
  508. package/components/upload/types.d.ts +5 -0
  509. package/components/upload/types.js.map +1 -1
  510. package/components/upload/useUpload.d.ts +1 -0
  511. package/components/upload/useUpload.js +7 -1
  512. package/components/upload/useUpload.js.map +1 -1
  513. package/components/visually-hidden/VisuallyHiddenDocs.d.ts +2 -0
  514. package/components/visually-hidden/VisuallyHiddenDocs.js +13 -0
  515. package/components/visually-hidden/VisuallyHiddenDocs.js.map +1 -0
  516. package/es/components/aria-live/AriaLiveDocs.d.ts +2 -0
  517. package/es/components/aria-live/AriaLiveDocs.js +48 -0
  518. package/es/components/aria-live/AriaLiveDocs.js.map +1 -0
  519. package/es/components/autocomplete/AutocompleteDocs.js +3 -3
  520. package/es/components/autocomplete/AutocompleteDocs.js.map +1 -1
  521. package/es/components/avatar/Avatar.d.ts +10 -0
  522. package/es/components/avatar/Avatar.js +12 -3
  523. package/es/components/avatar/Avatar.js.map +1 -1
  524. package/es/components/avatar/AvatarDocs.d.ts +3 -0
  525. package/es/components/avatar/AvatarDocs.js +95 -0
  526. package/es/components/avatar/AvatarDocs.js.map +1 -0
  527. package/es/components/avatar/AvatarGroup.d.ts +10 -0
  528. package/es/components/avatar/AvatarGroup.js +17 -5
  529. package/es/components/avatar/AvatarGroup.js.map +1 -1
  530. package/es/components/avatar/style/dnb-avatar.css +8 -0
  531. package/es/components/avatar/style/dnb-avatar.min.css +1 -1
  532. package/es/components/avatar/style/dnb-avatar.scss +9 -0
  533. package/es/components/avatar/style/themes/dnb-avatar-theme-sbanken.css +5 -5
  534. package/es/components/avatar/style/themes/dnb-avatar-theme-sbanken.min.css +1 -1
  535. package/es/components/avatar/style/themes/dnb-avatar-theme-sbanken.scss +5 -6
  536. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.css +5 -5
  537. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -1
  538. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.scss +5 -5
  539. package/es/components/badge/BadgeDocs.d.ts +2 -0
  540. package/es/components/badge/BadgeDocs.js +48 -0
  541. package/es/components/badge/BadgeDocs.js.map +1 -0
  542. package/es/components/breadcrumb/BreadcrumbDocs.d.ts +5 -0
  543. package/es/components/breadcrumb/BreadcrumbDocs.js +119 -0
  544. package/es/components/breadcrumb/BreadcrumbDocs.js.map +1 -0
  545. package/es/components/button/Button.d.ts +0 -3
  546. package/es/components/button/ButtonDocs.d.ts +1 -0
  547. package/es/components/button/ButtonDocs.js +7 -0
  548. package/es/components/button/ButtonDocs.js.map +1 -1
  549. package/es/components/checkbox/CheckboxDocs.js +2 -2
  550. package/es/components/checkbox/CheckboxDocs.js.map +1 -1
  551. package/es/components/date-picker/DatePickerAddon.js +1 -3
  552. package/es/components/date-picker/DatePickerAddon.js.map +1 -1
  553. package/es/components/date-picker/DatePickerCalc.d.ts +13 -0
  554. package/es/components/date-picker/DatePickerCalc.js +39 -0
  555. package/es/components/date-picker/DatePickerCalc.js.map +1 -1
  556. package/es/components/date-picker/DatePickerCalendar.js +13 -11
  557. package/es/components/date-picker/DatePickerCalendar.js.map +1 -1
  558. package/es/components/date-picker/DatePickerContext.d.ts +1 -1
  559. package/es/components/date-picker/DatePickerContext.js.map +1 -1
  560. package/es/components/date-picker/DatePickerDocs.js +1 -1
  561. package/es/components/date-picker/DatePickerDocs.js.map +1 -1
  562. package/es/components/date-picker/DatePickerInput.js +116 -92
  563. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  564. package/es/components/date-picker/DatePickerProvider.js +2 -2
  565. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  566. package/es/components/date-picker/hooks/useViews.d.ts +2 -4
  567. package/es/components/date-picker/hooks/useViews.js +39 -25
  568. package/es/components/date-picker/hooks/useViews.js.map +1 -1
  569. package/es/components/date-picker/style/dnb-date-picker.css +4 -0
  570. package/es/components/date-picker/style/dnb-date-picker.min.css +1 -1
  571. package/es/components/date-picker/style/dnb-date-picker.scss +3 -0
  572. package/es/components/dialog/DialogDocs.d.ts +1 -0
  573. package/es/components/dialog/DialogDocs.js +19 -2
  574. package/es/components/dialog/DialogDocs.js.map +1 -1
  575. package/es/components/drawer/DrawerDocs.d.ts +2 -0
  576. package/es/components/drawer/DrawerDocs.js +63 -0
  577. package/es/components/drawer/DrawerDocs.js.map +1 -0
  578. package/es/components/dropdown/Dropdown.d.ts +20 -20
  579. package/es/components/dropdown/DropdownDocs.d.ts +3 -0
  580. package/es/components/dropdown/DropdownDocs.js +180 -0
  581. package/es/components/dropdown/DropdownDocs.js.map +1 -0
  582. package/es/components/flex/ContainerDocs.js +1 -1
  583. package/es/components/flex/ContainerDocs.js.map +1 -1
  584. package/es/components/flex/ItemDocs.d.ts +2 -0
  585. package/es/components/flex/ItemDocs.js +33 -0
  586. package/es/components/flex/ItemDocs.js.map +1 -0
  587. package/es/components/form-label/FormLabelDocs.d.ts +2 -0
  588. package/es/components/form-label/FormLabelDocs.js +53 -0
  589. package/es/components/form-label/FormLabelDocs.js.map +1 -0
  590. package/es/components/form-row/FormRow.d.ts +45 -0
  591. package/es/components/form-row/FormRowDocs.d.ts +2 -0
  592. package/es/components/form-row/FormRowDocs.js +83 -0
  593. package/es/components/form-row/FormRowDocs.js.map +1 -0
  594. package/es/components/form-set/FormSet.d.ts +18 -0
  595. package/es/components/form-set/FormSetDocs.d.ts +3 -0
  596. package/es/components/form-set/FormSetDocs.js +50 -0
  597. package/es/components/form-set/FormSetDocs.js.map +1 -0
  598. package/es/components/form-status/FormStatus.d.ts +18 -18
  599. package/es/components/form-status/FormStatusDocs.d.ts +2 -0
  600. package/es/components/form-status/FormStatusDocs.js +83 -0
  601. package/es/components/form-status/FormStatusDocs.js.map +1 -0
  602. package/es/components/global-error/GlobalError.d.ts +12 -0
  603. package/es/components/global-error/GlobalError.js +14 -6
  604. package/es/components/global-error/GlobalError.js.map +1 -1
  605. package/es/components/global-error/GlobalErrorDocs.js +14 -4
  606. package/es/components/global-error/GlobalErrorDocs.js.map +1 -1
  607. package/es/components/global-status/GlobalStatus.d.ts +37 -58
  608. package/es/components/global-status/GlobalStatusController.d.ts +0 -9
  609. package/es/components/global-status/GlobalStatusDocs.d.ts +6 -0
  610. package/es/components/global-status/GlobalStatusDocs.js +186 -0
  611. package/es/components/global-status/GlobalStatusDocs.js.map +1 -0
  612. package/es/components/grid/ItemDocs.d.ts +2 -0
  613. package/es/components/grid/ItemDocs.js +13 -0
  614. package/es/components/grid/ItemDocs.js.map +1 -0
  615. package/es/components/heading/HeadingDocs.d.ts +2 -0
  616. package/es/components/heading/HeadingDocs.js +73 -0
  617. package/es/components/heading/HeadingDocs.js.map +1 -0
  618. package/es/components/help-button/HelpButtonDocs.d.ts +3 -0
  619. package/es/components/help-button/HelpButtonDocs.js +40 -0
  620. package/es/components/help-button/HelpButtonDocs.js.map +1 -0
  621. package/es/components/icon/IconDocs.d.ts +2 -0
  622. package/es/components/icon/IconDocs.js +53 -0
  623. package/es/components/icon/IconDocs.js.map +1 -0
  624. package/es/components/icon/IconPrimaryDocs.d.ts +2 -0
  625. package/es/components/icon/IconPrimaryDocs.js +18 -0
  626. package/es/components/icon/IconPrimaryDocs.js.map +1 -0
  627. package/es/components/info-card/InfoCard.d.ts +6 -1
  628. package/es/components/info-card/InfoCard.js +4 -3
  629. package/es/components/info-card/InfoCard.js.map +1 -1
  630. package/es/components/info-card/InfoCardDocs.js +8 -3
  631. package/es/components/info-card/InfoCardDocs.js.map +1 -1
  632. package/es/components/input/Input.d.ts +0 -21
  633. package/es/components/input/InputDocs.d.ts +1 -0
  634. package/es/components/input/InputDocs.js +35 -3
  635. package/es/components/input/InputDocs.js.map +1 -1
  636. package/es/components/input-masked/InputMasked.d.ts +0 -15
  637. package/es/components/input-masked/InputMaskedDocs.d.ts +2 -0
  638. package/es/components/input-masked/InputMaskedDocs.js +69 -0
  639. package/es/components/input-masked/InputMaskedDocs.js.map +1 -1
  640. package/es/components/input-masked/MultiInputMaskedDocs.d.ts +4 -0
  641. package/es/components/input-masked/MultiInputMaskedDocs.js +87 -0
  642. package/es/components/input-masked/MultiInputMaskedDocs.js.map +1 -0
  643. package/es/components/input-masked/style/dnb-input-masked.css +9 -0
  644. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  645. package/es/components/input-masked/style/dnb-input-masked.scss +12 -0
  646. package/es/components/input-masked/text-mask/InputModeNumber.d.ts +8 -0
  647. package/es/components/input-masked/text-mask/InputModeNumber.js +39 -9
  648. package/es/components/input-masked/text-mask/InputModeNumber.js.map +1 -1
  649. package/es/components/input-masked/text-mask/adjustCaretPosition.d.ts +2 -1
  650. package/es/components/input-masked/text-mask/adjustCaretPosition.js +3 -2
  651. package/es/components/input-masked/text-mask/adjustCaretPosition.js.map +1 -1
  652. package/es/components/input-masked/text-mask/createTextMaskInputElement.js +9 -3
  653. package/es/components/input-masked/text-mask/createTextMaskInputElement.js.map +1 -1
  654. package/es/components/modal/ModalDocs.d.ts +3 -0
  655. package/es/components/modal/ModalDocs.js +185 -0
  656. package/es/components/modal/ModalDocs.js.map +1 -0
  657. package/es/components/pagination/Pagination.d.ts +35 -33
  658. package/es/components/pagination/Pagination.js +2 -0
  659. package/es/components/pagination/Pagination.js.map +1 -1
  660. package/es/components/pagination/PaginationDocs.d.ts +3 -0
  661. package/es/components/pagination/PaginationDocs.js +185 -0
  662. package/es/components/pagination/PaginationDocs.js.map +1 -0
  663. package/es/components/pagination/PaginationHelpers.d.ts +0 -3
  664. package/es/components/pagination/PaginationInfinity.d.ts +0 -3
  665. package/es/components/pagination/PaginationProvider.js +1 -1
  666. package/es/components/pagination/PaginationProvider.js.map +1 -1
  667. package/es/components/radio/Radio.d.ts +12 -15
  668. package/es/components/radio/RadioDocs.d.ts +5 -0
  669. package/es/components/radio/RadioDocs.js +139 -0
  670. package/es/components/radio/RadioDocs.js.map +1 -0
  671. package/es/components/radio/RadioGroup.d.ts +0 -30
  672. package/es/components/section/Section.js +1 -6
  673. package/es/components/section/Section.js.map +1 -1
  674. package/es/components/section/SectionDocs.js +1 -1
  675. package/es/components/section/SectionDocs.js.map +1 -1
  676. package/es/components/skeleton/SkeletonDocs.d.ts +2 -0
  677. package/es/components/skeleton/SkeletonDocs.js +38 -0
  678. package/es/components/skeleton/SkeletonDocs.js.map +1 -0
  679. package/es/components/skeleton/SkeletonHelper.d.ts +0 -6
  680. package/es/components/skip-content/SkipContentDocs.d.ts +2 -0
  681. package/es/components/skip-content/SkipContentDocs.js +23 -0
  682. package/es/components/skip-content/SkipContentDocs.js.map +1 -0
  683. package/es/components/slider/SliderDocs.js +2 -2
  684. package/es/components/slider/SliderDocs.js.map +1 -1
  685. package/es/components/space/SpaceDocs.d.ts +3 -0
  686. package/es/components/space/SpaceDocs.js +55 -0
  687. package/es/components/space/SpaceDocs.js.map +1 -0
  688. package/es/components/switch/SwitchDocs.js +2 -2
  689. package/es/components/switch/SwitchDocs.js.map +1 -1
  690. package/es/components/tag/TagDocs.d.ts +4 -0
  691. package/es/components/tag/TagDocs.js +87 -0
  692. package/es/components/tag/TagDocs.js.map +1 -0
  693. package/es/components/textarea/Textarea.d.ts +0 -12
  694. package/es/components/textarea/TextareaDocs.d.ts +1 -0
  695. package/es/components/textarea/TextareaDocs.js +25 -3
  696. package/es/components/textarea/TextareaDocs.js.map +1 -1
  697. package/es/components/timeline/TimelineDocs.d.ts +3 -0
  698. package/es/components/timeline/TimelineDocs.js +60 -0
  699. package/es/components/timeline/TimelineDocs.js.map +1 -0
  700. package/es/components/toggle-button/ToggleButton.d.ts +0 -3
  701. package/es/components/toggle-button/ToggleButtonDocs.d.ts +1 -0
  702. package/es/components/toggle-button/ToggleButtonDocs.js +7 -0
  703. package/es/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  704. package/es/components/toggle-button/ToggleButtonGroup.d.ts +0 -3
  705. package/es/components/toggle-button/ToggleButtonGroupDocs.d.ts +1 -0
  706. package/es/components/toggle-button/ToggleButtonGroupDocs.js +8 -1
  707. package/es/components/toggle-button/ToggleButtonGroupDocs.js.map +1 -1
  708. package/es/components/tooltip/TooltipDocs.d.ts +2 -0
  709. package/es/components/tooltip/TooltipDocs.js +73 -0
  710. package/es/components/tooltip/TooltipDocs.js.map +1 -0
  711. package/es/components/upload/Upload.js +6 -4
  712. package/es/components/upload/Upload.js.map +1 -1
  713. package/es/components/upload/UploadDocs.js +5 -0
  714. package/es/components/upload/UploadDocs.js.map +1 -1
  715. package/es/components/upload/UploadFileList.js +3 -1
  716. package/es/components/upload/UploadFileList.js.map +1 -1
  717. package/es/components/upload/UploadFileListCell.d.ts +6 -1
  718. package/es/components/upload/UploadFileListCell.js +8 -5
  719. package/es/components/upload/UploadFileListCell.js.map +1 -1
  720. package/es/components/upload/types.d.ts +5 -0
  721. package/es/components/upload/types.js.map +1 -1
  722. package/es/components/upload/useUpload.d.ts +1 -0
  723. package/es/components/upload/useUpload.js +7 -1
  724. package/es/components/upload/useUpload.js.map +1 -1
  725. package/es/components/visually-hidden/VisuallyHiddenDocs.d.ts +2 -0
  726. package/es/components/visually-hidden/VisuallyHiddenDocs.js +13 -0
  727. package/es/components/visually-hidden/VisuallyHiddenDocs.js.map +1 -0
  728. package/es/extensions/forms/DataContext/At/AtDocs.d.ts +2 -0
  729. package/es/extensions/forms/DataContext/At/AtDocs.js +18 -0
  730. package/es/extensions/forms/DataContext/At/AtDocs.js.map +1 -0
  731. package/es/extensions/forms/DataContext/Context.d.ts +6 -5
  732. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  733. package/es/extensions/forms/DataContext/Provider/Provider.js +28 -34
  734. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  735. package/es/extensions/forms/Field/Date/Date.d.ts +1 -0
  736. package/es/extensions/forms/Field/Date/Date.js +2 -3
  737. package/es/extensions/forms/Field/Date/Date.js.map +1 -1
  738. package/es/extensions/forms/Field/Password/Password.js +2 -1
  739. package/es/extensions/forms/Field/Password/Password.js.map +1 -1
  740. package/es/extensions/forms/Field/Password/PasswordDocs.d.ts +1 -0
  741. package/es/extensions/forms/Field/Password/PasswordDocs.js +13 -1
  742. package/es/extensions/forms/Field/Password/PasswordDocs.js.map +1 -1
  743. package/es/extensions/forms/Field/Provider/useFieldProvider.d.ts +9 -3
  744. package/es/extensions/forms/Field/String/StringDocs.js +1 -1
  745. package/es/extensions/forms/Field/String/StringDocs.js.map +1 -1
  746. package/es/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  747. package/es/extensions/forms/Field/Upload/Upload.js +10 -2
  748. package/es/extensions/forms/Field/Upload/Upload.js.map +1 -1
  749. package/es/extensions/forms/Form/ButtonRow/ButtonRowDocs.d.ts +2 -0
  750. package/es/extensions/forms/Form/ButtonRow/ButtonRowDocs.js +13 -0
  751. package/es/extensions/forms/Form/ButtonRow/ButtonRowDocs.js.map +1 -0
  752. package/es/extensions/forms/Form/Isolation/IsolationDocs.js +1 -1
  753. package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  754. package/es/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js +4 -4
  755. package/es/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js.map +1 -1
  756. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  757. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  758. package/es/extensions/forms/Form/Visibility/useVisibility.js +10 -14
  759. package/es/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  760. package/es/extensions/forms/Value/Date/Date.d.ts +0 -6
  761. package/es/extensions/forms/Value/Date/Date.js +13 -34
  762. package/es/extensions/forms/Value/Date/Date.js.map +1 -1
  763. package/es/extensions/forms/Wizard/Buttons/ButtonsDocs.d.ts +2 -0
  764. package/es/extensions/forms/Wizard/Buttons/ButtonsDocs.js +8 -0
  765. package/es/extensions/forms/Wizard/Buttons/ButtonsDocs.js.map +1 -0
  766. package/es/extensions/forms/Wizard/Container/WizardContainer.js +2 -2
  767. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  768. package/es/extensions/forms/hooks/useFieldProps.js +8 -5
  769. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  770. package/es/extensions/payment-card/PaymentCard.d.ts +7 -7
  771. package/es/extensions/payment-card/PaymentCardDocs.d.ts +5 -0
  772. package/es/extensions/payment-card/PaymentCardDocs.js +199 -0
  773. package/es/extensions/payment-card/PaymentCardDocs.js.map +1 -0
  774. package/es/fragments/scroll-view/ScrollViewDocs.d.ts +2 -0
  775. package/es/fragments/scroll-view/ScrollViewDocs.js +13 -0
  776. package/es/fragments/scroll-view/ScrollViewDocs.js.map +1 -0
  777. package/es/fragments/text-counter/TextCounterDocs.d.ts +2 -0
  778. package/es/fragments/text-counter/TextCounterDocs.js +23 -0
  779. package/es/fragments/text-counter/TextCounterDocs.js.map +1 -0
  780. package/es/shared/Eufemia.d.ts +1 -1
  781. package/es/shared/Eufemia.js +2 -2
  782. package/es/shared/Eufemia.js.map +1 -1
  783. package/es/shared/MediaQueryDocs.d.ts +2 -0
  784. package/es/shared/MediaQueryDocs.js +28 -0
  785. package/es/shared/MediaQueryDocs.js.map +1 -0
  786. package/es/shared/ThemeDocs.d.ts +2 -0
  787. package/es/shared/ThemeDocs.js +33 -0
  788. package/es/shared/ThemeDocs.js.map +1 -0
  789. package/es/shared/helpers.d.ts +1 -0
  790. package/es/shared/helpers.js +6 -0
  791. package/es/shared/helpers.js.map +1 -1
  792. package/es/shared/locales/en-GB.d.ts +1 -0
  793. package/es/shared/locales/en-GB.js +1 -0
  794. package/es/shared/locales/en-GB.js.map +1 -1
  795. package/es/shared/locales/en-US.d.ts +1 -0
  796. package/es/shared/locales/index.d.ts +2 -0
  797. package/es/shared/locales/nb-NO.d.ts +1 -0
  798. package/es/shared/locales/nb-NO.js +1 -0
  799. package/es/shared/locales/nb-NO.js.map +1 -1
  800. package/es/shared/locales/sv-SE.d.ts +1 -0
  801. package/es/shared/locales/sv-SE.js +3 -2
  802. package/es/shared/locales/sv-SE.js.map +1 -1
  803. package/es/style/core/scopes.scss +1 -1
  804. package/es/style/dnb-ui-basis.css +1 -1
  805. package/es/style/dnb-ui-basis.min.css +1 -1
  806. package/es/style/dnb-ui-body.css +1 -1
  807. package/es/style/dnb-ui-body.min.css +1 -1
  808. package/es/style/dnb-ui-components.css +21 -0
  809. package/es/style/dnb-ui-components.min.css +1 -1
  810. package/es/style/dnb-ui-core.css +1 -1
  811. package/es/style/dnb-ui-core.min.css +1 -1
  812. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +26 -5
  813. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  814. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +26 -5
  815. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  816. package/es/style/themes/theme-ui/ui-theme-components.css +26 -5
  817. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  818. package/esm/dnb-ui-basis.min.mjs +1 -1
  819. package/esm/dnb-ui-components.min.mjs +1 -1
  820. package/esm/dnb-ui-elements.min.mjs +1 -1
  821. package/esm/dnb-ui-extensions.min.mjs +1 -1
  822. package/esm/dnb-ui-lib.min.mjs +1 -1
  823. package/extensions/forms/DataContext/At/AtDocs.d.ts +2 -0
  824. package/extensions/forms/DataContext/At/AtDocs.js +18 -0
  825. package/extensions/forms/DataContext/At/AtDocs.js.map +1 -0
  826. package/extensions/forms/DataContext/Context.d.ts +6 -5
  827. package/extensions/forms/DataContext/Context.js.map +1 -1
  828. package/extensions/forms/DataContext/Provider/Provider.js +29 -35
  829. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  830. package/extensions/forms/Field/Date/Date.d.ts +1 -0
  831. package/extensions/forms/Field/Date/Date.js +2 -3
  832. package/extensions/forms/Field/Date/Date.js.map +1 -1
  833. package/extensions/forms/Field/Password/Password.js +2 -1
  834. package/extensions/forms/Field/Password/Password.js.map +1 -1
  835. package/extensions/forms/Field/Password/PasswordDocs.d.ts +1 -0
  836. package/extensions/forms/Field/Password/PasswordDocs.js +13 -1
  837. package/extensions/forms/Field/Password/PasswordDocs.js.map +1 -1
  838. package/extensions/forms/Field/Provider/useFieldProvider.d.ts +9 -3
  839. package/extensions/forms/Field/String/StringDocs.js +1 -1
  840. package/extensions/forms/Field/String/StringDocs.js.map +1 -1
  841. package/extensions/forms/Field/Upload/Upload.d.ts +1 -1
  842. package/extensions/forms/Field/Upload/Upload.js +10 -2
  843. package/extensions/forms/Field/Upload/Upload.js.map +1 -1
  844. package/extensions/forms/Form/ButtonRow/ButtonRowDocs.d.ts +2 -0
  845. package/extensions/forms/Form/ButtonRow/ButtonRowDocs.js +13 -0
  846. package/extensions/forms/Form/ButtonRow/ButtonRowDocs.js.map +1 -0
  847. package/extensions/forms/Form/Isolation/IsolationDocs.js +1 -1
  848. package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -1
  849. package/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js +4 -4
  850. package/extensions/forms/Form/SubmitConfirmation/SubmitConfirmation.js.map +1 -1
  851. package/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  852. package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  853. package/extensions/forms/Form/Visibility/useVisibility.js +10 -14
  854. package/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  855. package/extensions/forms/Value/Date/Date.d.ts +0 -6
  856. package/extensions/forms/Value/Date/Date.js +14 -36
  857. package/extensions/forms/Value/Date/Date.js.map +1 -1
  858. package/extensions/forms/Wizard/Buttons/ButtonsDocs.d.ts +2 -0
  859. package/extensions/forms/Wizard/Buttons/ButtonsDocs.js +8 -0
  860. package/extensions/forms/Wizard/Buttons/ButtonsDocs.js.map +1 -0
  861. package/extensions/forms/Wizard/Container/WizardContainer.js +2 -2
  862. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  863. package/extensions/forms/hooks/useFieldProps.js +8 -5
  864. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  865. package/extensions/payment-card/PaymentCard.d.ts +7 -7
  866. package/extensions/payment-card/PaymentCardDocs.d.ts +5 -0
  867. package/extensions/payment-card/PaymentCardDocs.js +199 -0
  868. package/extensions/payment-card/PaymentCardDocs.js.map +1 -0
  869. package/fragments/scroll-view/ScrollViewDocs.d.ts +2 -0
  870. package/fragments/scroll-view/ScrollViewDocs.js +13 -0
  871. package/fragments/scroll-view/ScrollViewDocs.js.map +1 -0
  872. package/fragments/text-counter/TextCounterDocs.d.ts +2 -0
  873. package/fragments/text-counter/TextCounterDocs.js +23 -0
  874. package/fragments/text-counter/TextCounterDocs.js.map +1 -0
  875. package/package.json +1 -1
  876. package/shared/Eufemia.d.ts +1 -1
  877. package/shared/Eufemia.js +2 -2
  878. package/shared/Eufemia.js.map +1 -1
  879. package/shared/MediaQueryDocs.d.ts +2 -0
  880. package/shared/MediaQueryDocs.js +28 -0
  881. package/shared/MediaQueryDocs.js.map +1 -0
  882. package/shared/ThemeDocs.d.ts +2 -0
  883. package/shared/ThemeDocs.js +33 -0
  884. package/shared/ThemeDocs.js.map +1 -0
  885. package/shared/helpers.d.ts +1 -0
  886. package/shared/helpers.js +6 -0
  887. package/shared/helpers.js.map +1 -1
  888. package/shared/locales/en-GB.d.ts +1 -0
  889. package/shared/locales/en-GB.js +1 -0
  890. package/shared/locales/en-GB.js.map +1 -1
  891. package/shared/locales/en-US.d.ts +1 -0
  892. package/shared/locales/index.d.ts +2 -0
  893. package/shared/locales/nb-NO.d.ts +1 -0
  894. package/shared/locales/nb-NO.js +1 -0
  895. package/shared/locales/nb-NO.js.map +1 -1
  896. package/shared/locales/sv-SE.d.ts +1 -0
  897. package/shared/locales/sv-SE.js +3 -2
  898. package/shared/locales/sv-SE.js.map +1 -1
  899. package/style/core/scopes.scss +1 -1
  900. package/style/dnb-ui-basis.css +1 -1
  901. package/style/dnb-ui-basis.min.css +1 -1
  902. package/style/dnb-ui-body.css +1 -1
  903. package/style/dnb-ui-body.min.css +1 -1
  904. package/style/dnb-ui-components.css +21 -0
  905. package/style/dnb-ui-components.min.css +1 -1
  906. package/style/dnb-ui-core.css +1 -1
  907. package/style/dnb-ui-core.min.css +1 -1
  908. package/style/themes/theme-eiendom/eiendom-theme-components.css +26 -5
  909. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  910. package/style/themes/theme-sbanken/sbanken-theme-components.css +26 -5
  911. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  912. package/style/themes/theme-ui/ui-theme-components.css +26 -5
  913. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  914. package/umd/dnb-ui-basis.min.js +1 -1
  915. package/umd/dnb-ui-components.min.js +1 -1
  916. package/umd/dnb-ui-elements.min.js +1 -1
  917. package/umd/dnb-ui-extensions.min.js +1 -1
  918. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.js","names":["React","useCallback","classnames","createSpacingClasses","Provider","Context","extendPropsWithContext","makeUniqueId","useId","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","idProp","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","validFiles","slice","createElement","value","_objectSpread","_UploadInfo","_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'\nimport useId from '../../shared/helpers/useId'\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: idProp,\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 id = useId(idProp)\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 >\n <UploadInfo />\n\n <UploadFileInput {...props} />\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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","ignoreList":[]}
1
+ {"version":3,"file":"Upload.js","names":["React","useCallback","classnames","createSpacingClasses","Provider","Context","extendPropsWithContext","makeUniqueId","useId","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","idProp","className","acceptedFileTypes","fileMaxSize","onChange","onFileDelete","onFileClick","download","allowDuplicates","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","filesToVerify","filter","verifiedFiles","validFiles","slice","createElement","value","_objectSpread","_UploadInfo","_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'\nimport useId from '../../shared/helpers/useId'\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: idProp,\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 allowDuplicates, // 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 id = useId(idProp)\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 =\n fileItem.exists && !allowDuplicates\n ? existingFile.id\n : makeUniqueId()\n\n return fileItem\n }),\n ]\n\n const filesToVerify = allowDuplicates\n ? mergedFiles\n : mergedFiles.filter(({ exists }) => !exists)\n\n const verifiedFiles = verifyFiles(filesToVerify, {\n fileMaxSize,\n acceptedFileTypes,\n errorUnsupportedFile,\n errorLargeFile,\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 >\n <UploadInfo />\n\n <UploadFileInput {...props} />\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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","ignoreList":[]}
@@ -34,6 +34,11 @@ export const UploadProperties = {
34
34
  type: 'boolean',
35
35
  status: 'optional'
36
36
  },
37
+ allowDuplicates: {
38
+ doc: 'Allows uploading of duplicate files. Defaults to `false`.',
39
+ type: 'boolean',
40
+ status: 'optional'
41
+ },
37
42
  skeleton: {
38
43
  doc: 'Skeleton should be applied when loading content.',
39
44
  type: 'boolean',
@@ -1 +1 @@
1
- {"version":3,"file":"UploadDocs.js","names":["UploadProperties","id","doc","type","status","acceptedFileTypes","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 id: {\n doc: 'Unique id used with the useUpload hook to manage the files. Needed when wanting to connect with the useUpload hook.',\n type: ['string', 'Function', 'Object', 'React.Context'],\n status: 'optional',\n },\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,EAAE,EAAE;IACFC,GAAG,EAAE,qHAAqH;IAC1HC,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC;IACvDC,MAAM,EAAE;EACV,CAAC;EACDC,iBAAiB,EAAE;IACjBH,GAAG,EAAE,oXAAoX;IACzXC,IAAI,EAAE,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAClDC,MAAM,EAAE;EACV,CAAC;EACDE,gBAAgB,EAAE;IAChBJ,GAAG,EAAE,8EAA8E;IACnFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,WAAW,EAAE;IACXL,GAAG,EAAE,uGAAuG;IAC5GC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDI,KAAK,EAAE;IACLN,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,IAAI,EAAE;IACJP,GAAG,EAAE,iFAAiF;IACtFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDM,QAAQ,EAAE;IACRR,GAAG,EAAE,2IAA2I;IAChJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDO,QAAQ,EAAE;IACRT,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,MAAMQ,0BAAgD,GAAG;EAC9DC,QAAQ,EAAE;IACRX,GAAG,EAAE,qCAAqC;IAC1CC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,WAAW,EAAE;IACXL,GAAG,EAAE,6OAA6O;IAClPC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMU,YAAkC,GAAG;EAChDC,QAAQ,EAAE;IACRb,GAAG,EAAE,uHAAuH;IAC5HC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDY,YAAY,EAAE;IACZd,GAAG,EAAE,mGAAmG;IACxGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDa,WAAW,EAAE;IACXf,GAAG,EAAE,sGAAsG;IAC3GC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"UploadDocs.js","names":["UploadProperties","id","doc","type","status","acceptedFileTypes","filesAmountLimit","fileMaxSize","title","text","download","allowDuplicates","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 id: {\n doc: 'Unique id used with the useUpload hook to manage the files. Needed when wanting to connect with the useUpload hook.',\n type: ['string', 'Function', 'Object', 'React.Context'],\n status: 'optional',\n },\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 allowDuplicates: {\n doc: 'Allows uploading of duplicate files. 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,EAAE,EAAE;IACFC,GAAG,EAAE,qHAAqH;IAC1HC,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC;IACvDC,MAAM,EAAE;EACV,CAAC;EACDC,iBAAiB,EAAE;IACjBH,GAAG,EAAE,oXAAoX;IACzXC,IAAI,EAAE,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAClDC,MAAM,EAAE;EACV,CAAC;EACDE,gBAAgB,EAAE;IAChBJ,GAAG,EAAE,8EAA8E;IACnFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,WAAW,EAAE;IACXL,GAAG,EAAE,uGAAuG;IAC5GC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV,CAAC;EACDI,KAAK,EAAE;IACLN,GAAG,EAAE,kFAAkF;IACvFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,IAAI,EAAE;IACJP,GAAG,EAAE,iFAAiF;IACtFC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDM,QAAQ,EAAE;IACRR,GAAG,EAAE,2IAA2I;IAChJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDO,eAAe,EAAE;IACfT,GAAG,EAAE,2DAA2D;IAChEC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDQ,QAAQ,EAAE;IACRV,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,MAAMS,0BAAgD,GAAG;EAC9DC,QAAQ,EAAE;IACRZ,GAAG,EAAE,qCAAqC;IAC1CC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,WAAW,EAAE;IACXL,GAAG,EAAE,6OAA6O;IAClPC,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;IACzBC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMW,YAAkC,GAAG;EAChDC,QAAQ,EAAE;IACRd,GAAG,EAAE,uHAAuH;IAC5HC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDa,YAAY,EAAE;IACZf,GAAG,EAAE,mGAAmG;IACxGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDc,WAAW,EAAE;IACXhB,GAAG,EAAE,sGAAsG;IAC3GC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -15,6 +15,7 @@ function UploadFileList() {
15
15
  fileListAriaLabel,
16
16
  deleteButton,
17
17
  download,
18
+ allowDuplicates,
18
19
  loadingText,
19
20
  onFileDelete,
20
21
  onFileClick,
@@ -116,7 +117,8 @@ function UploadFileList() {
116
117
  onClick: onFileClick && onFileClickHandler,
117
118
  deleteButtonText: deleteButton,
118
119
  loadingText: loadingText,
119
- download: download
120
+ download: download,
121
+ allowDuplicates: allowDuplicates
120
122
  });
121
123
  }));
122
124
  }
@@ -1 +1 @@
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","idIsSame","fileIsSame","_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: UploadFile) => {\n const idIsSame =\n fileListElement.id && fileListElement.id === fileToBeUpdated.id\n\n const fileIsSame =\n fileListElement.file &&\n fileListElement.file === fileToBeUpdated.file\n\n return idIsSame || fileIsSame\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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","ignoreList":[]}
1
+ {"version":3,"file":"UploadFileList.js","names":["React","useEffect","useRef","UploadContext","UploadFileListCell","useUpload","isAsync","UploadFileList","context","useContext","id","fileListAriaLabel","deleteButton","download","allowDuplicates","loadingText","onFileDelete","onFileClick","onChange","files","setFiles","setInternalFiles","filesRef","current","length","removeFile","fileToBeRemoved","filter","fileListElement","file","updateFile","fileToBeUpdated","props","map","idIsSame","fileIsSame","_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 allowDuplicates,\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: UploadFile) => {\n const idIsSame =\n fileListElement.id && fileListElement.id === fileToBeUpdated.id\n\n const fileIsSame =\n fileListElement.file &&\n fileListElement.file === fileToBeUpdated.file\n\n return idIsSame || fileIsSame\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 allowDuplicates={allowDuplicates}\n />\n )\n })}\n </ul>\n )\n}\n\nexport default UploadFileList\n"],"mappings":"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","ignoreList":[]}
@@ -34,13 +34,18 @@ export type UploadFileListCellProps = {
34
34
  * Default: false
35
35
  */
36
36
  download?: boolean;
37
+ /**
38
+ * Allows uploading of duplicate files.
39
+ * Default: false
40
+ */
41
+ allowDuplicates?: boolean;
37
42
  /**
38
43
  * Text
39
44
  */
40
45
  loadingText: React.ReactNode;
41
46
  deleteButtonText: React.ReactNode;
42
47
  };
43
- declare const UploadFileListCell: ({ id, uploadFile, onDelete, onClick, loadingText, deleteButtonText, download, }: UploadFileListCellProps) => import("react/jsx-runtime").JSX.Element;
48
+ declare const UploadFileListCell: ({ id, uploadFile, onDelete, onClick, loadingText, deleteButtonText, download, allowDuplicates, }: UploadFileListCellProps) => import("react/jsx-runtime").JSX.Element;
44
49
  export default UploadFileListCell;
45
50
  export declare function getFileIcon(file: File, loading?: {
46
51
  isLoading: UploadFile['isLoading'];
@@ -9,7 +9,7 @@ import FormStatus from '../../components/FormStatus';
9
9
  import ProgressIndicator from '../../components/progress-indicator';
10
10
  import { trash as TrashIcon, exclamation_medium as ExclamationIcon, file_png_medium as png, file_jpg_medium as jpg, file_word_medium as doc, file_pdf_medium as pdf, file_xls_medium as xls, file_ppt_medium as ppt, file_csv_medium as csv, file_txt_medium as txt, file_xml_medium as xml, file_medium as file } from '../../icons';
11
11
  import { getPreviousSibling } from '../../shared/component-helper';
12
- import useUpload from './useUpload';
12
+ import useUpload, { isFileEqual } from './useUpload';
13
13
  import { getFileTypeFromExtension } from './UploadVerify';
14
14
  import UploadFileLink from './UploadFileListLink';
15
15
  export const fileExtensionImages = {
@@ -33,7 +33,8 @@ const UploadFileListCell = ({
33
33
  onClick,
34
34
  loadingText,
35
35
  deleteButtonText,
36
- download
36
+ download,
37
+ allowDuplicates
37
38
  }) => {
38
39
  var _div, _FormStatus;
39
40
  const {
@@ -45,6 +46,7 @@ const UploadFileListCell = ({
45
46
  const imageUrl = (file === null || file === void 0 ? void 0 : file.size) > 0 ? URL.createObjectURL(file) : null;
46
47
  const cellRef = useRef();
47
48
  const exists = useExistsHighlight(id, file);
49
+ const isDuplicate = !allowDuplicates && exists;
48
50
  const handleDisappearFocus = useCallback(() => {
49
51
  var _getPreviousSibling;
50
52
  const cellElement = cellRef.current;
@@ -58,7 +60,7 @@ const UploadFileListCell = ({
58
60
  onDelete();
59
61
  }, [handleDisappearFocus, onDelete]);
60
62
  return React.createElement("li", {
61
- className: classnames('dnb-upload__file-cell', hasWarning && 'dnb-upload__file-cell--warning', exists && 'dnb-upload__file-cell--highlight'),
63
+ className: classnames('dnb-upload__file-cell', hasWarning && 'dnb-upload__file-cell--warning', isDuplicate && 'dnb-upload__file-cell--highlight'),
62
64
  ref: cellRef
63
65
  }, React.createElement("div", {
64
66
  className: "dnb-upload__file-cell__content"
@@ -82,7 +84,8 @@ const UploadFileListCell = ({
82
84
  text: file.name,
83
85
  href: imageUrl,
84
86
  download: download,
85
- onClick: onClick
87
+ onClick: onClick,
88
+ bottom: 0
86
89
  }));
87
90
  }
88
91
  function getWarning() {
@@ -108,7 +111,7 @@ function useExistsHighlight(id, file) {
108
111
  exists,
109
112
  file: f
110
113
  }) => {
111
- return exists && f.name === file.name && f.size === file.size;
114
+ return exists && isFileEqual(file, f);
112
115
  });
113
116
  if (exists) {
114
117
  updateExists(true);
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFileListCell.js","names":["React","useCallback","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","useUpload","getFileTypeFromExtension","UploadFileLink","fileExtensionImages","docx","odt","UploadFileListCell","id","uploadFile","onDelete","onClick","loadingText","deleteButtonText","download","_div","_FormStatus","errorMessage","isLoading","hasWarning","imageUrl","size","URL","createObjectURL","cellRef","exists","useExistsHighlight","handleDisappearFocus","_getPreviousSibling","cellElement","current","focusElement","querySelector","focus","preventScroll","onDeleteHandler","createElement","className","ref","getFileIcon","getTitle","icon","variant","icon_position","disabled","getWarning","text","name","href","top","stretch","internalFiles","updateExists","useState","timerRef","clearTimers","clearTimeout","useEffect","some","f","setTimeout","loading","_loading$size","_Icon","iconFileType","mimeParts","type","split","Object","prototype","hasOwnProperty","call"],"sources":["../../../../src/components/upload/UploadFileListCell.tsx"],"sourcesContent":["import React, { useCallback, 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 } from '../../shared/component-helper'\nimport useUpload from './useUpload'\nimport { getFileTypeFromExtension } from './UploadVerify'\nimport UploadFileLink from './UploadFileListLink'\nimport { ProgressIndicatorAllProps } from '../progress-indicator/types'\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 imageUrl = file?.size > 0 ? URL.createObjectURL(file) : null\n const cellRef = useRef<HTMLLIElement>()\n const exists = useExistsHighlight(id, file)\n\n const handleDisappearFocus = useCallback(() => {\n const cellElement = cellRef.current\n const focusElement = getPreviousSibling(\n '.dnb-upload',\n cellElement\n )?.querySelector('.dnb-upload__file-input-button') as HTMLButtonElement\n focusElement?.focus({ preventScroll: true })\n }, [cellRef])\n\n const onDeleteHandler = useCallback(() => {\n handleDisappearFocus()\n\n onDelete()\n }, [handleDisappearFocus, onDelete])\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 {getFileIcon(file, { isLoading }, hasWarning)}\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 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\nexport function getFileIcon(\n file: File,\n loading?: {\n isLoading: UploadFile['isLoading']\n size?: ProgressIndicatorAllProps['size']\n },\n hasWarning?: boolean\n) {\n if (loading?.isLoading) {\n return <ProgressIndicator size={loading?.size ?? 'default'} />\n }\n\n if (hasWarning) return <Icon icon={ExclamationIcon} />\n\n let iconFileType = getFileTypeFromExtension(file)\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"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAClD,OAAOC,UAAU,MAAM,YAAY;AAGnC,OAAOC,MAAM,MAAM,kBAAkB;AACrC,OAAOC,IAAI,MAAM,uBAAuB;AACxC,OAAOC,UAAU,MAAM,6BAA6B;AACpD,OAAOC,iBAAiB,MAAM,qCAAqC;AAGnE,SACEC,KAAK,IAAIC,SAAS,EAClBC,kBAAkB,IAAIC,eAAe,EACrCC,eAAe,IAAIC,GAAG,EACtBC,eAAe,IAAIC,GAAG,EACtBC,gBAAgB,IAAIC,GAAG,EACvBC,eAAe,IAAIC,GAAG,EACtBC,eAAe,IAAIC,GAAG,EACtBC,eAAe,IAAIC,GAAG,EACtBC,eAAe,IAAIC,GAAG,EACtBC,eAAe,IAAIC,GAAG,EACtBC,eAAe,IAAIC,GAAG,EACtBC,WAAW,IAAIC,IAAI,QACd,aAAa;AAIpB,SAASC,kBAAkB,QAAQ,+BAA+B;AAClE,OAAOC,SAAS,MAAM,aAAa;AACnC,SAASC,wBAAwB,QAAQ,gBAAgB;AACzD,OAAOC,cAAc,MAAM,sBAAsB;AAKjD,OAAO,MAAMC,mBAAmB,GAAG;EACjCvB,GAAG;EACHE,GAAG;EACHI,GAAG;EACHF,GAAG;EACHoB,IAAI,EAAEpB,GAAG;EACTqB,GAAG,EAAErB,GAAG;EACRI,GAAG;EACHE,GAAG;EACHE,GAAG;EACHE,GAAG;EACHE,GAAG;EACHE;AACF,CAAC;AAiCD,MAAMQ,kBAAkB,GAAGA,CAAC;EAC1BC,EAAE;EACFC,UAAU;EACVC,QAAQ;EACRC,OAAO;EACPC,WAAW;EACXC,gBAAgB;EAChBC;AACuB,CAAC,KAAK;EAAA,IAAAC,IAAA,EAAAC,WAAA;EAC7B,MAAM;IAAEjB,IAAI;IAAEkB,YAAY;IAAEC;EAAU,CAAC,GAAGT,UAAU;EACpD,MAAMU,UAAU,GAAGF,YAAY,IAAI,IAAI;EAEvC,MAAMG,QAAQ,GAAG,CAAArB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEsB,IAAI,IAAG,CAAC,GAAGC,GAAG,CAACC,eAAe,CAACxB,IAAI,CAAC,GAAG,IAAI;EAClE,MAAMyB,OAAO,GAAGtD,MAAM,CAAgB,CAAC;EACvC,MAAMuD,MAAM,GAAGC,kBAAkB,CAAClB,EAAE,EAAET,IAAI,CAAC;EAE3C,MAAM4B,oBAAoB,GAAG1D,WAAW,CAAC,MAAM;IAAA,IAAA2D,mBAAA;IAC7C,MAAMC,WAAW,GAAGL,OAAO,CAACM,OAAO;IACnC,MAAMC,YAAY,IAAAH,mBAAA,GAAG5B,kBAAkB,CACrC,aAAa,EACb6B,WACF,CAAC,cAAAD,mBAAA,uBAHoBA,mBAAA,CAGlBI,aAAa,CAAC,gCAAgC,CAAsB;IACvED,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEE,KAAK,CAAC;MAAEC,aAAa,EAAE;IAAK,CAAC,CAAC;EAC9C,CAAC,EAAE,CAACV,OAAO,CAAC,CAAC;EAEb,MAAMW,eAAe,GAAGlE,WAAW,CAAC,MAAM;IACxC0D,oBAAoB,CAAC,CAAC;IAEtBjB,QAAQ,CAAC,CAAC;EACZ,CAAC,EAAE,CAACiB,oBAAoB,EAAEjB,QAAQ,CAAC,CAAC;EAEpC,OACE1C,KAAA,CAAAoE,aAAA;IACEC,SAAS,EAAElE,UAAU,CACnB,uBAAuB,EACvBgD,UAAU,IAAI,gCAAgC,EAC9CM,MAAM,IAAI,kCACZ,CAAE;IACFa,GAAG,EAAEd;EAAQ,GAEbxD,KAAA,CAAAoE,aAAA;IAAKC,SAAS,EAAC;EAAgC,GAC7CrE,KAAA,CAAAoE,aAAA;IAAKC,SAAS,EAAC;EAAsC,GAClDE,WAAW,CAACxC,IAAI,EAAE;IAAEmB;EAAU,CAAC,EAAEC,UAAU,CAAC,EAC5CqB,QAAQ,CAAC,CACP,CAAC,EACNxE,KAAA,CAAAoE,aAAA,cACEpE,KAAA,CAAAoE,aAAA,CAAChE,MAAM;IACLqE,IAAI,EAAEhE,SAAU;IAChBiE,OAAO,EAAC,UAAU;IAClB/B,OAAO,EAAEwB,eAAgB;IACzBQ,aAAa,EAAC,MAAM;IACpBC,QAAQ,EAAE1B;EAAU,GAEnBL,gBACK,CACL,CACF,CAAC,EAELgC,UAAU,CAAC,CACV,CAAC;EAGP,SAASL,QAAQA,CAAA,EAAG;IAClB,OAAOtB,SAAS,GAAAH,IAAA,KAAAA,IAAA,GACd/C,KAAA,CAAAoE,aAAA;MACEC,SAAS;IAGP,GAEDzB,WACE,CAAC,IAEN5C,KAAA,CAAAoE,aAAA;MAAKC,SAAS,EAAC;IAAuC,GACpDrE,KAAA,CAAAoE,aAAA,CAACjC,cAAc;MACb2C,IAAI,EAAE/C,IAAI,CAACgD,IAAK;MAChBC,IAAI,EAAE5B,QAAS;MACfN,QAAQ,EAAEA,QAAS;MACnBH,OAAO,EAAEA;IAAQ,CAClB,CACE,CACN;EACH;EAEA,SAASkC,UAAUA,CAAA,EAAG;IACpB,OAAO1B,UAAU,GAAAH,WAAA,KAAAA,WAAA,GACfhD,KAAA,CAAAoE,aAAA,CAAC9D,UAAU;MAAC2E,GAAG,EAAC,OAAO;MAACH,IAAI,EAAE7B,YAAa;MAACiC,OAAO;IAAA,CAAE,CAAC,IACpD,IAAI;EACV;AACF,CAAC;AAED,eAAe3C,kBAAkB;AAEjC,SAASmB,kBAAkBA,CAAClB,EAAU,EAAET,IAAU,EAAE;EAClD,MAAM;IAAEoD;EAAc,CAAC,GAAGlD,SAAS,CAACO,EAAE,CAAC;EACvC,MAAM,CAACiB,MAAM,EAAE2B,YAAY,CAAC,GAAGpF,KAAK,CAACqF,QAAQ,CAAC,KAAK,CAAC;EACpD,MAAMC,QAAQ,GAAGtF,KAAK,CAACE,MAAM,CAAe,CAAC;EAE7C,MAAMqF,WAAW,GAAGA,CAAA,KAAM;IACxBC,YAAY,CAACF,QAAQ,CAACxB,OAAO,CAAC;EAChC,CAAC;EAED9D,KAAK,CAACyF,SAAS,CAAC,MAAM;IACpB,MAAMhC,MAAM,GAAG0B,aAAa,CAACO,IAAI,CAAC,CAAC;MAAEjC,MAAM;MAAE1B,IAAI,EAAE4D;IAAE,CAAC,KAAK;MACzD,OAAOlC,MAAM,IAAIkC,CAAC,CAACZ,IAAI,KAAKhD,IAAI,CAACgD,IAAI,IAAIY,CAAC,CAACtC,IAAI,KAAKtB,IAAI,CAACsB,IAAI;IAC/D,CAAC,CAAC;IAEF,IAAII,MAAM,EAAE;MACV2B,YAAY,CAAC,IAAI,CAAC;MAClBG,WAAW,CAAC,CAAC;MACbD,QAAQ,CAACxB,OAAO,GAAG8B,UAAU,CAAC,MAAMR,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IAChE;IAEA,OAAOG,WAAW;EACpB,CAAC,EAAE,CAACxD,IAAI,EAAEoD,aAAa,CAAC,CAAC;EAEzB,OAAO1B,MAAM;AACf;AAEA,OAAO,SAASc,WAAWA,CACzBxC,IAAU,EACV8D,OAGC,EACD1C,UAAoB,EACpB;EACA,IAAI0C,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE3C,SAAS,EAAE;IAAA,IAAA4C,aAAA;IACtB,OAAO9F,KAAA,CAAAoE,aAAA,CAAC7D,iBAAiB;MAAC8C,IAAI,GAAAyC,aAAA,GAAED,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAExC,IAAI,cAAAyC,aAAA,cAAAA,aAAA,GAAI;IAAU,CAAE,CAAC;EAChE;EAEA,IAAI3C,UAAU,EAAE,OAAA4C,KAAA,KAAAA,KAAA,GAAO/F,KAAA,CAAAoE,aAAA,CAAC/D,IAAI;IAACoE,IAAI,EAAE9D;EAAgB,CAAE,CAAC;EAEtD,IAAIqF,YAAY,GAAG9D,wBAAwB,CAACH,IAAI,CAAC;EAEjD,IAAI,CAACiE,YAAY,EAAE;IACjB,MAAMC,SAAS,GAAGlE,IAAI,CAACmE,IAAI,CAACC,KAAK,CAAC,GAAG,CAAC;IACtCH,YAAY,GACV5D,mBAAmB,CAAC6D,SAAS,CAAC,CAAC,CAAC,CAAC,IACjC7D,mBAAmB,CAAC6D,SAAS,CAAC,CAAC,CAAC,CAAC;EACrC;EAEA,IACE,CAACG,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CACnCnE,mBAAmB,EACnB4D,YACF,CAAC,EACD;IACAA,YAAY,GAAG,MAAM;EACvB;EAEA,OAAOhG,KAAA,CAAAoE,aAAA,CAAC/D,IAAI;IAACoE,IAAI,EAAErC,mBAAmB,CAAC4D,YAAY;EAAE,CAAE,CAAC;AAC1D","ignoreList":[]}
1
+ {"version":3,"file":"UploadFileListCell.js","names":["React","useCallback","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","useUpload","isFileEqual","getFileTypeFromExtension","UploadFileLink","fileExtensionImages","docx","odt","UploadFileListCell","id","uploadFile","onDelete","onClick","loadingText","deleteButtonText","download","allowDuplicates","_div","_FormStatus","errorMessage","isLoading","hasWarning","imageUrl","size","URL","createObjectURL","cellRef","exists","useExistsHighlight","isDuplicate","handleDisappearFocus","_getPreviousSibling","cellElement","current","focusElement","querySelector","focus","preventScroll","onDeleteHandler","createElement","className","ref","getFileIcon","getTitle","icon","variant","icon_position","disabled","getWarning","text","name","href","bottom","top","stretch","internalFiles","updateExists","useState","timerRef","clearTimers","clearTimeout","useEffect","some","f","setTimeout","loading","_loading$size","_Icon","iconFileType","mimeParts","type","split","Object","prototype","hasOwnProperty","call"],"sources":["../../../../src/components/upload/UploadFileListCell.tsx"],"sourcesContent":["import React, { useCallback, 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 } from '../../shared/component-helper'\nimport useUpload, { isFileEqual } from './useUpload'\nimport { getFileTypeFromExtension } from './UploadVerify'\nimport UploadFileLink from './UploadFileListLink'\nimport { ProgressIndicatorAllProps } from '../progress-indicator/types'\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 * Allows uploading of duplicate files.\n * Default: false\n */\n allowDuplicates?: 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 allowDuplicates,\n}: UploadFileListCellProps) => {\n const { file, errorMessage, isLoading } = uploadFile\n const hasWarning = errorMessage != null\n\n const imageUrl = file?.size > 0 ? URL.createObjectURL(file) : null\n const cellRef = useRef<HTMLLIElement>()\n const exists = useExistsHighlight(id, file)\n const isDuplicate = !allowDuplicates && exists\n\n const handleDisappearFocus = useCallback(() => {\n const cellElement = cellRef.current\n const focusElement = getPreviousSibling(\n '.dnb-upload',\n cellElement\n )?.querySelector('.dnb-upload__file-input-button') as HTMLButtonElement\n focusElement?.focus({ preventScroll: true })\n }, [cellRef])\n\n const onDeleteHandler = useCallback(() => {\n handleDisappearFocus()\n\n onDelete()\n }, [handleDisappearFocus, onDelete])\n\n return (\n <li\n className={classnames(\n 'dnb-upload__file-cell',\n hasWarning && 'dnb-upload__file-cell--warning',\n isDuplicate && '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 {getFileIcon(file, { isLoading }, hasWarning)}\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 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 bottom={0}\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 && isFileEqual(file, f)\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\nexport function getFileIcon(\n file: File,\n loading?: {\n isLoading: UploadFile['isLoading']\n size?: ProgressIndicatorAllProps['size']\n },\n hasWarning?: boolean\n) {\n if (loading?.isLoading) {\n return <ProgressIndicator size={loading?.size ?? 'default'} />\n }\n\n if (hasWarning) return <Icon icon={ExclamationIcon} />\n\n let iconFileType = getFileTypeFromExtension(file)\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"],"mappings":"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","ignoreList":[]}
@@ -55,6 +55,11 @@ export type UploadProps = {
55
55
  * Default: false
56
56
  */
57
57
  download?: boolean;
58
+ /**
59
+ * Allows uploading of duplicate files.
60
+ * Default: false
61
+ */
62
+ allowDuplicates?: boolean;
58
63
  /**
59
64
  * Custom text properties
60
65
  */
@@ -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'\nimport type { SharedStateId } from '../../shared/helpers/useSharedState'\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?: SharedStateId\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<UploadAllProps>\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":"","ignoreList":[]}
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'\nimport type { SharedStateId } from '../../shared/helpers/useSharedState'\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?: SharedStateId\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 * Allows uploading of duplicate files.\n * Default: false\n */\n allowDuplicates?: 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<UploadAllProps>\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":"","ignoreList":[]}
@@ -10,4 +10,5 @@ export type useUploadReturn = {
10
10
  * Use together with Upload with the same id to manage the files from outside the component.
11
11
  */
12
12
  declare function useUpload(id: UploadProps['id']): useUploadReturn;
13
+ export declare const isFileEqual: (fileA: File, fileB: File) => boolean;
13
14
  export default useUpload;
@@ -21,7 +21,7 @@ function useUpload(id) {
21
21
  return fileItems.find(({
22
22
  file: f
23
23
  }) => {
24
- return f.name === file.name && f.size === file.size && f.lastModified === file.lastModified;
24
+ return isFileEqual(file, f);
25
25
  });
26
26
  }, [files]);
27
27
  return {
@@ -32,5 +32,11 @@ function useUpload(id) {
32
32
  getExistingFile
33
33
  };
34
34
  }
35
+ export const isFileEqual = (fileA, fileB) => {
36
+ const compareExistingProperty = function (a, b, property) {
37
+ return a && property in a && b && property in b && (a[property] === 0 || b[property] === 0 || a[property] === b[property]);
38
+ };
39
+ return fileA.name === fileB.name && compareExistingProperty(fileA, fileB, 'size') && compareExistingProperty(fileA, fileB, 'lastModified');
40
+ };
35
41
  export default useUpload;
36
42
  //# sourceMappingURL=useUpload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useUpload.js","names":["useCallback","useMemo","useSharedState","useUpload","id","data","extend","setFiles","files","setInternalFiles","internalFiles","getExistingFile","file","fileItems","find","f","name","size","lastModified"],"sources":["../../../../src/components/upload/useUpload.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { useSharedState } from '../../shared/helpers/useSharedState'\nimport type { UploadFile, UploadFileNative, UploadProps } from './types'\n\nexport type useUploadReturn = {\n files: Array<UploadFile>\n setFiles: (files: Array<UploadFile | UploadFileNative>) => void\n internalFiles: Array<UploadFile>\n setInternalFiles: (files: Array<UploadFile>) => void\n getExistingFile: (\n file: File,\n fileItems?: Array<UploadFile>\n ) => UploadFile\n}\n\n/**\n * Use together with Upload with the same id to manage the files from outside the component.\n */\nfunction useUpload(id: UploadProps['id']): useUploadReturn {\n const { data, extend } = useSharedState<{\n files?: Array<UploadFile>\n internalFiles?: Array<UploadFile>\n }>(id)\n\n const setFiles = useCallback(\n (files: Array<UploadFile>) => {\n extend({ files })\n },\n [extend]\n )\n\n const setInternalFiles = useCallback(\n (internalFiles: Array<UploadFile>) => {\n extend({ internalFiles })\n },\n [extend]\n )\n\n const files = useMemo(() => data?.files || [], [data?.files])\n const internalFiles = useMemo(\n () => data?.internalFiles || [],\n [data?.internalFiles]\n )\n\n const getExistingFile = useCallback(\n (file: File, fileItems: Array<UploadFile> = files) => {\n return fileItems.find(({ file: f }) => {\n return (\n f.name === file.name &&\n f.size === file.size &&\n f.lastModified === file.lastModified\n )\n })\n },\n [files]\n )\n\n return {\n files,\n setFiles,\n internalFiles,\n setInternalFiles,\n getExistingFile,\n }\n}\n\nexport default useUpload\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAC5C,SAASC,cAAc,QAAQ,qCAAqC;AAiBpE,SAASC,SAASA,CAACC,EAAqB,EAAmB;EACzD,MAAM;IAAEC,IAAI;IAAEC;EAAO,CAAC,GAAGJ,cAAc,CAGpCE,EAAE,CAAC;EAEN,MAAMG,QAAQ,GAAGP,WAAW,CACzBQ,KAAwB,IAAK;IAC5BF,MAAM,CAAC;MAAEE;IAAM,CAAC,CAAC;EACnB,CAAC,EACD,CAACF,MAAM,CACT,CAAC;EAED,MAAMG,gBAAgB,GAAGT,WAAW,CACjCU,aAAgC,IAAK;IACpCJ,MAAM,CAAC;MAAEI;IAAc,CAAC,CAAC;EAC3B,CAAC,EACD,CAACJ,MAAM,CACT,CAAC;EAED,MAAME,KAAK,GAAGP,OAAO,CAAC,MAAM,CAAAI,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,KAAK,KAAI,EAAE,EAAE,CAACH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,KAAK,CAAC,CAAC;EAC7D,MAAME,aAAa,GAAGT,OAAO,CAC3B,MAAM,CAAAI,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,aAAa,KAAI,EAAE,EAC/B,CAACL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,aAAa,CACtB,CAAC;EAED,MAAMC,eAAe,GAAGX,WAAW,CACjC,CAACY,IAAU,EAAEC,SAA4B,GAAGL,KAAK,KAAK;IACpD,OAAOK,SAAS,CAACC,IAAI,CAAC,CAAC;MAAEF,IAAI,EAAEG;IAAE,CAAC,KAAK;MACrC,OACEA,CAAC,CAACC,IAAI,KAAKJ,IAAI,CAACI,IAAI,IACpBD,CAAC,CAACE,IAAI,KAAKL,IAAI,CAACK,IAAI,IACpBF,CAAC,CAACG,YAAY,KAAKN,IAAI,CAACM,YAAY;IAExC,CAAC,CAAC;EACJ,CAAC,EACD,CAACV,KAAK,CACR,CAAC;EAED,OAAO;IACLA,KAAK;IACLD,QAAQ;IACRG,aAAa;IACbD,gBAAgB;IAChBE;EACF,CAAC;AACH;AAEA,eAAeR,SAAS","ignoreList":[]}
1
+ {"version":3,"file":"useUpload.js","names":["useCallback","useMemo","useSharedState","useUpload","id","data","extend","setFiles","files","setInternalFiles","internalFiles","getExistingFile","file","fileItems","find","f","isFileEqual","fileA","fileB","compareExistingProperty","a","b","property","name"],"sources":["../../../../src/components/upload/useUpload.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react'\nimport { useSharedState } from '../../shared/helpers/useSharedState'\nimport type { UploadFile, UploadFileNative, UploadProps } from './types'\n\nexport type useUploadReturn = {\n files: Array<UploadFile>\n setFiles: (files: Array<UploadFile | UploadFileNative>) => void\n internalFiles: Array<UploadFile>\n setInternalFiles: (files: Array<UploadFile>) => void\n getExistingFile: (\n file: File,\n fileItems?: Array<UploadFile>\n ) => UploadFile\n}\n\n/**\n * Use together with Upload with the same id to manage the files from outside the component.\n */\nfunction useUpload(id: UploadProps['id']): useUploadReturn {\n const { data, extend } = useSharedState<{\n files?: Array<UploadFile>\n internalFiles?: Array<UploadFile>\n }>(id)\n\n const setFiles = useCallback(\n (files: Array<UploadFile>) => {\n extend({ files })\n },\n [extend]\n )\n\n const setInternalFiles = useCallback(\n (internalFiles: Array<UploadFile>) => {\n extend({ internalFiles })\n },\n [extend]\n )\n\n const files = useMemo(() => data?.files || [], [data?.files])\n const internalFiles = useMemo(\n () => data?.internalFiles || [],\n [data?.internalFiles]\n )\n\n const getExistingFile = useCallback(\n (file: File, fileItems: Array<UploadFile> = files) => {\n return fileItems.find(({ file: f }) => {\n return isFileEqual(file, f)\n })\n },\n [files]\n )\n\n return {\n files,\n setFiles,\n internalFiles,\n setInternalFiles,\n getExistingFile,\n }\n}\n\nexport const isFileEqual = (fileA: File, fileB: File): boolean => {\n const compareExistingProperty = function (\n a: File,\n b: File,\n property: string\n ) {\n return (\n a &&\n property in a &&\n b &&\n property in b &&\n (a[property] === 0 || // If value is 0, which is default when not provided, we can't say whether the file is equal or not, so we assume they are.\n b[property] === 0 || // If value is 0, which is default when not provided, we can't say whether the file is equal or not, so we assume they are.\n a[property] === b[property])\n )\n }\n return (\n fileA.name === fileB.name &&\n compareExistingProperty(fileA, fileB, 'size') &&\n compareExistingProperty(fileA, fileB, 'lastModified')\n )\n}\n\nexport default useUpload\n"],"mappings":"AAAA,SAASA,WAAW,EAAEC,OAAO,QAAQ,OAAO;AAC5C,SAASC,cAAc,QAAQ,qCAAqC;AAiBpE,SAASC,SAASA,CAACC,EAAqB,EAAmB;EACzD,MAAM;IAAEC,IAAI;IAAEC;EAAO,CAAC,GAAGJ,cAAc,CAGpCE,EAAE,CAAC;EAEN,MAAMG,QAAQ,GAAGP,WAAW,CACzBQ,KAAwB,IAAK;IAC5BF,MAAM,CAAC;MAAEE;IAAM,CAAC,CAAC;EACnB,CAAC,EACD,CAACF,MAAM,CACT,CAAC;EAED,MAAMG,gBAAgB,GAAGT,WAAW,CACjCU,aAAgC,IAAK;IACpCJ,MAAM,CAAC;MAAEI;IAAc,CAAC,CAAC;EAC3B,CAAC,EACD,CAACJ,MAAM,CACT,CAAC;EAED,MAAME,KAAK,GAAGP,OAAO,CAAC,MAAM,CAAAI,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,KAAK,KAAI,EAAE,EAAE,CAACH,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEG,KAAK,CAAC,CAAC;EAC7D,MAAME,aAAa,GAAGT,OAAO,CAC3B,MAAM,CAAAI,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,aAAa,KAAI,EAAE,EAC/B,CAACL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,aAAa,CACtB,CAAC;EAED,MAAMC,eAAe,GAAGX,WAAW,CACjC,CAACY,IAAU,EAAEC,SAA4B,GAAGL,KAAK,KAAK;IACpD,OAAOK,SAAS,CAACC,IAAI,CAAC,CAAC;MAAEF,IAAI,EAAEG;IAAE,CAAC,KAAK;MACrC,OAAOC,WAAW,CAACJ,IAAI,EAAEG,CAAC,CAAC;IAC7B,CAAC,CAAC;EACJ,CAAC,EACD,CAACP,KAAK,CACR,CAAC;EAED,OAAO;IACLA,KAAK;IACLD,QAAQ;IACRG,aAAa;IACbD,gBAAgB;IAChBE;EACF,CAAC;AACH;AAEA,OAAO,MAAMK,WAAW,GAAGA,CAACC,KAAW,EAAEC,KAAW,KAAc;EAChE,MAAMC,uBAAuB,GAAG,SAAAA,CAC9BC,CAAO,EACPC,CAAO,EACPC,QAAgB,EAChB;IACA,OACEF,CAAC,IACDE,QAAQ,IAAIF,CAAC,IACbC,CAAC,IACDC,QAAQ,IAAID,CAAC,KACZD,CAAC,CAACE,QAAQ,CAAC,KAAK,CAAC,IAChBD,CAAC,CAACC,QAAQ,CAAC,KAAK,CAAC,IACjBF,CAAC,CAACE,QAAQ,CAAC,KAAKD,CAAC,CAACC,QAAQ,CAAC,CAAC;EAElC,CAAC;EACD,OACEL,KAAK,CAACM,IAAI,KAAKL,KAAK,CAACK,IAAI,IACzBJ,uBAAuB,CAACF,KAAK,EAAEC,KAAK,EAAE,MAAM,CAAC,IAC7CC,uBAAuB,CAACF,KAAK,EAAEC,KAAK,EAAE,cAAc,CAAC;AAEzD,CAAC;AAED,eAAef,SAAS","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../shared/types';
2
+ export declare const VisuallyHiddenProperties: PropertiesTableProps;
@@ -0,0 +1,13 @@
1
+ export const VisuallyHiddenProperties = {
2
+ focusable: {
3
+ doc: 'Set to `true` to hide an element by default, but to display it when it’s focused (e.g. by a keyboard-only user) root. Defaults to `false`.',
4
+ type: ['boolean'],
5
+ status: 'optional'
6
+ },
7
+ element: {
8
+ doc: 'Custom root HTML element for the component. Defaults to `<span>`.',
9
+ type: ['string', 'React.Element'],
10
+ status: 'optional'
11
+ }
12
+ };
13
+ //# sourceMappingURL=VisuallyHiddenDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisuallyHiddenDocs.js","names":["VisuallyHiddenProperties","focusable","doc","type","status","element"],"sources":["../../../../src/components/visually-hidden/VisuallyHiddenDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../shared/types'\n\nexport const VisuallyHiddenProperties: PropertiesTableProps = {\n focusable: {\n doc: 'Set to `true` to hide an element by default, but to display it when it’s focused (e.g. by a keyboard-only user) root. Defaults to `false`.',\n type: ['boolean'],\n status: 'optional',\n },\n element: {\n doc: 'Custom root HTML element for the component. Defaults to `<span>`.',\n type: ['string', 'React.Element'],\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,wBAA8C,GAAG;EAC5DC,SAAS,EAAE;IACTC,GAAG,EAAE,4IAA4I;IACjJC,IAAI,EAAE,CAAC,SAAS,CAAC;IACjBC,MAAM,EAAE;EACV,CAAC;EACDC,OAAO,EAAE;IACPH,GAAG,EAAE,mEAAmE;IACxEC,IAAI,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;IACjCC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const AtProperties: PropertiesTableProps;
@@ -0,0 +1,18 @@
1
+ export const AtProperties = {
2
+ children: {
3
+ doc: 'Features with given path as root for the DataContext.',
4
+ type: 'React.ReactNode',
5
+ status: 'optional'
6
+ },
7
+ path: {
8
+ doc: 'JSON Pointer path to where in the outer DataContext source to point at.',
9
+ type: 'string',
10
+ status: 'optional'
11
+ },
12
+ iterate: {
13
+ doc: 'True to iterate elements at given path based on the source data, including the index in the outer path, instead of just rendering children once.',
14
+ type: 'boolean',
15
+ status: 'optional'
16
+ }
17
+ };
18
+ //# sourceMappingURL=AtDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AtDocs.js","names":["AtProperties","children","doc","type","status","path","iterate"],"sources":["../../../../../../src/extensions/forms/DataContext/At/AtDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const AtProperties: PropertiesTableProps = {\n children: {\n doc: 'Features with given path as root for the DataContext.',\n type: 'React.ReactNode',\n status: 'optional',\n },\n path: {\n doc: 'JSON Pointer path to where in the outer DataContext source to point at.',\n type: 'string',\n status: 'optional',\n },\n iterate: {\n doc: 'True to iterate elements at given path based on the source data, including the index in the outer path, instead of just rendering children once.',\n type: 'boolean',\n status: 'optional',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,YAAkC,GAAG;EAChDC,QAAQ,EAAE;IACRC,GAAG,EAAE,uDAAuD;IAC5DC,IAAI,EAAE,iBAAiB;IACvBC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJH,GAAG,EAAE,yEAAyE;IAC9EC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,OAAO,EAAE;IACPJ,GAAG,EAAE,kJAAkJ;IACvJC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV;AACF,CAAC","ignoreList":[]}
@@ -13,9 +13,11 @@ export type MountState = {
13
13
  };
14
14
  export type EventListenerCall = {
15
15
  path?: Path;
16
- type?: 'onSubmit' | 'onSubmitRequest' | 'onPathChange' | 'onMount';
16
+ type?: 'onSubmit' | 'onSubmitCall' | 'onSubmitRequest' | 'onPathChange' | 'onMount';
17
17
  callback: (params?: {
18
18
  value: unknown;
19
+ } | {
20
+ preventSubmit: () => void;
19
21
  }) => void | Promise<void | Error>;
20
22
  };
21
23
  export type VisibleDataHandler<Data> = (data?: Data, options?: VisibleDataOptions) => Partial<Data>;
@@ -109,13 +111,12 @@ export interface ContextState {
109
111
  }) => Promise<EventStateObject | undefined>;
110
112
  getSubmitData?: () => unknown;
111
113
  getSubmitParams?: () => OnSubmitParams;
112
- setFieldEventListener?: (path: EventListenerCall['path'], type: EventListenerCall['type'], callback: EventListenerCall['callback']) => void;
114
+ setFieldEventListener?: (path: EventListenerCall['path'], type: EventListenerCall['type'], callback: EventListenerCall['callback'], params?: {
115
+ remove?: boolean;
116
+ }) => void;
113
117
  revealError?: (path: Path, hasError: boolean) => void;
114
118
  setFieldInternals?: (path: Path, props: unknown, id?: string) => void;
115
119
  setValueInternals?: (path: Path, props: unknown) => void;
116
- setHandleSubmit?: (callback: HandleSubmitCallback, params?: {
117
- remove?: boolean;
118
- }) => void;
119
120
  setFieldConnection?: (path: Path, connections: FieldConnections) => void;
120
121
  isEmptyDataRef?: React.MutableRefObject<boolean>;
121
122
  addSetShowAllErrorsRef?: React.MutableRefObject<Array<(showAllErrors: boolean) => void>>;
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","submitState","handlePathChange","handlePathChangeUnvalidated","updateDataValue","setData","validateData","handleSubmit","scrollToTop","showAllErrors","hasVisibleError","formState","setFormState","setSubmitState","handleSubmitCall","setShowAllErrors","setMountedFieldState","hasErrors","hasFieldState","hasFieldError","ajvInstance","contextErrorMessages","props","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, FormError, JsonObject, makeAjvInstance } from '../utils'\nimport {\n AllJSONSchemaVersions,\n GlobalErrorMessagesWithPaths,\n SubmitState,\n Path,\n EventStateObject,\n EventReturnWithStateObject,\n FieldProps,\n ValueProps,\n OnChange,\n OnSubmitParams,\n CountryCode,\n} from '../types'\nimport { Props as ProviderProps } from './Provider'\nimport { SnapshotName } from '../Form/Snapshot'\nimport { SharedStateId } from '../../../shared/helpers/useSharedState'\n\nexport type MountState = {\n isPreMounted?: boolean\n isMounted?: boolean\n isVisible?: boolean\n isFocused?: boolean\n wasStepChange?: boolean\n}\n\nexport type EventListenerCall = {\n path?: Path\n type?: 'onSubmit' | 'onSubmitRequest' | 'onPathChange' | 'onMount'\n callback: (params?: { value: unknown }) => void | Promise<void | Error>\n}\n\nexport type VisibleDataHandler<Data> = (\n data?: Data,\n options?: VisibleDataOptions\n) => Partial<Data>\nexport type VisibleDataOptions = {\n keepPaths?: Array<Path>\n removePaths?: Array<Path>\n}\nexport type MutateDataHandler<Data> = (\n data: Data,\n mutate: TransformData\n) => Partial<Data>\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterDataHandlerCallback<R> = (\n parameters: FilterDataHandlerParameters\n) => R\nexport type FilterDataHandlerParameters = DataPathHandlerParameters & {\n path: Path\n}\nexport type DataPathHandler<Data = unknown> = (\n parameters: DataPathHandlerParameters<Data>\n) => boolean | undefined\nexport type DataPathHandlerParameters<Data = unknown> = {\n path: Path\n value: unknown\n displayValue: undefined | React.ReactNode | Array<React.ReactNode>\n label: React.ReactNode\n props: FieldProps\n error: Error | undefined\n\n /**\n * Used in the \"filterData\" given by the \"useData\" hook.\n */\n data: Data\n\n /** @deprecated – can be removed in v11 */\n internal: {\n error: Error | undefined\n }\n}\nexport type FilterDataPathObject<Data> = Record<\n Path,\n DataPathHandler<Data> | boolean | undefined\n>\nexport type FilterData<Data = unknown> =\n | FilterDataPathObject<Data>\n | FilterDataHandlerCallback<boolean | undefined>\nexport type VisibleData<Data = unknown> = Partial<Data>\nexport type TransformData = FilterDataHandlerCallback<unknown>\nexport type HandleSubmitCallback = ({\n preventSubmit,\n}: {\n preventSubmit: () => void\n}) => void\nexport type FieldConnections = {\n setEventResult?: (status: EventStateObject) => void\n}\nexport type FieldInternalsRefProps =\n | (FieldProps & { children: unknown })\n | undefined\nexport type FieldInternalsRef = Record<\n Path,\n {\n props: FieldInternalsRefProps\n id: string | undefined\n }\n>\nexport type ValueInternalsRef = Record<\n Path,\n { props: ValueProps | undefined }\n>\n\nexport interface ContextState {\n id?: SharedStateId\n hasContext: boolean\n /** The dataset for the form / form wizard */\n data: any\n internalDataRef?: React.MutableRefObject<any>\n /** Should the form validate data before submitting? */\n errors?: Record<Path, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (\n path: Path,\n value?: any\n ) =>\n | EventReturnWithStateObject\n | unknown\n | Promise<EventReturnWithStateObject | unknown>\n handlePathChangeUnvalidated: (path: Path, value: any) => void\n updateDataValue: (\n path: Path,\n value: any,\n options?: { preventUpdate?: boolean }\n ) => void\n setData: (data: any) => void\n clearData?: () => void\n mutateDataHandler?: MutateDataHandler<unknown>\n filterDataHandler?: FilterDataHandler<unknown>\n visibleDataHandler?: VisibleDataHandler<unknown>\n validateData: () => void\n handleSubmit: () => Promise<EventStateObject | undefined>\n scrollToTop: () => void\n setShowAllErrors: (showAllErrors: boolean) => void\n hasErrors: () => boolean\n hasFieldState: (state: SubmitState) => boolean\n hasFieldError: (path: Path) => boolean\n setFieldState?: (path: Path, fieldState: SubmitState) => void\n setFieldError?: (path: Path, error: Error | FormError) => void\n setMountedFieldState: (path: Path, options: MountState) => void\n setFormState?: (\n state: SubmitState,\n options?: { keepPending?: boolean }\n ) => void\n setSubmitState?: (state: EventStateObject) => void\n addOnChangeHandler?: (callback: OnChange) => void\n handleSubmitCall: ({\n onSubmit,\n enableAsyncBehavior,\n skipFieldValidation,\n skipErrorCheck,\n }: {\n onSubmit: () =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n enableAsyncBehavior: boolean\n skipFieldValidation?: boolean\n skipErrorCheck?: boolean\n }) => Promise<EventStateObject | undefined>\n getSubmitData?: () => unknown\n getSubmitParams?: () => OnSubmitParams\n setFieldEventListener?: (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback']\n ) => void\n revealError?: (path: Path, hasError: boolean) => void\n setFieldInternals?: (path: Path, props: unknown, id?: string) => void\n setValueInternals?: (path: Path, props: unknown) => void\n setHandleSubmit?: (\n callback: HandleSubmitCallback,\n params?: { remove?: boolean }\n ) => void\n setFieldConnection?: (path: Path, connections: FieldConnections) => void\n isEmptyDataRef?: React.MutableRefObject<boolean>\n addSetShowAllErrorsRef?: React.MutableRefObject<\n Array<(showAllErrors: boolean) => void>\n >\n fieldDisplayValueRef?: React.MutableRefObject<\n Record<Path, { type: 'field'; value?: React.ReactNode }>\n >\n fieldInternalsRef?: React.MutableRefObject<FieldInternalsRef>\n valueInternalsRef?: React.MutableRefObject<ValueInternalsRef>\n fieldConnectionsRef?: React.RefObject<Record<Path, FieldConnections>>\n mountedFieldsRef?: React.MutableRefObject<Map<Path, MountState>>\n snapshotsRef?: React.MutableRefObject<\n Map<SnapshotName, Map<Path, unknown>>\n >\n existingFieldsRef?: React.MutableRefObject<Map<Path, boolean>>\n formElementRef?: React.MutableRefObject<HTMLFormElement>\n fieldErrorRef?: React.MutableRefObject<Record<Path, Error>>\n showAllErrors: boolean | number\n hasVisibleError: boolean\n formState: SubmitState\n ajvInstance: Ajv\n contextErrorMessages: GlobalErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n path?: Path\n disabled?: boolean\n required?: boolean\n countryCode?: CountryCode\n submitState: Partial<EventStateObject>\n prerenderFieldProps?: boolean\n decoupleForm?: boolean\n hasElementRef?: React.MutableRefObject<boolean>\n restHandlerProps?: Record<string, unknown>\n props: ProviderProps<JsonObject>\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n submitState: undefined,\n handlePathChange: () => null,\n handlePathChangeUnvalidated: () => null,\n updateDataValue: () => null,\n setData: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n hasVisibleError: false,\n formState: undefined,\n setFormState: () => null,\n setSubmitState: () => null,\n handleSubmitCall: () => null,\n setShowAllErrors: () => null,\n setMountedFieldState: () => null,\n hasErrors: () => false,\n hasFieldState: () => false,\n hasFieldError: () => false,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n props: null,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAqCC,eAAe,QAAQ,UAAU;AAuNtE,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,WAAW,EAAEF,SAAS;EACtBG,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,2BAA2B,EAAEA,CAAA,KAAM,IAAI;EACvCC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,OAAO,EAAEA,CAAA,KAAM,IAAI;EACnBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,eAAe,EAAE,KAAK;EACtBC,SAAS,EAAEZ,SAAS;EACpBa,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,oBAAoB,EAAEA,CAAA,KAAM,IAAI;EAChCC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,WAAW,EAAEzB,eAAe,CAAC,CAAC;EAC9B0B,oBAAoB,EAAEtB,SAAS;EAC/BuB,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,OAAO,GAAG7B,KAAK,CAAC8B,aAAa,CAAe5B,mBAAmB,CAAC;AAEtE,eAAe2B,OAAO","ignoreList":[]}
1
+ {"version":3,"file":"Context.js","names":["React","makeAjvInstance","defaultContextState","hasContext","data","undefined","schema","submitState","handlePathChange","handlePathChangeUnvalidated","updateDataValue","setData","validateData","handleSubmit","scrollToTop","showAllErrors","hasVisibleError","formState","setFormState","setSubmitState","handleSubmitCall","setShowAllErrors","setMountedFieldState","hasErrors","hasFieldState","hasFieldError","ajvInstance","contextErrorMessages","props","Context","createContext"],"sources":["../../../../../src/extensions/forms/DataContext/Context.ts"],"sourcesContent":["import React from 'react'\nimport { Ajv, FormError, JsonObject, makeAjvInstance } from '../utils'\nimport {\n AllJSONSchemaVersions,\n GlobalErrorMessagesWithPaths,\n SubmitState,\n Path,\n EventStateObject,\n EventReturnWithStateObject,\n FieldProps,\n ValueProps,\n OnChange,\n OnSubmitParams,\n CountryCode,\n} from '../types'\nimport { Props as ProviderProps } from './Provider'\nimport { SnapshotName } from '../Form/Snapshot'\nimport { SharedStateId } from '../../../shared/helpers/useSharedState'\n\nexport type MountState = {\n isPreMounted?: boolean\n isMounted?: boolean\n isVisible?: boolean\n isFocused?: boolean\n wasStepChange?: boolean\n}\n\nexport type EventListenerCall = {\n path?: Path\n type?:\n | 'onSubmit'\n | 'onSubmitCall'\n | 'onSubmitRequest'\n | 'onPathChange'\n | 'onMount'\n callback: (\n params?: { value: unknown } | { preventSubmit: () => void }\n ) => void | Promise<void | Error>\n}\n\nexport type VisibleDataHandler<Data> = (\n data?: Data,\n options?: VisibleDataOptions\n) => Partial<Data>\nexport type VisibleDataOptions = {\n keepPaths?: Array<Path>\n removePaths?: Array<Path>\n}\nexport type MutateDataHandler<Data> = (\n data: Data,\n mutate: TransformData\n) => Partial<Data>\nexport type FilterDataHandler<Data> = (\n data: Data,\n filter: FilterData\n) => Partial<Data>\nexport type FilterDataHandlerCallback<R> = (\n parameters: FilterDataHandlerParameters\n) => R\nexport type FilterDataHandlerParameters = DataPathHandlerParameters & {\n path: Path\n}\nexport type DataPathHandler<Data = unknown> = (\n parameters: DataPathHandlerParameters<Data>\n) => boolean | undefined\nexport type DataPathHandlerParameters<Data = unknown> = {\n path: Path\n value: unknown\n displayValue: undefined | React.ReactNode | Array<React.ReactNode>\n label: React.ReactNode\n props: FieldProps\n error: Error | undefined\n\n /**\n * Used in the \"filterData\" given by the \"useData\" hook.\n */\n data: Data\n\n /** @deprecated – can be removed in v11 */\n internal: {\n error: Error | undefined\n }\n}\nexport type FilterDataPathObject<Data> = Record<\n Path,\n DataPathHandler<Data> | boolean | undefined\n>\nexport type FilterData<Data = unknown> =\n | FilterDataPathObject<Data>\n | FilterDataHandlerCallback<boolean | undefined>\nexport type VisibleData<Data = unknown> = Partial<Data>\nexport type TransformData = FilterDataHandlerCallback<unknown>\nexport type HandleSubmitCallback = ({\n preventSubmit,\n}: {\n preventSubmit: () => void\n}) => void\nexport type FieldConnections = {\n setEventResult?: (status: EventStateObject) => void\n}\nexport type FieldInternalsRefProps =\n | (FieldProps & { children: unknown })\n | undefined\nexport type FieldInternalsRef = Record<\n Path,\n {\n props: FieldInternalsRefProps\n id: string | undefined\n }\n>\nexport type ValueInternalsRef = Record<\n Path,\n { props: ValueProps | undefined }\n>\n\nexport interface ContextState {\n id?: SharedStateId\n hasContext: boolean\n /** The dataset for the form / form wizard */\n data: any\n internalDataRef?: React.MutableRefObject<any>\n /** Should the form validate data before submitting? */\n errors?: Record<Path, Error>\n /** Will set autoComplete=\"on\" on each nested Field.String and Field.Number */\n autoComplete?: boolean\n handlePathChange: (\n path: Path,\n value?: any\n ) =>\n | EventReturnWithStateObject\n | unknown\n | Promise<EventReturnWithStateObject | unknown>\n handlePathChangeUnvalidated: (path: Path, value: any) => void\n updateDataValue: (\n path: Path,\n value: any,\n options?: { preventUpdate?: boolean }\n ) => void\n setData: (data: any) => void\n clearData?: () => void\n mutateDataHandler?: MutateDataHandler<unknown>\n filterDataHandler?: FilterDataHandler<unknown>\n visibleDataHandler?: VisibleDataHandler<unknown>\n validateData: () => void\n handleSubmit: () => Promise<EventStateObject | undefined>\n scrollToTop: () => void\n setShowAllErrors: (showAllErrors: boolean) => void\n hasErrors: () => boolean\n hasFieldState: (state: SubmitState) => boolean\n hasFieldError: (path: Path) => boolean\n setFieldState?: (path: Path, fieldState: SubmitState) => void\n setFieldError?: (path: Path, error: Error | FormError) => void\n setMountedFieldState: (path: Path, options: MountState) => void\n setFormState?: (\n state: SubmitState,\n options?: { keepPending?: boolean }\n ) => void\n setSubmitState?: (state: EventStateObject) => void\n addOnChangeHandler?: (callback: OnChange) => void\n handleSubmitCall: ({\n onSubmit,\n enableAsyncBehavior,\n skipFieldValidation,\n skipErrorCheck,\n }: {\n onSubmit: () =>\n | EventReturnWithStateObject\n | void\n | Promise<EventReturnWithStateObject | void>\n enableAsyncBehavior: boolean\n skipFieldValidation?: boolean\n skipErrorCheck?: boolean\n }) => Promise<EventStateObject | undefined>\n getSubmitData?: () => unknown\n getSubmitParams?: () => OnSubmitParams\n setFieldEventListener?: (\n path: EventListenerCall['path'],\n type: EventListenerCall['type'],\n callback: EventListenerCall['callback'],\n params?: { remove?: boolean }\n ) => void\n revealError?: (path: Path, hasError: boolean) => void\n setFieldInternals?: (path: Path, props: unknown, id?: string) => void\n setValueInternals?: (path: Path, props: unknown) => void\n setFieldConnection?: (path: Path, connections: FieldConnections) => void\n isEmptyDataRef?: React.MutableRefObject<boolean>\n addSetShowAllErrorsRef?: React.MutableRefObject<\n Array<(showAllErrors: boolean) => void>\n >\n fieldDisplayValueRef?: React.MutableRefObject<\n Record<Path, { type: 'field'; value?: React.ReactNode }>\n >\n fieldInternalsRef?: React.MutableRefObject<FieldInternalsRef>\n valueInternalsRef?: React.MutableRefObject<ValueInternalsRef>\n fieldConnectionsRef?: React.RefObject<Record<Path, FieldConnections>>\n mountedFieldsRef?: React.MutableRefObject<Map<Path, MountState>>\n snapshotsRef?: React.MutableRefObject<\n Map<SnapshotName, Map<Path, unknown>>\n >\n existingFieldsRef?: React.MutableRefObject<Map<Path, boolean>>\n formElementRef?: React.MutableRefObject<HTMLFormElement>\n fieldErrorRef?: React.MutableRefObject<Record<Path, Error>>\n showAllErrors: boolean | number\n hasVisibleError: boolean\n formState: SubmitState\n ajvInstance: Ajv\n contextErrorMessages: GlobalErrorMessagesWithPaths\n schema: AllJSONSchemaVersions\n path?: Path\n disabled?: boolean\n required?: boolean\n countryCode?: CountryCode\n submitState: Partial<EventStateObject>\n prerenderFieldProps?: boolean\n decoupleForm?: boolean\n hasElementRef?: React.MutableRefObject<boolean>\n restHandlerProps?: Record<string, unknown>\n props: ProviderProps<JsonObject>\n}\n\nexport const defaultContextState: ContextState = {\n hasContext: false,\n data: undefined,\n schema: undefined,\n submitState: undefined,\n handlePathChange: () => null,\n handlePathChangeUnvalidated: () => null,\n updateDataValue: () => null,\n setData: () => null,\n validateData: () => null,\n handleSubmit: () => null,\n scrollToTop: () => null,\n showAllErrors: false,\n hasVisibleError: false,\n formState: undefined,\n setFormState: () => null,\n setSubmitState: () => null,\n handleSubmitCall: () => null,\n setShowAllErrors: () => null,\n setMountedFieldState: () => null,\n hasErrors: () => false,\n hasFieldState: () => false,\n hasFieldError: () => false,\n ajvInstance: makeAjvInstance(),\n contextErrorMessages: undefined,\n props: null,\n}\n\nconst Context = React.createContext<ContextState>(defaultContextState)\n\nexport default Context\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAqCC,eAAe,QAAQ,UAAU;AA2NtE,OAAO,MAAMC,mBAAiC,GAAG;EAC/CC,UAAU,EAAE,KAAK;EACjBC,IAAI,EAAEC,SAAS;EACfC,MAAM,EAAED,SAAS;EACjBE,WAAW,EAAEF,SAAS;EACtBG,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,2BAA2B,EAAEA,CAAA,KAAM,IAAI;EACvCC,eAAe,EAAEA,CAAA,KAAM,IAAI;EAC3BC,OAAO,EAAEA,CAAA,KAAM,IAAI;EACnBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,WAAW,EAAEA,CAAA,KAAM,IAAI;EACvBC,aAAa,EAAE,KAAK;EACpBC,eAAe,EAAE,KAAK;EACtBC,SAAS,EAAEZ,SAAS;EACpBa,YAAY,EAAEA,CAAA,KAAM,IAAI;EACxBC,cAAc,EAAEA,CAAA,KAAM,IAAI;EAC1BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,gBAAgB,EAAEA,CAAA,KAAM,IAAI;EAC5BC,oBAAoB,EAAEA,CAAA,KAAM,IAAI;EAChCC,SAAS,EAAEA,CAAA,KAAM,KAAK;EACtBC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,aAAa,EAAEA,CAAA,KAAM,KAAK;EAC1BC,WAAW,EAAEzB,eAAe,CAAC,CAAC;EAC9B0B,oBAAoB,EAAEtB,SAAS;EAC/BuB,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,OAAO,GAAG7B,KAAK,CAAC8B,aAAa,CAAe5B,mBAAmB,CAAC;AAEtE,eAAe2B,OAAO","ignoreList":[]}