@navikt/ds-react 6.1.1 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/cjs/accordion/Accordion.d.ts +4 -4
  2. package/cjs/alert/Alert.d.ts +12 -10
  3. package/cjs/alert/Alert.js.map +1 -1
  4. package/cjs/button/Button.d.ts +9 -8
  5. package/cjs/button/Button.js.map +1 -1
  6. package/cjs/chat/Chat.d.ts +6 -6
  7. package/cjs/chips/Chips.d.ts +2 -2
  8. package/cjs/copybutton/CopyButton.d.ts +14 -12
  9. package/cjs/copybutton/CopyButton.js.map +1 -1
  10. package/cjs/date/datepicker/types.d.ts +7 -6
  11. package/cjs/date/hooks/useDatepicker.d.ts +4 -3
  12. package/cjs/date/hooks/useDatepicker.js.map +1 -1
  13. package/cjs/date/hooks/useMonthPicker.d.ts +4 -3
  14. package/cjs/date/hooks/useMonthPicker.js.map +1 -1
  15. package/cjs/date/monthpicker/types.d.ts +2 -1
  16. package/cjs/date/parts/DateInput.d.ts +1 -1
  17. package/cjs/expansion-card/ExpansionCardTitle.d.ts +1 -1
  18. package/cjs/form/checkbox/CheckboxGroup.d.ts +3 -3
  19. package/cjs/form/checkbox/types.d.ts +4 -4
  20. package/cjs/form/combobox/ComboboxProvider.js +5 -1
  21. package/cjs/form/combobox/ComboboxProvider.js.map +1 -1
  22. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +14 -12
  23. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  24. package/cjs/form/combobox/FilteredOptions/filtered-options-util.d.ts +3 -3
  25. package/cjs/form/combobox/FilteredOptions/filtered-options-util.js +1 -3
  26. package/cjs/form/combobox/FilteredOptions/filtered-options-util.js.map +1 -1
  27. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.d.ts +8 -5
  28. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +8 -13
  29. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  30. package/cjs/form/combobox/Input/Input.js +9 -7
  31. package/cjs/form/combobox/Input/Input.js.map +1 -1
  32. package/cjs/form/combobox/SelectedOptions/SelectedOptions.d.ts +2 -1
  33. package/cjs/form/combobox/SelectedOptions/SelectedOptions.js +3 -3
  34. package/cjs/form/combobox/SelectedOptions/SelectedOptions.js.map +1 -1
  35. package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.d.ts +10 -7
  36. package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.js +6 -8
  37. package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.js.map +1 -1
  38. package/cjs/form/combobox/combobox-utils.d.ts +10 -0
  39. package/cjs/form/combobox/combobox-utils.js +27 -0
  40. package/cjs/form/combobox/combobox-utils.js.map +1 -0
  41. package/cjs/form/combobox/customOptionsContext.d.ts +5 -4
  42. package/cjs/form/combobox/customOptionsContext.js +1 -1
  43. package/cjs/form/combobox/customOptionsContext.js.map +1 -1
  44. package/cjs/form/combobox/types.d.ts +33 -22
  45. package/cjs/form/error-summary/ErrorSummary.d.ts +5 -5
  46. package/cjs/form/file-upload/FileUpload.context.d.ts +8 -0
  47. package/cjs/form/file-upload/FileUpload.context.js +7 -0
  48. package/cjs/form/file-upload/FileUpload.context.js.map +1 -0
  49. package/cjs/form/file-upload/FileUpload.d.ts +118 -0
  50. package/cjs/form/file-upload/FileUpload.js +73 -0
  51. package/cjs/form/file-upload/FileUpload.js.map +1 -0
  52. package/cjs/form/file-upload/FileUpload.types.d.ts +55 -0
  53. package/cjs/form/file-upload/FileUpload.types.js +8 -0
  54. package/cjs/form/file-upload/FileUpload.types.js.map +1 -0
  55. package/cjs/form/file-upload/i18n/get.d.ts +2 -0
  56. package/cjs/form/file-upload/i18n/get.js +38 -0
  57. package/cjs/form/file-upload/i18n/get.js.map +1 -0
  58. package/cjs/form/file-upload/i18n/i18n.context.d.ts +11 -0
  59. package/cjs/form/file-upload/i18n/i18n.context.js +39 -0
  60. package/cjs/form/file-upload/i18n/i18n.context.js.map +1 -0
  61. package/cjs/form/file-upload/i18n/i18n.types.d.ts +13 -0
  62. package/cjs/form/file-upload/i18n/i18n.types.js +3 -0
  63. package/cjs/form/file-upload/i18n/i18n.types.js.map +1 -0
  64. package/cjs/form/file-upload/i18n/locales/nb.json +20 -0
  65. package/cjs/form/file-upload/i18n/merge.d.ts +2 -0
  66. package/cjs/form/file-upload/i18n/merge.js +29 -0
  67. package/cjs/form/file-upload/i18n/merge.js.map +1 -0
  68. package/cjs/form/file-upload/index.d.ts +7 -0
  69. package/cjs/form/file-upload/index.js +16 -0
  70. package/cjs/form/file-upload/index.js.map +1 -0
  71. package/cjs/form/file-upload/parts/Trigger.d.ts +7 -0
  72. package/cjs/form/file-upload/parts/Trigger.js +43 -0
  73. package/cjs/form/file-upload/parts/Trigger.js.map +1 -0
  74. package/cjs/form/file-upload/parts/dropzone/Dropzone.d.ts +4 -0
  75. package/cjs/form/file-upload/parts/dropzone/Dropzone.js +106 -0
  76. package/cjs/form/file-upload/parts/dropzone/Dropzone.js.map +1 -0
  77. package/cjs/form/file-upload/parts/dropzone/dropzone.types.d.ts +18 -0
  78. package/cjs/form/file-upload/parts/dropzone/dropzone.types.js +3 -0
  79. package/cjs/form/file-upload/parts/dropzone/dropzone.types.js.map +1 -0
  80. package/cjs/form/file-upload/parts/dropzone/useDropzone.d.ts +13 -0
  81. package/cjs/form/file-upload/parts/dropzone/useDropzone.js +34 -0
  82. package/cjs/form/file-upload/parts/dropzone/useDropzone.js.map +1 -0
  83. package/cjs/form/file-upload/parts/item/Item.d.ts +55 -0
  84. package/cjs/form/file-upload/parts/item/Item.js +79 -0
  85. package/cjs/form/file-upload/parts/item/Item.js.map +1 -0
  86. package/cjs/form/file-upload/parts/item/Item.types.d.ts +5 -0
  87. package/cjs/form/file-upload/parts/item/Item.types.js +3 -0
  88. package/cjs/form/file-upload/parts/item/Item.types.js.map +1 -0
  89. package/cjs/form/file-upload/parts/item/ItemButton.d.ts +12 -0
  90. package/cjs/form/file-upload/parts/item/ItemButton.js +22 -0
  91. package/cjs/form/file-upload/parts/item/ItemButton.js.map +1 -0
  92. package/cjs/form/file-upload/parts/item/ItemIcon.d.ts +9 -0
  93. package/cjs/form/file-upload/parts/item/ItemIcon.js +51 -0
  94. package/cjs/form/file-upload/parts/item/ItemIcon.js.map +1 -0
  95. package/cjs/form/file-upload/parts/item/ItemName.d.ts +9 -0
  96. package/cjs/form/file-upload/parts/item/ItemName.js +32 -0
  97. package/cjs/form/file-upload/parts/item/ItemName.js.map +1 -0
  98. package/cjs/form/file-upload/parts/item/utils/download-file.d.ts +1 -0
  99. package/cjs/form/file-upload/parts/item/utils/download-file.js +13 -0
  100. package/cjs/form/file-upload/parts/item/utils/download-file.js.map +1 -0
  101. package/cjs/form/file-upload/parts/item/utils/file-type-checker.d.ts +2 -0
  102. package/cjs/form/file-upload/parts/item/utils/file-type-checker.js +6 -0
  103. package/cjs/form/file-upload/parts/item/utils/file-type-checker.js.map +1 -0
  104. package/cjs/form/file-upload/parts/item/utils/format-file-size.d.ts +2 -0
  105. package/cjs/form/file-upload/parts/item/utils/format-file-size.js +24 -0
  106. package/cjs/form/file-upload/parts/item/utils/format-file-size.js.map +1 -0
  107. package/cjs/form/file-upload/useFileUpload.d.ts +12 -0
  108. package/cjs/form/file-upload/useFileUpload.js +33 -0
  109. package/cjs/form/file-upload/useFileUpload.js.map +1 -0
  110. package/cjs/form/file-upload/utils/is-accepted-file-type.d.ts +1 -0
  111. package/cjs/form/file-upload/utils/is-accepted-file-type.js +26 -0
  112. package/cjs/form/file-upload/utils/is-accepted-file-type.js.map +1 -0
  113. package/cjs/form/file-upload/utils/is-accepted-size.d.ts +1 -0
  114. package/cjs/form/file-upload/utils/is-accepted-size.js +11 -0
  115. package/cjs/form/file-upload/utils/is-accepted-size.js.map +1 -0
  116. package/cjs/form/file-upload/utils/validate-files.d.ts +8 -0
  117. package/cjs/form/file-upload/utils/validate-files.js +48 -0
  118. package/cjs/form/file-upload/utils/validate-files.js.map +1 -0
  119. package/cjs/form/radio/RadioGroup.d.ts +1 -1
  120. package/cjs/form/search/Search.d.ts +3 -2
  121. package/cjs/form/search/Search.js.map +1 -1
  122. package/cjs/form/select/Select.d.ts +9 -9
  123. package/cjs/form/switch/Switch.d.ts +5 -5
  124. package/cjs/form/textarea/Textarea.d.ts +5 -4
  125. package/cjs/form/textarea/Textarea.js.map +1 -1
  126. package/cjs/form/useFormField.d.ts +10 -8
  127. package/cjs/form/useFormField.js.map +1 -1
  128. package/cjs/index.d.ts +1 -0
  129. package/cjs/index.js +3 -1
  130. package/cjs/index.js.map +1 -1
  131. package/cjs/layout/bleed/Bleed.d.ts +9 -1
  132. package/cjs/layout/bleed/Bleed.js.map +1 -1
  133. package/cjs/layout/box/Box.d.ts +5 -5
  134. package/cjs/layout/grid/HGrid.d.ts +1 -3
  135. package/cjs/layout/grid/HGrid.js.map +1 -1
  136. package/cjs/layout/page/Page.d.ts +2 -2
  137. package/cjs/layout/responsive/Responsive.d.ts +2 -4
  138. package/cjs/layout/responsive/Responsive.js.map +1 -1
  139. package/cjs/layout/stack/Stack.d.ts +18 -4
  140. package/cjs/layout/stack/Stack.js.map +1 -1
  141. package/cjs/list/types.d.ts +1 -1
  142. package/cjs/loader/Loader.d.ts +0 -6
  143. package/cjs/loader/Loader.js.map +1 -1
  144. package/cjs/modal/Modal.js +2 -2
  145. package/cjs/modal/types.d.ts +8 -8
  146. package/cjs/pagination/Pagination.d.ts +3 -2
  147. package/cjs/pagination/Pagination.js.map +1 -1
  148. package/cjs/pagination/PaginationItem.d.ts +1 -1
  149. package/cjs/popover/Popover.d.ts +2 -1
  150. package/cjs/popover/Popover.js.map +1 -1
  151. package/cjs/read-more/ReadMore.d.ts +7 -7
  152. package/cjs/stepper/Step.d.ts +4 -4
  153. package/cjs/stepper/Stepper.d.ts +7 -5
  154. package/cjs/stepper/Stepper.js.map +1 -1
  155. package/cjs/table/AnimateHeight.d.ts +1 -1
  156. package/cjs/table/DataCell.d.ts +1 -3
  157. package/cjs/table/DataCell.js.map +1 -1
  158. package/cjs/tabs/TabList.d.ts +1 -1
  159. package/cjs/tabs/Tabs.d.ts +7 -7
  160. package/cjs/timeline/Timeline.d.ts +6 -3
  161. package/cjs/timeline/Timeline.js +2 -1
  162. package/cjs/timeline/Timeline.js.map +1 -1
  163. package/cjs/timeline/period/index.d.ts +3 -2
  164. package/cjs/timeline/period/index.js.map +1 -1
  165. package/cjs/tooltip/Tooltip.d.ts +19 -12
  166. package/cjs/tooltip/Tooltip.js.map +1 -1
  167. package/cjs/util/create-context.d.ts +1 -0
  168. package/cjs/util/create-context.js.map +1 -1
  169. package/cjs/util/hooks/useEventListener.d.ts +1 -1
  170. package/cjs/util/hooks/useMergeRefs.d.ts +1 -1
  171. package/esm/accordion/Accordion.d.ts +4 -4
  172. package/esm/alert/Alert.d.ts +12 -10
  173. package/esm/alert/Alert.js.map +1 -1
  174. package/esm/button/Button.d.ts +9 -8
  175. package/esm/button/Button.js.map +1 -1
  176. package/esm/chat/Chat.d.ts +6 -6
  177. package/esm/chips/Chips.d.ts +2 -2
  178. package/esm/copybutton/CopyButton.d.ts +14 -12
  179. package/esm/copybutton/CopyButton.js.map +1 -1
  180. package/esm/date/datepicker/types.d.ts +7 -6
  181. package/esm/date/hooks/useDatepicker.d.ts +4 -3
  182. package/esm/date/hooks/useDatepicker.js.map +1 -1
  183. package/esm/date/hooks/useMonthPicker.d.ts +4 -3
  184. package/esm/date/hooks/useMonthPicker.js.map +1 -1
  185. package/esm/date/monthpicker/types.d.ts +2 -1
  186. package/esm/date/parts/DateInput.d.ts +1 -1
  187. package/esm/expansion-card/ExpansionCardTitle.d.ts +1 -1
  188. package/esm/form/checkbox/CheckboxGroup.d.ts +3 -3
  189. package/esm/form/checkbox/types.d.ts +4 -4
  190. package/esm/form/combobox/ComboboxProvider.js +5 -1
  191. package/esm/form/combobox/ComboboxProvider.js.map +1 -1
  192. package/esm/form/combobox/FilteredOptions/FilteredOptions.js +14 -12
  193. package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  194. package/esm/form/combobox/FilteredOptions/filtered-options-util.d.ts +3 -3
  195. package/esm/form/combobox/FilteredOptions/filtered-options-util.js +1 -3
  196. package/esm/form/combobox/FilteredOptions/filtered-options-util.js.map +1 -1
  197. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.d.ts +8 -5
  198. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +8 -13
  199. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  200. package/esm/form/combobox/Input/Input.js +9 -7
  201. package/esm/form/combobox/Input/Input.js.map +1 -1
  202. package/esm/form/combobox/SelectedOptions/SelectedOptions.d.ts +2 -1
  203. package/esm/form/combobox/SelectedOptions/SelectedOptions.js +3 -3
  204. package/esm/form/combobox/SelectedOptions/SelectedOptions.js.map +1 -1
  205. package/esm/form/combobox/SelectedOptions/selectedOptionsContext.d.ts +10 -7
  206. package/esm/form/combobox/SelectedOptions/selectedOptionsContext.js +6 -8
  207. package/esm/form/combobox/SelectedOptions/selectedOptionsContext.js.map +1 -1
  208. package/esm/form/combobox/combobox-utils.d.ts +10 -0
  209. package/esm/form/combobox/combobox-utils.js +22 -0
  210. package/esm/form/combobox/combobox-utils.js.map +1 -0
  211. package/esm/form/combobox/customOptionsContext.d.ts +5 -4
  212. package/esm/form/combobox/customOptionsContext.js +1 -1
  213. package/esm/form/combobox/customOptionsContext.js.map +1 -1
  214. package/esm/form/combobox/types.d.ts +33 -22
  215. package/esm/form/error-summary/ErrorSummary.d.ts +5 -5
  216. package/esm/form/file-upload/FileUpload.context.d.ts +8 -0
  217. package/esm/form/file-upload/FileUpload.context.js +3 -0
  218. package/esm/form/file-upload/FileUpload.context.js.map +1 -0
  219. package/esm/form/file-upload/FileUpload.d.ts +118 -0
  220. package/esm/form/file-upload/FileUpload.js +44 -0
  221. package/esm/form/file-upload/FileUpload.js.map +1 -0
  222. package/esm/form/file-upload/FileUpload.types.d.ts +55 -0
  223. package/esm/form/file-upload/FileUpload.types.js +5 -0
  224. package/esm/form/file-upload/FileUpload.types.js.map +1 -0
  225. package/esm/form/file-upload/i18n/get.d.ts +2 -0
  226. package/esm/form/file-upload/i18n/get.js +34 -0
  227. package/esm/form/file-upload/i18n/get.js.map +1 -0
  228. package/esm/form/file-upload/i18n/i18n.context.d.ts +11 -0
  229. package/esm/form/file-upload/i18n/i18n.context.js +32 -0
  230. package/esm/form/file-upload/i18n/i18n.context.js.map +1 -0
  231. package/esm/form/file-upload/i18n/i18n.types.d.ts +13 -0
  232. package/esm/form/file-upload/i18n/i18n.types.js +2 -0
  233. package/esm/form/file-upload/i18n/i18n.types.js.map +1 -0
  234. package/esm/form/file-upload/i18n/locales/nb.json +20 -0
  235. package/esm/form/file-upload/i18n/merge.d.ts +2 -0
  236. package/esm/form/file-upload/i18n/merge.js +25 -0
  237. package/esm/form/file-upload/i18n/merge.js.map +1 -0
  238. package/esm/form/file-upload/index.d.ts +7 -0
  239. package/esm/form/file-upload/index.js +6 -0
  240. package/esm/form/file-upload/index.js.map +1 -0
  241. package/esm/form/file-upload/parts/Trigger.d.ts +7 -0
  242. package/esm/form/file-upload/parts/Trigger.js +18 -0
  243. package/esm/form/file-upload/parts/Trigger.js.map +1 -0
  244. package/esm/form/file-upload/parts/dropzone/Dropzone.d.ts +4 -0
  245. package/esm/form/file-upload/parts/dropzone/Dropzone.js +78 -0
  246. package/esm/form/file-upload/parts/dropzone/Dropzone.js.map +1 -0
  247. package/esm/form/file-upload/parts/dropzone/dropzone.types.d.ts +18 -0
  248. package/esm/form/file-upload/parts/dropzone/dropzone.types.js +2 -0
  249. package/esm/form/file-upload/parts/dropzone/dropzone.types.js.map +1 -0
  250. package/esm/form/file-upload/parts/dropzone/useDropzone.d.ts +13 -0
  251. package/esm/form/file-upload/parts/dropzone/useDropzone.js +30 -0
  252. package/esm/form/file-upload/parts/dropzone/useDropzone.js.map +1 -0
  253. package/esm/form/file-upload/parts/item/Item.d.ts +55 -0
  254. package/esm/form/file-upload/parts/item/Item.js +50 -0
  255. package/esm/form/file-upload/parts/item/Item.js.map +1 -0
  256. package/esm/form/file-upload/parts/item/Item.types.d.ts +5 -0
  257. package/esm/form/file-upload/parts/item/Item.types.js +2 -0
  258. package/esm/form/file-upload/parts/item/Item.types.js.map +1 -0
  259. package/esm/form/file-upload/parts/item/ItemButton.d.ts +12 -0
  260. package/esm/form/file-upload/parts/item/ItemButton.js +17 -0
  261. package/esm/form/file-upload/parts/item/ItemButton.js.map +1 -0
  262. package/esm/form/file-upload/parts/item/ItemIcon.d.ts +9 -0
  263. package/esm/form/file-upload/parts/item/ItemIcon.js +46 -0
  264. package/esm/form/file-upload/parts/item/ItemIcon.js.map +1 -0
  265. package/esm/form/file-upload/parts/item/ItemName.d.ts +9 -0
  266. package/esm/form/file-upload/parts/item/ItemName.js +27 -0
  267. package/esm/form/file-upload/parts/item/ItemName.js.map +1 -0
  268. package/esm/form/file-upload/parts/item/utils/download-file.d.ts +1 -0
  269. package/esm/form/file-upload/parts/item/utils/download-file.js +9 -0
  270. package/esm/form/file-upload/parts/item/utils/download-file.js.map +1 -0
  271. package/esm/form/file-upload/parts/item/utils/file-type-checker.d.ts +2 -0
  272. package/esm/form/file-upload/parts/item/utils/file-type-checker.js +2 -0
  273. package/esm/form/file-upload/parts/item/utils/file-type-checker.js.map +1 -0
  274. package/esm/form/file-upload/parts/item/utils/format-file-size.d.ts +2 -0
  275. package/esm/form/file-upload/parts/item/utils/format-file-size.js +20 -0
  276. package/esm/form/file-upload/parts/item/utils/format-file-size.js.map +1 -0
  277. package/esm/form/file-upload/useFileUpload.d.ts +12 -0
  278. package/esm/form/file-upload/useFileUpload.js +29 -0
  279. package/esm/form/file-upload/useFileUpload.js.map +1 -0
  280. package/esm/form/file-upload/utils/is-accepted-file-type.d.ts +1 -0
  281. package/esm/form/file-upload/utils/is-accepted-file-type.js +22 -0
  282. package/esm/form/file-upload/utils/is-accepted-file-type.js.map +1 -0
  283. package/esm/form/file-upload/utils/is-accepted-size.d.ts +1 -0
  284. package/esm/form/file-upload/utils/is-accepted-size.js +7 -0
  285. package/esm/form/file-upload/utils/is-accepted-size.js.map +1 -0
  286. package/esm/form/file-upload/utils/validate-files.d.ts +8 -0
  287. package/esm/form/file-upload/utils/validate-files.js +44 -0
  288. package/esm/form/file-upload/utils/validate-files.js.map +1 -0
  289. package/esm/form/radio/RadioGroup.d.ts +1 -1
  290. package/esm/form/search/Search.d.ts +3 -2
  291. package/esm/form/search/Search.js.map +1 -1
  292. package/esm/form/select/Select.d.ts +9 -9
  293. package/esm/form/switch/Switch.d.ts +5 -5
  294. package/esm/form/textarea/Textarea.d.ts +5 -4
  295. package/esm/form/textarea/Textarea.js.map +1 -1
  296. package/esm/form/useFormField.d.ts +10 -8
  297. package/esm/form/useFormField.js.map +1 -1
  298. package/esm/index.d.ts +1 -0
  299. package/esm/index.js +1 -0
  300. package/esm/index.js.map +1 -1
  301. package/esm/layout/bleed/Bleed.d.ts +9 -1
  302. package/esm/layout/bleed/Bleed.js.map +1 -1
  303. package/esm/layout/box/Box.d.ts +5 -5
  304. package/esm/layout/grid/HGrid.d.ts +1 -3
  305. package/esm/layout/grid/HGrid.js.map +1 -1
  306. package/esm/layout/page/Page.d.ts +2 -2
  307. package/esm/layout/responsive/Responsive.d.ts +2 -4
  308. package/esm/layout/responsive/Responsive.js.map +1 -1
  309. package/esm/layout/stack/Stack.d.ts +18 -4
  310. package/esm/layout/stack/Stack.js.map +1 -1
  311. package/esm/list/types.d.ts +1 -1
  312. package/esm/loader/Loader.d.ts +0 -6
  313. package/esm/loader/Loader.js.map +1 -1
  314. package/esm/modal/Modal.js +2 -2
  315. package/esm/modal/types.d.ts +8 -8
  316. package/esm/pagination/Pagination.d.ts +3 -2
  317. package/esm/pagination/Pagination.js.map +1 -1
  318. package/esm/pagination/PaginationItem.d.ts +1 -1
  319. package/esm/popover/Popover.d.ts +2 -1
  320. package/esm/popover/Popover.js.map +1 -1
  321. package/esm/read-more/ReadMore.d.ts +7 -7
  322. package/esm/stepper/Step.d.ts +4 -4
  323. package/esm/stepper/Stepper.d.ts +7 -5
  324. package/esm/stepper/Stepper.js.map +1 -1
  325. package/esm/table/AnimateHeight.d.ts +1 -1
  326. package/esm/table/DataCell.d.ts +1 -3
  327. package/esm/table/DataCell.js.map +1 -1
  328. package/esm/tabs/TabList.d.ts +1 -1
  329. package/esm/tabs/Tabs.d.ts +7 -7
  330. package/esm/timeline/Timeline.d.ts +6 -3
  331. package/esm/timeline/Timeline.js +2 -1
  332. package/esm/timeline/Timeline.js.map +1 -1
  333. package/esm/timeline/period/index.d.ts +3 -2
  334. package/esm/timeline/period/index.js.map +1 -1
  335. package/esm/tooltip/Tooltip.d.ts +19 -12
  336. package/esm/tooltip/Tooltip.js.map +1 -1
  337. package/esm/util/create-context.d.ts +1 -0
  338. package/esm/util/create-context.js.map +1 -1
  339. package/esm/util/hooks/useEventListener.d.ts +1 -1
  340. package/esm/util/hooks/useMergeRefs.d.ts +1 -1
  341. package/package.json +13 -3
  342. package/src/accordion/Accordion.tsx +4 -4
  343. package/src/accordion/accordion.stories.tsx +0 -2
  344. package/src/alert/Alert.tsx +12 -10
  345. package/src/button/Button.tsx +9 -8
  346. package/src/chat/Chat.tsx +6 -6
  347. package/src/chips/Chips.tsx +2 -2
  348. package/src/copybutton/CopyButton.tsx +14 -12
  349. package/src/date/datepicker/datepicker.stories.tsx +0 -1
  350. package/src/date/datepicker/types.ts +7 -6
  351. package/src/date/hooks/useDatepicker.tsx +4 -3
  352. package/src/date/hooks/useMonthPicker.tsx +4 -3
  353. package/src/date/monthpicker/types.ts +2 -1
  354. package/src/date/parts/DateInput.tsx +1 -1
  355. package/src/expansion-card/ExpansionCardTitle.tsx +1 -1
  356. package/src/form/checkbox/CheckboxGroup.tsx +3 -3
  357. package/src/form/checkbox/types.ts +4 -4
  358. package/src/form/combobox/ComboboxProvider.tsx +7 -3
  359. package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +22 -15
  360. package/src/form/combobox/FilteredOptions/filtered-options-util.ts +5 -10
  361. package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +19 -29
  362. package/src/form/combobox/Input/Input.tsx +14 -8
  363. package/src/form/combobox/SelectedOptions/SelectedOptions.tsx +8 -5
  364. package/src/form/combobox/SelectedOptions/selectedOptionsContext.tsx +24 -25
  365. package/src/form/combobox/combobox-utils.test.ts +67 -0
  366. package/src/form/combobox/combobox-utils.ts +32 -0
  367. package/src/form/combobox/combobox.stories.tsx +67 -32
  368. package/src/form/combobox/combobox.test.tsx +32 -1
  369. package/src/form/combobox/customOptionsContext.tsx +9 -8
  370. package/src/form/combobox/types.ts +34 -22
  371. package/src/form/error-summary/ErrorSummary.tsx +5 -5
  372. package/src/form/file-upload/FileUpload.context.tsx +9 -0
  373. package/src/form/file-upload/FileUpload.tsx +142 -0
  374. package/src/form/file-upload/FileUpload.types.ts +57 -0
  375. package/src/form/file-upload/file-upload-dropzone.stories.tsx +123 -0
  376. package/src/form/file-upload/file-upload-item.stories.tsx +136 -0
  377. package/src/form/file-upload/file-upload.stories.tsx +236 -0
  378. package/src/form/file-upload/i18n/get.ts +48 -0
  379. package/src/form/file-upload/i18n/i18n.context.test.tsx +92 -0
  380. package/src/form/file-upload/i18n/i18n.context.ts +67 -0
  381. package/src/form/file-upload/i18n/i18n.types.ts +20 -0
  382. package/src/form/file-upload/i18n/locales/nb.json +20 -0
  383. package/src/form/file-upload/i18n/merge.ts +35 -0
  384. package/src/form/file-upload/index.ts +21 -0
  385. package/src/form/file-upload/parts/Trigger.tsx +48 -0
  386. package/src/form/file-upload/parts/dropzone/Dropzone.tsx +180 -0
  387. package/src/form/file-upload/parts/dropzone/dropzone.types.ts +22 -0
  388. package/src/form/file-upload/parts/dropzone/useDropzone.ts +43 -0
  389. package/src/form/file-upload/parts/item/Item.tsx +165 -0
  390. package/src/form/file-upload/parts/item/Item.types.ts +6 -0
  391. package/src/form/file-upload/parts/item/ItemButton.tsx +52 -0
  392. package/src/form/file-upload/parts/item/ItemIcon.tsx +74 -0
  393. package/src/form/file-upload/parts/item/ItemName.tsx +58 -0
  394. package/src/form/file-upload/parts/item/utils/download-file.ts +9 -0
  395. package/src/form/file-upload/parts/item/utils/file-type-checker.ts +4 -0
  396. package/src/form/file-upload/parts/item/utils/format-file-size.test.ts +76 -0
  397. package/src/form/file-upload/parts/item/utils/format-file-size.ts +25 -0
  398. package/src/form/file-upload/useFileUpload.ts +54 -0
  399. package/src/form/file-upload/utils/is-accepted-file-type.test.ts +69 -0
  400. package/src/form/file-upload/utils/is-accepted-file-type.ts +25 -0
  401. package/src/form/file-upload/utils/is-accepted-size.test.ts +26 -0
  402. package/src/form/file-upload/utils/is-accepted-size.ts +7 -0
  403. package/src/form/file-upload/utils/validate-files.test.ts +132 -0
  404. package/src/form/file-upload/utils/validate-files.ts +62 -0
  405. package/src/form/radio/RadioGroup.tsx +1 -1
  406. package/src/form/search/Search.tsx +3 -2
  407. package/src/form/select/Select.tsx +9 -9
  408. package/src/form/select/select.stories.tsx +32 -37
  409. package/src/form/switch/Switch.tsx +5 -5
  410. package/src/form/textarea/Textarea.tsx +5 -4
  411. package/src/form/useFormField.ts +10 -8
  412. package/src/index.ts +14 -0
  413. package/src/internal-header/header.stories.tsx +8 -5
  414. package/src/layout/bleed/Bleed.tsx +9 -1
  415. package/src/layout/box/Box.tsx +5 -5
  416. package/src/layout/grid/HGrid.tsx +1 -3
  417. package/src/layout/page/Page.tsx +2 -2
  418. package/src/layout/responsive/Responsive.tsx +2 -4
  419. package/src/layout/stack/Stack.tsx +18 -4
  420. package/src/list/types.ts +1 -1
  421. package/src/loader/Loader.tsx +0 -6
  422. package/src/modal/Modal.tsx +2 -2
  423. package/src/modal/types.ts +8 -8
  424. package/src/pagination/Pagination.tsx +3 -2
  425. package/src/pagination/PaginationItem.tsx +1 -1
  426. package/src/popover/Popover.tsx +2 -1
  427. package/src/read-more/ReadMore.tsx +7 -7
  428. package/src/stepper/Step.tsx +4 -4
  429. package/src/stepper/Stepper.tsx +7 -5
  430. package/src/table/AnimateHeight.tsx +1 -1
  431. package/src/table/DataCell.tsx +1 -6
  432. package/src/tabs/TabList.tsx +1 -1
  433. package/src/tabs/Tabs.tsx +7 -7
  434. package/src/timeline/Timeline.tsx +6 -3
  435. package/src/timeline/period/index.tsx +3 -2
  436. package/src/tooltip/Tooltip.tsx +19 -12
  437. package/src/util/create-context.tsx +1 -0
  438. package/src/util/hooks/useMergeRefs.ts +1 -1
@@ -0,0 +1,118 @@
1
+ import React, { HTMLAttributes } from "react";
2
+ import { ComponentTranslation } from "./i18n/i18n.types.js";
3
+ import Trigger from "./parts/Trigger.js";
4
+ import Dropzone from "./parts/dropzone/Dropzone.js";
5
+ import Item from "./parts/item/Item.js";
6
+ interface FileUploadProps extends HTMLAttributes<HTMLDivElement> {
7
+ children: React.ReactNode;
8
+ /**
9
+ * i18n-API for customizing texts and labels
10
+ */
11
+ translations?: ComponentTranslation<"FileUpload">;
12
+ }
13
+ interface FileUploadComponent extends React.ForwardRefExoticComponent<FileUploadProps & React.RefAttributes<HTMLDivElement>> {
14
+ /**
15
+ * Framed area to drag-n-drop files, upload files with button-click or copy-paste.
16
+ * @example
17
+ * Single file
18
+ * ```jsx
19
+ * <FileUpload.Dropzone
20
+ * label="Last opp fil"
21
+ * multiple={false}
22
+ * onSelect={onSelect}
23
+ * />
24
+ * ```
25
+ *
26
+ * @example
27
+ * Multiple files
28
+ * ```jsx
29
+ * <FileUpload.Dropzone
30
+ * label="Last opp fil"
31
+ * multiple={true}
32
+ * onSelect={onSelect}
33
+ * />
34
+ * ```
35
+ *
36
+ * @example
37
+ * Error
38
+ * ```jsx
39
+ * <FileUpload.Dropzone
40
+ * label="Last opp filer"
41
+ * onSelect={onSelect}
42
+ * error={error}
43
+ * />
44
+ * ```
45
+ */
46
+ Dropzone: typeof Dropzone;
47
+ /**
48
+ * Displays a file with status, file size, action and error message.
49
+ * @example
50
+ * Single
51
+ * ```jsx
52
+ * <FileUpload.Item file={file} status="uploading" />
53
+ * ```
54
+ *
55
+ * @example
56
+ * Multiple items can be semantically grouped as a list.
57
+ * ```jsx
58
+ * <FileUpload>
59
+ * <VStack gap="4" as="ul">
60
+ * <FileUpload.Item as="li" file={file} />
61
+ * <FileUpload.Item as="li" file={file2} />
62
+ * <FileUpload.Item as="li" file={file3} status="uploading" />
63
+ * </VStack>
64
+ * </FileUpload>
65
+ * ```
66
+ *
67
+ * @example
68
+ * Custom file object
69
+ * ```jsx
70
+ * <FileUpload.Item file={{ name: "fileName.pdf", size: 1_048_576 }} />
71
+ * ```
72
+ *
73
+ * @example
74
+ * Error
75
+ * ```jsx
76
+ * <FileUpload.Item file={file} error="Something went wrong" />
77
+ * ```
78
+ *
79
+ * @example
80
+ * Status & actions
81
+ * ```jsx
82
+ * <FileUpload.Item file={file} status="uploading" />
83
+ * <FileUpload.Item file={file} status="downloading" />
84
+ * <FileUpload.Item file={file} itemAction="retry" onRetry={...} />
85
+ * <FileUpload.Item file={file} itemAction="delete" onDelete={...} />
86
+ * ```
87
+ */
88
+ Item: typeof Item;
89
+ /**
90
+ * Wrapper for a button to trigger file select.
91
+ * @example
92
+ * ```jsx
93
+ * <FileUpload.Trigger onSelect={...}>
94
+ * <Button variant="secondary">Last opp filer</Button>
95
+ * </FileUpload.Trigger>
96
+ * ```
97
+ */
98
+ Trigger: typeof Trigger;
99
+ }
100
+ /**
101
+ * A set of components used to upload and display files.
102
+ * @see [📝 Documentation](https://aksel.nav.no/komponenter/core/fileupload)
103
+ * @example Dropzone
104
+ * ```jsx
105
+ * <FileUpload.Dropzone />
106
+ * ```
107
+ *
108
+ * @example
109
+ * Items
110
+ * ```jsx
111
+ * <VStack gap="4" as="ul">
112
+ * <FileUpload.Item as="li" file={myFile} />
113
+ * <FileUpload.Item as="li" file={mySecondFile} />
114
+ * </VStack>
115
+ * ```
116
+ */
117
+ export declare const FileUpload: FileUploadComponent;
118
+ export default FileUpload;
@@ -0,0 +1,44 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import cl from "clsx";
13
+ import React, { forwardRef } from "react";
14
+ import { FileUploadLocaleContextProvider } from "./FileUpload.context.js";
15
+ import Trigger from "./parts/Trigger.js";
16
+ import Dropzone from "./parts/dropzone/Dropzone.js";
17
+ import Item from "./parts/item/Item.js";
18
+ /**
19
+ * A set of components used to upload and display files.
20
+ * @see [📝 Documentation](https://aksel.nav.no/komponenter/core/fileupload)
21
+ * @example Dropzone
22
+ * ```jsx
23
+ * <FileUpload.Dropzone />
24
+ * ```
25
+ *
26
+ * @example
27
+ * Items
28
+ * ```jsx
29
+ * <VStack gap="4" as="ul">
30
+ * <FileUpload.Item as="li" file={myFile} />
31
+ * <FileUpload.Item as="li" file={mySecondFile} />
32
+ * </VStack>
33
+ * ```
34
+ */
35
+ export const FileUpload = forwardRef((_a, ref) => {
36
+ var { children, className, translations } = _a, rest = __rest(_a, ["children", "className", "translations"]);
37
+ return (React.createElement(FileUploadLocaleContextProvider, { translations: translations },
38
+ React.createElement("div", Object.assign({ ref: ref }, rest, { className: cl("navds-file-upload", className) }), children)));
39
+ });
40
+ FileUpload.Dropzone = Dropzone;
41
+ FileUpload.Item = Item;
42
+ FileUpload.Trigger = Trigger;
43
+ export default FileUpload;
44
+ //# sourceMappingURL=FileUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUpload.js","sourceRoot":"","sources":["../../../src/form/file-upload/FileUpload.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAkB,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,OAAO,MAAM,iBAAiB,CAAC;AACtC,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,IAAI,MAAM,mBAAmB,CAAC;AAsGrC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAClC,CAAC,EAA+D,EAAE,GAAG,EAAE,EAAE;QAAxE,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,OAA4B,EAAvB,IAAI,cAA5C,yCAA8C,CAAF;IAC3C,OAAO,CACL,oBAAC,+BAA+B,IAAC,YAAY,EAAE,YAAY;QACzD,2CAAK,GAAG,EAAE,GAAG,IAAM,IAAI,IAAE,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,KACnE,QAAQ,CACL,CAC0B,CACnC,CAAC;AACJ,CAAC,CACqB,CAAC;AAEzB,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;AAE7B,eAAe,UAAU,CAAC"}
@@ -0,0 +1,55 @@
1
+ export declare const fileRejectionReason: {
2
+ FileType: "fileType";
3
+ FileSize: "fileSize";
4
+ };
5
+ export type FileRejectionReason = (typeof fileRejectionReason)[keyof typeof fileRejectionReason];
6
+ export type FileRejected = {
7
+ file: File;
8
+ error: true;
9
+ reasons: string[];
10
+ };
11
+ export type FileAccepted = {
12
+ file: File;
13
+ error: false;
14
+ };
15
+ export type FileObject = FileRejected | FileAccepted;
16
+ export type FileRejectedPartitioned = {
17
+ file: File;
18
+ reasons: string[];
19
+ };
20
+ export type FilesPartitioned = {
21
+ accepted: File[];
22
+ rejected: FileRejectedPartitioned[];
23
+ };
24
+ export interface FileUploadBaseProps {
25
+ /**
26
+ * Indicates if it is possible to select multiple files at once.
27
+ * @default true
28
+ */
29
+ multiple?: boolean;
30
+ /**
31
+ * Indicates which file types to accept.
32
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept
33
+ */
34
+ accept?: string;
35
+ /**
36
+ * Maximum size of a file to accept
37
+ */
38
+ maxSizeInBytes?: number;
39
+ /**
40
+ * Custom validator that is used to decide if a file is accepted or rejected.
41
+ * @return true if the file is accepted, otherwise a string with the reason for rejection
42
+ */
43
+ validator?: (file: File) => true | string;
44
+ /**
45
+ * Callback triggered on file select
46
+ */
47
+ onSelect: (files: FileObject[], partitionedFiles: FilesPartitioned) => void;
48
+ /**
49
+ * Disables the dropzone when current >= max, unless `disabled` prop is set to `false`.
50
+ */
51
+ fileLimit?: {
52
+ max: number;
53
+ current: number;
54
+ };
55
+ }
@@ -0,0 +1,5 @@
1
+ export const fileRejectionReason = {
2
+ FileType: "fileType",
3
+ FileSize: "fileSize",
4
+ };
5
+ //# sourceMappingURL=FileUpload.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUpload.types.js","sourceRoot":"","sources":["../../../src/form/file-upload/FileUpload.types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,QAAQ,EAAE,UAAmB;IAC7B,QAAQ,EAAE,UAAmB;CAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { TranslationObject } from "./i18n.types.js";
2
+ export declare function get(keypath: string | string[], ...objs: (TranslationObject | undefined)[]): string;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * https://github.com/Shopify/polaris/blob/main/polaris-react/src/utilities/get.ts#L3
3
+ */
4
+ const OBJECT_NOTATION_MATCHER = /(\w+)/g;
5
+ export function get(keypath, ...objs) {
6
+ const keys = Array.isArray(keypath) ? keypath : getKeypath(keypath);
7
+ for (const obj of objs) {
8
+ if (!obj) {
9
+ continue;
10
+ }
11
+ let acc = obj;
12
+ for (let i = 0; i < keys.length; i++) {
13
+ const val = acc[keys[i]];
14
+ if (val === undefined) {
15
+ continue;
16
+ }
17
+ acc = val;
18
+ }
19
+ if (typeof acc === "string") {
20
+ return acc;
21
+ }
22
+ }
23
+ throw new Error("Error translating key. The keypath does not resolve to a string.");
24
+ }
25
+ function getKeypath(str) {
26
+ const path = [];
27
+ let result;
28
+ while ((result = OBJECT_NOTATION_MATCHER.exec(str))) {
29
+ const [, first, second] = result;
30
+ path.push(first || second);
31
+ }
32
+ return path;
33
+ }
34
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/form/file-upload/i18n/get.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAEzC,MAAM,UAAU,GAAG,CACjB,OAA0B,EAC1B,GAAG,IAAuC;IAE1C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QAED,IAAI,GAAG,GAA+B,GAAG,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,GAAG,GAAG,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAA8B,CAAC;IACnC,OAAO,CAAC,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { Component, ComponentTranslation, TranslationDictionary } from "./i18n.types.js";
3
+ import nb from "./locales/nb.json";
4
+ export declare const I18nContext: import("react").Context<TranslationDictionary | TranslationDictionary[]>;
5
+ type NestedKeyOf<ObjectType extends object> = {
6
+ [Key in keyof ObjectType & (string | number)]: ObjectType[Key] extends object ? `${Key}.${NestedKeyOf<ObjectType[Key]>}` : `${Key}`;
7
+ }[keyof ObjectType & (string | number)];
8
+ export declare function useI18n<T extends Component>(componentName: T, ...local: (ComponentTranslation<T> | undefined)[]): (keypath: NestedKeyOf<(typeof nb)[T]>, options?: {
9
+ replacements: Record<string, string | number>;
10
+ }) => string;
11
+ export {};
@@ -0,0 +1,32 @@
1
+ import { createContext, useContext } from "react";
2
+ import { get } from "./get.js";
3
+ import nb from "./locales/nb.json";
4
+ /**
5
+ * https://regex101.com/r/LYKWi3/1
6
+ */
7
+ const REPLACE_REGEX = /{[^}]*}/g;
8
+ export const I18nContext = createContext(nb);
9
+ export function useI18n(componentName, ...local) {
10
+ const i18n = useContext(I18nContext);
11
+ /**
12
+ * https://github.com/Shopify/polaris/blob/2115f9ba2f5bcbf2ad15745233501bff2db81ecf/polaris-react/src/utilities/i18n/I18n.ts#L24
13
+ */
14
+ const translate = (keypath, options) => {
15
+ const text = get(keypath, ...local, ...(Array.isArray(i18n)
16
+ ? i18n.map((t) => t[componentName])
17
+ : [i18n[componentName]]));
18
+ if (options === null || options === void 0 ? void 0 : options.replacements) {
19
+ return text.replace(REPLACE_REGEX, (match) => {
20
+ const replacement = match.substring(1, match.length - 1);
21
+ if (options.replacements[replacement] === undefined) {
22
+ const replacementData = JSON.stringify(options.replacements);
23
+ throw new Error(`Error translating key '${keypath}'. No replacement syntax ({}) found for key '${replacement}'. The following replacements were passed: '${replacementData}'`);
24
+ }
25
+ return options.replacements[replacement]; // can also be a number, but JS doesn't mind...
26
+ });
27
+ }
28
+ return text;
29
+ };
30
+ return translate;
31
+ }
32
+ //# sourceMappingURL=i18n.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.context.js","sourceRoot":"","sources":["../../../../src/form/file-upload/i18n/i18n.context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAM5B,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEnC;;GAEG;AACH,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAEtC,EAAE,CAAC,CAAC;AASN,MAAM,UAAU,OAAO,CACrB,aAAgB,EAChB,GAAG,KAA8C;IAEjD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAErC;;OAEG;IACH,MAAM,SAAS,GAAG,CAChB,OAAoC,EACpC,OAA2D,EAC3D,EAAE;QACF,MAAM,IAAI,GAAG,GAAG,CACd,OAAO,EACP,GAAG,KAAK,EACR,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAC3B,CAAC;QAEF,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAEzD,IAAI,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE,CAAC;oBACpD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oBAE7D,MAAM,IAAI,KAAK,CACb,0BAA0B,OAAO,gDAAgD,WAAW,+CAA+C,eAAe,GAAG,CAC9J,CAAC;gBACJ,CAAC;gBAED,OAAO,OAAO,CAAC,YAAY,CAAC,WAAW,CAAW,CAAC,CAAC,+CAA+C;YACrG,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import nb from "./locales/nb.json";
2
+ export interface TranslationObject {
3
+ [key: string]: string | TranslationObject | undefined;
4
+ }
5
+ export interface TranslationDictionary {
6
+ [key: string]: TranslationObject | undefined;
7
+ }
8
+ type RecursivePartial<T> = {
9
+ [P in keyof T]?: RecursivePartial<T[P]>;
10
+ };
11
+ export type Component = keyof typeof nb;
12
+ export type ComponentTranslation<T extends Component> = RecursivePartial<(typeof nb)[T]>;
13
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=i18n.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.types.js","sourceRoot":"","sources":["../../../../src/form/file-upload/i18n/i18n.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ {
2
+ "FileUpload": {
3
+ "dropzone": {
4
+ "button": "Velg fil",
5
+ "buttonMultiple": "Velg filer",
6
+ "dragAndDrop": "Dra og slipp filen her",
7
+ "dragAndDropMultiple": "Dra og slipp filer her",
8
+ "drop": "Slipp",
9
+ "or": "eller",
10
+ "disabled": "Filopplasting er deaktivert",
11
+ "disabledFilelimit": "Du kan ikke laste opp flere filer"
12
+ },
13
+ "item": {
14
+ "retryButtonTitle": "Prøv å laste opp filen på nytt",
15
+ "deleteButtonTitle": "Slett filen",
16
+ "uploading": "Laster opp…",
17
+ "downloading": "Laster ned…"
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,2 @@
1
+ import { TranslationDictionary } from "./i18n.types.js";
2
+ export declare function merge(...objs: TranslationDictionary[]): TranslationDictionary;
@@ -0,0 +1,25 @@
1
+ export function merge(...objs) {
2
+ let final = {};
3
+ for (const obj of objs) {
4
+ final = mergeRecursively(final, obj);
5
+ }
6
+ return final;
7
+ }
8
+ function mergeRecursively(objA, objB) {
9
+ const objARes = Object.assign({}, objA);
10
+ for (const key in objB) {
11
+ if (!(key in objB)) {
12
+ continue;
13
+ }
14
+ const a = objARes[key];
15
+ const b = objB[key];
16
+ if (b && typeof b !== "string" && typeof a !== "string") {
17
+ objARes[key] = mergeRecursively(a, b);
18
+ }
19
+ else {
20
+ objARes[key] = b;
21
+ }
22
+ }
23
+ return objARes;
24
+ }
25
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../src/form/file-upload/i18n/merge.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,KAAK,CAAC,GAAG,IAA6B;IACpD,IAAI,KAAK,GAA0B,EAAE,CAAC;IAEtC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAO,EACP,IAA+C;IAE/C,MAAM,OAAO,qBAAQ,IAAI,CAAE,CAAC;IAE5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QAED,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { default as UNSAFE_FileUpload } from "./FileUpload.js";
2
+ export { default as UNSAFE_FileUploadDropzone } from "./parts/dropzone/Dropzone.js";
3
+ export { type FileUploadDropzoneProps } from "./parts/dropzone/dropzone.types.js";
4
+ export { default as UNSAFE_FileUploadTrigger, type FileUploadTriggerProps, } from "./parts/Trigger.js";
5
+ export { type FileObject, type FileRejected, type FileAccepted, type FileRejectedPartitioned, type FilesPartitioned, type FileRejectionReason, } from "./FileUpload.types.js";
6
+ export { default as UNSAFE_FileUploadItem, type FileUploadItemProps, } from "./parts/item/Item.js";
7
+ export { type FileItem, type FileMetadata } from "./parts/item/Item.types.js";
@@ -0,0 +1,6 @@
1
+ "use client";
2
+ export { default as UNSAFE_FileUpload } from "./FileUpload.js";
3
+ export { default as UNSAFE_FileUploadDropzone } from "./parts/dropzone/Dropzone.js";
4
+ export { default as UNSAFE_FileUploadTrigger, } from "./parts/Trigger.js";
5
+ export { default as UNSAFE_FileUploadItem, } from "./parts/item/Item.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/form/file-upload/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEjF,OAAO,EACL,OAAO,IAAI,wBAAwB,GAEpC,MAAM,iBAAiB,CAAC;AASzB,OAAO,EACL,OAAO,IAAI,qBAAqB,GAEjC,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { FileUploadBaseProps } from "../FileUpload.types.js";
3
+ export interface FileUploadTriggerProps extends Omit<FileUploadBaseProps, "fileLimit"> {
4
+ children: React.ReactNode;
5
+ }
6
+ declare const Trigger: React.ForwardRefExoticComponent<FileUploadTriggerProps & React.RefAttributes<HTMLInputElement>>;
7
+ export default Trigger;
@@ -0,0 +1,18 @@
1
+ import React, { forwardRef } from "react";
2
+ import { Slot } from "../../../util/Slot.js";
3
+ import { useFileUpload } from "../useFileUpload.js";
4
+ const Trigger = forwardRef(({ children, multiple = true, accept, onSelect, validator, maxSizeInBytes, }, ref) => {
5
+ const { onChange, inputRef, mergedRef } = useFileUpload({
6
+ ref,
7
+ onSelect,
8
+ validator,
9
+ accept,
10
+ maxSizeInBytes,
11
+ disabled: false,
12
+ });
13
+ return (React.createElement(React.Fragment, null,
14
+ React.createElement(Slot, { onClick: () => { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click(); } }, children),
15
+ React.createElement("input", { ref: mergedRef, type: "file", style: { display: "none" }, multiple: multiple, accept: accept, onChange: onChange })));
16
+ });
17
+ export default Trigger;
18
+ //# sourceMappingURL=Trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Trigger.js","sourceRoot":"","sources":["../../../../src/form/file-upload/parts/Trigger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD,MAAM,OAAO,GAAG,UAAU,CACxB,CACE,EACE,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,MAAM,EACN,QAAQ,EACR,SAAS,EACT,cAAc,GACS,EACzB,GAAG,EACH,EAAE;IACF,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;QACtD,GAAG;QACH,QAAQ;QACR,SAAS;QACT,MAAM;QACN,cAAc;QACd,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,OAAO,CACL;QACE,oBAAC,IAAI,IAAC,OAAO,EAAE,GAAG,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA,IAAG,QAAQ,CAAQ;QACjE,+BACE,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAC1B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAClB,CACD,CACJ,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { FileUploadDropzoneProps } from "./dropzone.types.js";
3
+ declare const Dropzone: React.ForwardRefExoticComponent<FileUploadDropzoneProps & React.RefAttributes<HTMLInputElement>>;
4
+ export default Dropzone;
@@ -0,0 +1,78 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import cl from "clsx";
13
+ import React, { forwardRef } from "react";
14
+ import { CircleSlashIcon, CloudUpIcon } from "@navikt/aksel-icons";
15
+ import { Button } from "../../../../button/index.js";
16
+ import { BodyShort, ErrorMessage, Label } from "../../../../typography/index.js";
17
+ import { composeEventHandlers } from "../../../../util/composeEventHandlers.js";
18
+ import { useId } from "../../../../util/hooks/index.js";
19
+ import { omit } from "../../../../util/omit.js";
20
+ import { useFormField } from "../../../useFormField.js";
21
+ import { useFileUploadTranslation } from "../../FileUpload.context.js";
22
+ import { useI18n } from "../../i18n/i18n.context.js";
23
+ import { useFileUpload } from "../../useFileUpload.js";
24
+ import { useDropzone } from "./useDropzone.js";
25
+ const Dropzone = forwardRef((props, ref) => {
26
+ const { onSelect, error, label, description, className, multiple = true, accept, validator, maxSizeInBytes, fileLimit, icon: DropzoneIcon = CloudUpIcon, disabled, translations, onClick } = props, rest = __rest(props, ["onSelect", "error", "label", "description", "className", "multiple", "accept", "validator", "maxSizeInBytes", "fileLimit", "icon", "disabled", "translations", "onClick"]);
27
+ const context = useFileUploadTranslation(false);
28
+ const translate = useI18n("FileUpload", { dropzone: translations }, context === null || context === void 0 ? void 0 : context.translations);
29
+ const fileLimitReached = fileLimit && (fileLimit === null || fileLimit === void 0 ? void 0 : fileLimit.current) >= (fileLimit === null || fileLimit === void 0 ? void 0 : fileLimit.max) && (fileLimit === null || fileLimit === void 0 ? void 0 : fileLimit.max) > 0;
30
+ const _disabled = disabled !== null && disabled !== void 0 ? disabled : fileLimitReached;
31
+ const { inputProps, errorId, showErrorMsg, hasError, inputDescriptionId } = useFormField(Object.assign(Object.assign({}, props), { disabled: _disabled }), "fileUpload");
32
+ const { id: inputId, "aria-describedby": ariaDescribedby } = inputProps, inputPropsRest = __rest(inputProps, ["id", "aria-describedby"]);
33
+ const labelId = useId();
34
+ const { upload, onChange, inputRef, mergedRef } = useFileUpload({
35
+ ref,
36
+ onSelect,
37
+ validator,
38
+ accept,
39
+ maxSizeInBytes,
40
+ disabled: inputProps.disabled,
41
+ });
42
+ const dropzoneCtx = useDropzone({
43
+ upload,
44
+ disabled: inputProps.disabled,
45
+ });
46
+ return (React.createElement("div", { className: cl("navds-form-field", "navds-dropzone", className, {
47
+ "navds-dropzone--error": hasError,
48
+ "navds-dropzone--dragging": dropzoneCtx.isDraggingOver,
49
+ "navds-dropzone--disabled": inputProps.disabled,
50
+ }) },
51
+ React.createElement(Label, { htmlFor: inputId, id: labelId, className: "navds-form-field__label" }, label),
52
+ !!description && (React.createElement(BodyShort, { id: inputDescriptionId, className: "navds-form-field__description", as: "div" }, description)),
53
+ React.createElement("div", { className: "navds-dropzone__area", onDragEnter: dropzoneCtx.onDragEnter, onDragOver: dropzoneCtx.onDragOver, onDragLeave: dropzoneCtx.onDragLeave, onDrop: dropzoneCtx.onDrop, onClick: composeEventHandlers(onClick, () => { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }) },
54
+ !inputProps.disabled && (React.createElement(React.Fragment, null,
55
+ React.createElement("div", { className: "navds-dropzone__area-icon" },
56
+ React.createElement(DropzoneIcon, { fontSize: "1.5rem", "aria-hidden": true })),
57
+ React.createElement("div", { className: "navds-dropzone__area-release" },
58
+ React.createElement("div", { className: "navds-dropzone__area-release__icon" },
59
+ React.createElement(DropzoneIcon, { "aria-hidden": true })),
60
+ React.createElement("span", { "aria-hidden": !dropzoneCtx.isDraggingOver, className: "navds-dropzone__area-release__text" }, translate("dropzone.drop"))),
61
+ React.createElement("div", { "aria-hidden": true },
62
+ React.createElement(BodyShort, { as: "div", spacing: true }, multiple
63
+ ? translate("dropzone.dragAndDropMultiple")
64
+ : translate("dropzone.dragAndDrop")),
65
+ React.createElement(BodyShort, { as: "div" }, translate("dropzone.or"))),
66
+ React.createElement(Button, Object.assign({}, omit(rest, ["errorId"]), inputPropsRest, { "aria-describedby": cl(labelId, ariaDescribedby), className: "navds-dropzone__area-button", type: "button", variant: "secondary" }), multiple
67
+ ? translate("dropzone.buttonMultiple")
68
+ : translate("dropzone.button")))),
69
+ inputProps.disabled && (React.createElement("div", { className: "navds-dropzone__area-disabled" },
70
+ React.createElement(CircleSlashIcon, { "aria-hidden": true, fontSize: "1.75rem" }),
71
+ React.createElement(BodyShort, { as: "div" }, fileLimitReached
72
+ ? translate("dropzone.disabledFilelimit")
73
+ : translate("dropzone.disabled")))),
74
+ React.createElement("input", { id: inputId, type: "file", style: { display: "none" }, multiple: multiple, accept: accept, onChange: onChange, ref: mergedRef })),
75
+ React.createElement("div", { className: "navds-form-field__error", id: errorId, "aria-relevant": "additions removals", "aria-live": "polite" }, showErrorMsg && React.createElement(ErrorMessage, null, error))));
76
+ });
77
+ export default Dropzone;
78
+ //# sourceMappingURL=Dropzone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropzone.js","sourceRoot":"","sources":["../../../../../src/form/file-upload/parts/dropzone/Dropzone.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,QAAQ,GAAG,UAAU,CACzB,CAAC,KAA8B,EAAE,GAAG,EAAE,EAAE;IACtC,MAAM,EACJ,QAAQ,EACR,KAAK,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,QAAQ,GAAG,IAAI,EACf,MAAM,EACN,SAAS,EACT,cAAc,EACd,SAAS,EACT,IAAI,EAAE,YAAY,GAAG,WAAW,EAChC,QAAQ,EACR,YAAY,EACZ,OAAO,KAEL,KAAK,EADJ,IAAI,UACL,KAAK,EAhBH,2KAgBL,CAAQ,CAAC;IAEV,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,OAAO,CACvB,YAAY,EACZ,EAAE,QAAQ,EAAE,YAAY,EAAE,EAC1B,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,CACtB,CAAC;IAEF,MAAM,gBAAgB,GACpB,SAAS,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,MAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAA,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,IAAG,CAAC,CAAC;IAE1E,MAAM,SAAS,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,gBAAgB,CAAC;IAE/C,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,GACvE,YAAY,iCAAM,KAAK,KAAE,QAAQ,EAAE,SAAS,KAAI,YAAY,CAAC,CAAC;IAChE,MAAM,EACJ,EAAE,EAAE,OAAO,EACX,kBAAkB,EAAE,eAAe,KAEjC,UAAU,EADT,cAAc,UACf,UAAU,EAJR,0BAIL,CAAa,CAAC;IACf,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IAExB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC;QAC9D,GAAG;QACH,QAAQ;QACR,SAAS;QACT,MAAM;QACN,cAAc;QACd,QAAQ,EAAE,UAAU,CAAC,QAAQ;KAC9B,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,WAAW,CAAC;QAC9B,MAAM;QACN,QAAQ,EAAE,UAAU,CAAC,QAAQ;KAC9B,CAAC,CAAC;IAEH,OAAO,CACL,6BACE,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,SAAS,EAAE;YAC7D,uBAAuB,EAAE,QAAQ;YACjC,0BAA0B,EAAE,WAAW,CAAC,cAAc;YACtD,0BAA0B,EAAE,UAAU,CAAC,QAAQ;SAChD,CAAC;QAEF,oBAAC,KAAK,IACJ,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,OAAO,EACX,SAAS,EAAC,yBAAyB,IAElC,KAAK,CACA;QACP,CAAC,CAAC,WAAW,IAAI,CAChB,oBAAC,SAAS,IACR,EAAE,EAAE,kBAAkB,EACtB,SAAS,EAAC,+BAA+B,EACzC,EAAE,EAAC,KAAK,IAEP,WAAW,CACF,CACb;QAED,6BACE,SAAS,EAAC,sBAAsB,EAChC,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,UAAU,EAAE,WAAW,CAAC,UAAU,EAClC,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,MAAM,EAAE,WAAW,CAAC,MAAM,EAC1B,OAAO,EAAE,oBAAoB,CAC3B,OAAO,EACP,GAAG,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA,CAChC;YAEA,CAAC,UAAU,CAAC,QAAQ,IAAI,CACvB;gBACE,6BAAK,SAAS,EAAC,2BAA2B;oBACxC,oBAAC,YAAY,IAAC,QAAQ,EAAC,QAAQ,wBAAe,CAC1C;gBACN,6BAAK,SAAS,EAAC,8BAA8B;oBAC3C,6BAAK,SAAS,EAAC,oCAAoC;wBACjD,oBAAC,YAAY,0BAAe,CACxB;oBACN,6CACe,CAAC,WAAW,CAAC,cAAc,EACxC,SAAS,EAAC,oCAAoC,IAE7C,SAAS,CAAC,eAAe,CAAC,CACtB,CACH;gBACN;oBACE,oBAAC,SAAS,IAAC,EAAE,EAAC,KAAK,EAAC,OAAO,UACxB,QAAQ;wBACP,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC;wBAC3C,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAC3B;oBACZ,oBAAC,SAAS,IAAC,EAAE,EAAC,KAAK,IAAE,SAAS,CAAC,aAAa,CAAC,CAAa,CACtD;gBACN,oBAAC,MAAM,oBACD,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,EACvB,cAAc,wBACA,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,EAC9C,SAAS,EAAC,6BAA6B,EACvC,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,WAAW,KAElB,QAAQ;oBACP,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC;oBACtC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CACzB,CACR,CACJ;YAEA,UAAU,CAAC,QAAQ,IAAI,CACtB,6BAAK,SAAS,EAAC,+BAA+B;gBAC5C,oBAAC,eAAe,yBAAa,QAAQ,EAAC,SAAS,GAAG;gBAClD,oBAAC,SAAS,IAAC,EAAE,EAAC,KAAK,IAChB,gBAAgB;oBACf,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC;oBACzC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CACxB,CACR,CACP;YAED,+BACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAC1B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,SAAS,GACd,CACE;QACN,6BACE,SAAS,EAAC,yBAAyB,EACnC,EAAE,EAAE,OAAO,mBACG,oBAAoB,eACxB,QAAQ,IAEjB,YAAY,IAAI,oBAAC,YAAY,QAAE,KAAK,CAAgB,CACjD,CACF,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,18 @@
1
+ /// <reference types="react" />
2
+ import { FormFieldProps } from "../../../useFormField.js";
3
+ import { FileUploadBaseProps } from "../../FileUpload.types.js";
4
+ import { ComponentTranslation } from "../../i18n/i18n.types.js";
5
+ export interface FileUploadDropzoneProps extends FileUploadBaseProps, Omit<FormFieldProps, "size" | "readOnly">, Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "onSelect" | "onClick">, Pick<React.HTMLAttributes<HTMLDivElement>, "onClick"> {
6
+ /**
7
+ * Text shown to the user.
8
+ */
9
+ label: string;
10
+ /**
11
+ * @default CloudUpIcon
12
+ */
13
+ icon?: React.ComponentType<any>;
14
+ /**
15
+ * i18n-API for customizing texts and labels
16
+ */
17
+ translations?: ComponentTranslation<"FileUpload">["dropzone"];
18
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dropzone.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropzone.types.js","sourceRoot":"","sources":["../../../../../src/form/file-upload/parts/dropzone/dropzone.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { UseFileUploadProps } from "../../useFileUpload.js";
2
+ interface Props {
3
+ upload: (fileList: FileList) => void;
4
+ disabled: UseFileUploadProps["disabled"];
5
+ }
6
+ export declare const useDropzone: ({ upload, disabled }: Props) => {
7
+ isDraggingOver: boolean;
8
+ onDragEnter: (() => void) | undefined;
9
+ onDragOver: ((event: React.DragEvent<HTMLDivElement>) => void) | undefined;
10
+ onDragLeave: (() => void) | undefined;
11
+ onDrop: ((event: React.DragEvent<HTMLDivElement>) => void) | undefined;
12
+ };
13
+ export {};
@@ -0,0 +1,30 @@
1
+ import { useState } from "react";
2
+ export const useDropzone = ({ upload, disabled }) => {
3
+ const [isDraggingOver, setIsDraggingOver] = useState(false);
4
+ const onDragEnter = () => {
5
+ setIsDraggingOver(true);
6
+ };
7
+ const onDragOver = (event) => {
8
+ event.preventDefault(); // Prevents the browser from opening the file in a new tab
9
+ };
10
+ const onDragLeave = () => {
11
+ setIsDraggingOver(false);
12
+ };
13
+ const onDrop = (event) => {
14
+ event.preventDefault(); // Prevents the browser from opening the file in a new tab
15
+ setIsDraggingOver(false);
16
+ const fileList = event.dataTransfer.files;
17
+ if (!fileList) {
18
+ return;
19
+ }
20
+ upload(fileList);
21
+ };
22
+ return {
23
+ isDraggingOver,
24
+ onDragEnter: disabled ? undefined : onDragEnter,
25
+ onDragOver: disabled ? undefined : onDragOver,
26
+ onDragLeave: disabled ? undefined : onDragLeave,
27
+ onDrop: disabled ? undefined : onDrop,
28
+ };
29
+ };
30
+ //# sourceMappingURL=useDropzone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDropzone.js","sourceRoot":"","sources":["../../../../../src/form/file-upload/parts/dropzone/useDropzone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQjC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAS,EAAE,EAAE;IACzD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,KAAsC,EAAE,EAAE;QAC5D,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,0DAA0D;IACpF,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,KAAsC,EAAE,EAAE;QACxD,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,0DAA0D;QAClF,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEzB,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO;QACL,cAAc;QACd,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QAC/C,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QAC7C,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;QAC/C,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;KACtC,CAAC;AACJ,CAAC,CAAC"}