@umbraco-ui/uui 2.0.0 → 2.0.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 (635) hide show
  1. package/custom-elements.json +103 -1
  2. package/dist/_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js +9 -0
  3. package/dist/components/action-bar/action-bar.d.ts +0 -1
  4. package/dist/components/action-bar/action-bar.element.js +15 -12
  5. package/dist/components/action-bar/action-bar.element.js.map +1 -1
  6. package/dist/components/action-bar/action-bar.js +5 -5
  7. package/dist/components/action-bar/action-bar.js.map +1 -1
  8. package/dist/components/avatar/avatar.d.ts +0 -1
  9. package/dist/components/avatar/avatar.element.js +72 -86
  10. package/dist/components/avatar/avatar.element.js.map +1 -1
  11. package/dist/components/avatar/avatar.js +5 -5
  12. package/dist/components/avatar/avatar.js.map +1 -1
  13. package/dist/components/avatar-group/avatar-group.d.ts +0 -1
  14. package/dist/components/avatar-group/avatar-group.element.js +58 -68
  15. package/dist/components/avatar-group/avatar-group.element.js.map +1 -1
  16. package/dist/components/avatar-group/avatar-group.js +5 -5
  17. package/dist/components/avatar-group/avatar-group.js.map +1 -1
  18. package/dist/components/badge/badge.d.ts +0 -1
  19. package/dist/components/badge/badge.element.js +32 -38
  20. package/dist/components/badge/badge.element.js.map +1 -1
  21. package/dist/components/badge/badge.js +5 -5
  22. package/dist/components/badge/badge.js.map +1 -1
  23. package/dist/components/boolean-input/UUIBooleanInputEvent.js +15 -13
  24. package/dist/components/boolean-input/UUIBooleanInputEvent.js.map +1 -1
  25. package/dist/components/boolean-input/boolean-input.d.ts +0 -1
  26. package/dist/components/boolean-input/boolean-input.element.js +114 -134
  27. package/dist/components/boolean-input/boolean-input.element.js.map +1 -1
  28. package/dist/components/boolean-input/boolean-input.js +3 -0
  29. package/dist/components/box/box.d.ts +0 -1
  30. package/dist/components/box/box.element.js +74 -77
  31. package/dist/components/box/box.element.js.map +1 -1
  32. package/dist/components/box/box.js +5 -5
  33. package/dist/components/box/box.js.map +1 -1
  34. package/dist/components/breadcrumbs/breadcrumb-item.element.js +45 -50
  35. package/dist/components/breadcrumbs/breadcrumb-item.element.js.map +1 -1
  36. package/dist/components/breadcrumbs/breadcrumbs.d.ts +0 -1
  37. package/dist/components/breadcrumbs/breadcrumbs.element.js +40 -47
  38. package/dist/components/breadcrumbs/breadcrumbs.element.js.map +1 -1
  39. package/dist/components/breadcrumbs/breadcrumbs.js +5 -6
  40. package/dist/components/breadcrumbs/breadcrumbs.js.map +1 -1
  41. package/dist/components/button/button.d.ts +0 -1
  42. package/dist/components/button/button.element.js +147 -199
  43. package/dist/components/button/button.element.js.map +1 -1
  44. package/dist/components/button/button.js +5 -5
  45. package/dist/components/button/button.js.map +1 -1
  46. package/dist/components/button-copy-text/UUICopyTextEvent.js +16 -12
  47. package/dist/components/button-copy-text/UUICopyTextEvent.js.map +1 -1
  48. package/dist/components/button-copy-text/button-copy-text.d.ts +0 -1
  49. package/dist/components/button-copy-text/button-copy-text.element.js +78 -93
  50. package/dist/components/button-copy-text/button-copy-text.element.js.map +1 -1
  51. package/dist/components/button-copy-text/button-copy-text.js +6 -7
  52. package/dist/components/button-copy-text/button-copy-text.js.map +1 -1
  53. package/dist/components/button-group/button-group.d.ts +0 -1
  54. package/dist/components/button-group/button-group.element.js +19 -14
  55. package/dist/components/button-group/button-group.element.js.map +1 -1
  56. package/dist/components/button-group/button-group.js +5 -5
  57. package/dist/components/button-group/button-group.js.map +1 -1
  58. package/dist/components/button-inline-create/UUIButtonInlineCreateEvent.js +16 -14
  59. package/dist/components/button-inline-create/UUIButtonInlineCreateEvent.js.map +1 -1
  60. package/dist/components/button-inline-create/button-inline-create.d.ts +0 -1
  61. package/dist/components/button-inline-create/button-inline-create.element.js +63 -88
  62. package/dist/components/button-inline-create/button-inline-create.element.js.map +1 -1
  63. package/dist/components/button-inline-create/button-inline-create.js +6 -7
  64. package/dist/components/button-inline-create/button-inline-create.js.map +1 -1
  65. package/dist/components/card/UUICardEvent.js +9 -7
  66. package/dist/components/card/UUICardEvent.js.map +1 -1
  67. package/dist/components/card/card.d.ts +0 -1
  68. package/dist/components/card/card.element.d.ts +7 -0
  69. package/dist/components/card/card.element.js +72 -69
  70. package/dist/components/card/card.element.js.map +1 -1
  71. package/dist/components/card/card.js +6 -7
  72. package/dist/components/card/card.js.map +1 -1
  73. package/dist/components/card-block-type/card-block-type.d.ts +0 -1
  74. package/dist/components/card-block-type/card-block-type.element.js +55 -74
  75. package/dist/components/card-block-type/card-block-type.element.js.map +1 -1
  76. package/dist/components/card-block-type/card-block-type.js +5 -5
  77. package/dist/components/card-block-type/card-block-type.js.map +1 -1
  78. package/dist/components/card-content-node/card-content-node.d.ts +0 -1
  79. package/dist/components/card-content-node/card-content-node.element.d.ts +1 -0
  80. package/dist/components/card-content-node/card-content-node.element.js +82 -83
  81. package/dist/components/card-content-node/card-content-node.element.js.map +1 -1
  82. package/dist/components/card-content-node/card-content-node.js +5 -5
  83. package/dist/components/card-content-node/card-content-node.js.map +1 -1
  84. package/dist/components/card-media/card-media.d.ts +0 -1
  85. package/dist/components/card-media/card-media.element.d.ts +4 -0
  86. package/dist/components/card-media/card-media.element.js +103 -89
  87. package/dist/components/card-media/card-media.element.js.map +1 -1
  88. package/dist/components/card-media/card-media.js +5 -5
  89. package/dist/components/card-media/card-media.js.map +1 -1
  90. package/dist/components/card-user/card-user.d.ts +0 -1
  91. package/dist/components/card-user/card-user.element.js +57 -72
  92. package/dist/components/card-user/card-user.element.js.map +1 -1
  93. package/dist/components/card-user/card-user.js +5 -5
  94. package/dist/components/card-user/card-user.js.map +1 -1
  95. package/dist/components/checkbox/checkbox.d.ts +0 -1
  96. package/dist/components/checkbox/checkbox.element.js +41 -22
  97. package/dist/components/checkbox/checkbox.element.js.map +1 -1
  98. package/dist/components/checkbox/checkbox.js +5 -5
  99. package/dist/components/checkbox/checkbox.js.map +1 -1
  100. package/dist/components/color-area/UUIColorAreaEvent.js +15 -13
  101. package/dist/components/color-area/UUIColorAreaEvent.js.map +1 -1
  102. package/dist/components/color-area/color-area.d.ts +0 -1
  103. package/dist/components/color-area/color-area.element.js +137 -174
  104. package/dist/components/color-area/color-area.element.js.map +1 -1
  105. package/dist/components/color-area/color-area.js +6 -7
  106. package/dist/components/color-area/color-area.js.map +1 -1
  107. package/dist/components/color-picker/UUIColorPickerEvent.js +15 -13
  108. package/dist/components/color-picker/UUIColorPickerEvent.js.map +1 -1
  109. package/dist/components/color-picker/color-picker.d.ts +0 -1
  110. package/dist/components/color-picker/color-picker.element.js +293 -334
  111. package/dist/components/color-picker/color-picker.element.js.map +1 -1
  112. package/dist/components/color-picker/color-picker.js +6 -7
  113. package/dist/components/color-picker/color-picker.js.map +1 -1
  114. package/dist/components/color-slider/UUIColorSliderEvent.js +15 -13
  115. package/dist/components/color-slider/UUIColorSliderEvent.js.map +1 -1
  116. package/dist/components/color-slider/color-slider.d.ts +0 -1
  117. package/dist/components/color-slider/color-slider.element.js +169 -219
  118. package/dist/components/color-slider/color-slider.element.js.map +1 -1
  119. package/dist/components/color-slider/color-slider.js +6 -7
  120. package/dist/components/color-slider/color-slider.js.map +1 -1
  121. package/dist/components/color-swatch/color-swatch.d.ts +0 -1
  122. package/dist/components/color-swatch/color-swatch.element.d.ts +1 -1
  123. package/dist/components/color-swatch/color-swatch.element.js +215 -201
  124. package/dist/components/color-swatch/color-swatch.element.js.map +1 -1
  125. package/dist/components/color-swatch/color-swatch.js +5 -5
  126. package/dist/components/color-swatch/color-swatch.js.map +1 -1
  127. package/dist/components/color-swatches/UUIColorSwatchesEvent.js +15 -13
  128. package/dist/components/color-swatches/UUIColorSwatchesEvent.js.map +1 -1
  129. package/dist/components/color-swatches/color-swatches.d.ts +0 -1
  130. package/dist/components/color-swatches/color-swatches.element.js +115 -132
  131. package/dist/components/color-swatches/color-swatches.element.js.map +1 -1
  132. package/dist/components/color-swatches/color-swatches.js +6 -7
  133. package/dist/components/color-swatches/color-swatches.js.map +1 -1
  134. package/dist/components/combobox/UUIComboboxEvent.js +18 -14
  135. package/dist/components/combobox/UUIComboboxEvent.js.map +1 -1
  136. package/dist/components/combobox/combobox.d.ts +0 -1
  137. package/dist/components/combobox/combobox.element.js +321 -425
  138. package/dist/components/combobox/combobox.element.js.map +1 -1
  139. package/dist/components/combobox/combobox.js +6 -7
  140. package/dist/components/combobox/combobox.js.map +1 -1
  141. package/dist/components/combobox-list/UUIComboboxListEvent.js +18 -14
  142. package/dist/components/combobox-list/UUIComboboxListEvent.js.map +1 -1
  143. package/dist/components/combobox-list/combobox-list-option.element.js +88 -80
  144. package/dist/components/combobox-list/combobox-list-option.element.js.map +1 -1
  145. package/dist/components/combobox-list/combobox-list.d.ts +0 -1
  146. package/dist/components/combobox-list/combobox-list.element.js +218 -275
  147. package/dist/components/combobox-list/combobox-list.element.js.map +1 -1
  148. package/dist/components/combobox-list/combobox-list.js +6 -8
  149. package/dist/components/combobox-list/combobox-list.js.map +1 -1
  150. package/dist/components/dialog/dialog.d.ts +0 -1
  151. package/dist/components/dialog/dialog.element.js +19 -14
  152. package/dist/components/dialog/dialog.element.js.map +1 -1
  153. package/dist/components/dialog/dialog.js +5 -5
  154. package/dist/components/dialog/dialog.js.map +1 -1
  155. package/dist/components/dialog-layout/dialog-layout.d.ts +0 -1
  156. package/dist/components/dialog-layout/dialog-layout.element.js +59 -64
  157. package/dist/components/dialog-layout/dialog-layout.element.js.map +1 -1
  158. package/dist/components/dialog-layout/dialog-layout.js +5 -5
  159. package/dist/components/dialog-layout/dialog-layout.js.map +1 -1
  160. package/dist/components/file-dropzone/UUIFileDropzoneEvent.js +18 -14
  161. package/dist/components/file-dropzone/UUIFileDropzoneEvent.js.map +1 -1
  162. package/dist/components/file-dropzone/file-dropzone.d.ts +0 -1
  163. package/dist/components/file-dropzone/file-dropzone.element.js +214 -257
  164. package/dist/components/file-dropzone/file-dropzone.element.js.map +1 -1
  165. package/dist/components/file-dropzone/file-dropzone.js +6 -7
  166. package/dist/components/file-dropzone/file-dropzone.js.map +1 -1
  167. package/dist/components/file-preview/UUIFileSize.js +46 -19
  168. package/dist/components/file-preview/UUIFileSize.js.map +1 -1
  169. package/dist/components/file-preview/file-preview.d.ts +0 -1
  170. package/dist/components/file-preview/file-preview.element.js +78 -103
  171. package/dist/components/file-preview/file-preview.element.js.map +1 -1
  172. package/dist/components/file-preview/file-preview.js +6 -5
  173. package/dist/components/file-preview/file-preview.js.map +1 -1
  174. package/dist/components/form/form.d.ts +0 -1
  175. package/dist/components/form/form.element.js +46 -46
  176. package/dist/components/form/form.element.js.map +1 -1
  177. package/dist/components/form/form.js +5 -5
  178. package/dist/components/form/form.js.map +1 -1
  179. package/dist/components/form-layout-item/form-layout-item.d.ts +0 -1
  180. package/dist/components/form-layout-item/form-layout-item.element.js +39 -45
  181. package/dist/components/form-layout-item/form-layout-item.element.js.map +1 -1
  182. package/dist/components/form-layout-item/form-layout-item.js +5 -5
  183. package/dist/components/form-layout-item/form-layout-item.js.map +1 -1
  184. package/dist/components/form-validation-message/form-validation-message.d.ts +0 -1
  185. package/dist/components/form-validation-message/form-validation-message.element.js +71 -89
  186. package/dist/components/form-validation-message/form-validation-message.element.js.map +1 -1
  187. package/dist/components/form-validation-message/form-validation-message.js +5 -5
  188. package/dist/components/form-validation-message/form-validation-message.js.map +1 -1
  189. package/dist/components/icon/UUIIconRequestEvent.js +21 -19
  190. package/dist/components/icon/UUIIconRequestEvent.js.map +1 -1
  191. package/dist/components/icon/icon.d.ts +0 -1
  192. package/dist/components/icon/icon.element.js +93 -117
  193. package/dist/components/icon/icon.element.js.map +1 -1
  194. package/dist/components/icon/icon.js +6 -7
  195. package/dist/components/icon/icon.js.map +1 -1
  196. package/dist/components/icon-registry/UUIIconHost.js +16 -17
  197. package/dist/components/icon-registry/UUIIconHost.js.map +1 -1
  198. package/dist/components/icon-registry/UUIIconRegistry.js +67 -77
  199. package/dist/components/icon-registry/UUIIconRegistry.js.map +1 -1
  200. package/dist/components/icon-registry/icon-registry.d.ts +0 -1
  201. package/dist/components/icon-registry/icon-registry.element.js +39 -48
  202. package/dist/components/icon-registry/icon-registry.element.js.map +1 -1
  203. package/dist/components/icon-registry/icon-registry.js +7 -6
  204. package/dist/components/icon-registry/icon-registry.js.map +1 -1
  205. package/dist/components/icon-registry-essential/UUIIconRegistryEssential.js +44 -42
  206. package/dist/components/icon-registry-essential/UUIIconRegistryEssential.js.map +1 -1
  207. package/dist/components/icon-registry-essential/icon-registry-essential.d.ts +0 -1
  208. package/dist/components/icon-registry-essential/icon-registry-essential.element.js +15 -9
  209. package/dist/components/icon-registry-essential/icon-registry-essential.element.js.map +1 -1
  210. package/dist/components/icon-registry-essential/icon-registry-essential.js +6 -39
  211. package/dist/components/icon-registry-essential/icon-registry-essential.js.map +1 -1
  212. package/dist/components/icon-registry-essential/svgs/iconAdd.js +6 -5
  213. package/dist/components/icon-registry-essential/svgs/iconAdd.js.map +1 -1
  214. package/dist/components/icon-registry-essential/svgs/iconAlert.js +6 -5
  215. package/dist/components/icon-registry-essential/svgs/iconAlert.js.map +1 -1
  216. package/dist/components/icon-registry-essential/svgs/iconAttachment.js +6 -5
  217. package/dist/components/icon-registry-essential/svgs/iconAttachment.js.map +1 -1
  218. package/dist/components/icon-registry-essential/svgs/iconCalendar.js +6 -5
  219. package/dist/components/icon-registry-essential/svgs/iconCalendar.js.map +1 -1
  220. package/dist/components/icon-registry-essential/svgs/iconCheck.js +6 -5
  221. package/dist/components/icon-registry-essential/svgs/iconCheck.js.map +1 -1
  222. package/dist/components/icon-registry-essential/svgs/iconClipboard.js +6 -5
  223. package/dist/components/icon-registry-essential/svgs/iconClipboard.js.map +1 -1
  224. package/dist/components/icon-registry-essential/svgs/iconCode.js +6 -5
  225. package/dist/components/icon-registry-essential/svgs/iconCode.js.map +1 -1
  226. package/dist/components/icon-registry-essential/svgs/iconColorPicker.js +6 -5
  227. package/dist/components/icon-registry-essential/svgs/iconColorPicker.js.map +1 -1
  228. package/dist/components/icon-registry-essential/svgs/iconCopy.js +6 -5
  229. package/dist/components/icon-registry-essential/svgs/iconCopy.js.map +1 -1
  230. package/dist/components/icon-registry-essential/svgs/iconDelete.js +6 -5
  231. package/dist/components/icon-registry-essential/svgs/iconDelete.js.map +1 -1
  232. package/dist/components/icon-registry-essential/svgs/iconDocument.js +6 -5
  233. package/dist/components/icon-registry-essential/svgs/iconDocument.js.map +1 -1
  234. package/dist/components/icon-registry-essential/svgs/iconDownload.js +6 -5
  235. package/dist/components/icon-registry-essential/svgs/iconDownload.js.map +1 -1
  236. package/dist/components/icon-registry-essential/svgs/iconDrag.js +6 -5
  237. package/dist/components/icon-registry-essential/svgs/iconDrag.js.map +1 -1
  238. package/dist/components/icon-registry-essential/svgs/iconEdit.js +6 -5
  239. package/dist/components/icon-registry-essential/svgs/iconEdit.js.map +1 -1
  240. package/dist/components/icon-registry-essential/svgs/iconFavorite.js +6 -5
  241. package/dist/components/icon-registry-essential/svgs/iconFavorite.js.map +1 -1
  242. package/dist/components/icon-registry-essential/svgs/iconFolder.js +6 -5
  243. package/dist/components/icon-registry-essential/svgs/iconFolder.js.map +1 -1
  244. package/dist/components/icon-registry-essential/svgs/iconForbidden.js +6 -5
  245. package/dist/components/icon-registry-essential/svgs/iconForbidden.js.map +1 -1
  246. package/dist/components/icon-registry-essential/svgs/iconInfo.js +6 -5
  247. package/dist/components/icon-registry-essential/svgs/iconInfo.js.map +1 -1
  248. package/dist/components/icon-registry-essential/svgs/iconLink.js +6 -5
  249. package/dist/components/icon-registry-essential/svgs/iconLink.js.map +1 -1
  250. package/dist/components/icon-registry-essential/svgs/iconLock.js +6 -5
  251. package/dist/components/icon-registry-essential/svgs/iconLock.js.map +1 -1
  252. package/dist/components/icon-registry-essential/svgs/iconPause.js +6 -5
  253. package/dist/components/icon-registry-essential/svgs/iconPause.js.map +1 -1
  254. package/dist/components/icon-registry-essential/svgs/iconPicture.js +6 -5
  255. package/dist/components/icon-registry-essential/svgs/iconPicture.js.map +1 -1
  256. package/dist/components/icon-registry-essential/svgs/iconPlay.js +6 -5
  257. package/dist/components/icon-registry-essential/svgs/iconPlay.js.map +1 -1
  258. package/dist/components/icon-registry-essential/svgs/iconRemove.js +6 -5
  259. package/dist/components/icon-registry-essential/svgs/iconRemove.js.map +1 -1
  260. package/dist/components/icon-registry-essential/svgs/iconSearch.js +6 -5
  261. package/dist/components/icon-registry-essential/svgs/iconSearch.js.map +1 -1
  262. package/dist/components/icon-registry-essential/svgs/iconSee.js +6 -5
  263. package/dist/components/icon-registry-essential/svgs/iconSee.js.map +1 -1
  264. package/dist/components/icon-registry-essential/svgs/iconSettings.js +6 -5
  265. package/dist/components/icon-registry-essential/svgs/iconSettings.js.map +1 -1
  266. package/dist/components/icon-registry-essential/svgs/iconSubtract.js +6 -5
  267. package/dist/components/icon-registry-essential/svgs/iconSubtract.js.map +1 -1
  268. package/dist/components/icon-registry-essential/svgs/iconSync.js +6 -5
  269. package/dist/components/icon-registry-essential/svgs/iconSync.js.map +1 -1
  270. package/dist/components/icon-registry-essential/svgs/iconUnlock.js +6 -5
  271. package/dist/components/icon-registry-essential/svgs/iconUnlock.js.map +1 -1
  272. package/dist/components/icon-registry-essential/svgs/iconUnsee.js +6 -5
  273. package/dist/components/icon-registry-essential/svgs/iconUnsee.js.map +1 -1
  274. package/dist/components/icon-registry-essential/svgs/iconWand.js +6 -5
  275. package/dist/components/icon-registry-essential/svgs/iconWand.js.map +1 -1
  276. package/dist/components/icon-registry-essential/svgs/iconWrong.js +6 -5
  277. package/dist/components/icon-registry-essential/svgs/iconWrong.js.map +1 -1
  278. package/dist/components/icon-registry-essential/svgs/index.js +34 -0
  279. package/dist/components/index.js +206 -0
  280. package/dist/components/input/UUIInputEvent.js +18 -14
  281. package/dist/components/input/UUIInputEvent.js.map +1 -1
  282. package/dist/components/input/input.d.ts +0 -1
  283. package/dist/components/input/input.element.js +176 -201
  284. package/dist/components/input/input.element.js.map +1 -1
  285. package/dist/components/input/input.js +6 -7
  286. package/dist/components/input/input.js.map +1 -1
  287. package/dist/components/input-file/input-file.d.ts +0 -1
  288. package/dist/components/input-file/input-file.element.js +137 -211
  289. package/dist/components/input-file/input-file.element.js.map +1 -1
  290. package/dist/components/input-file/input-file.js +5 -5
  291. package/dist/components/input-file/input-file.js.map +1 -1
  292. package/dist/components/input-lock/UUIInputLockEvent.js +15 -13
  293. package/dist/components/input-lock/UUIInputLockEvent.js.map +1 -1
  294. package/dist/components/input-lock/input-lock.d.ts +0 -1
  295. package/dist/components/input-lock/input-lock.element.js +69 -105
  296. package/dist/components/input-lock/input-lock.element.js.map +1 -1
  297. package/dist/components/input-lock/input-lock.js +6 -7
  298. package/dist/components/input-lock/input-lock.js.map +1 -1
  299. package/dist/components/input-password/input-password.d.ts +0 -1
  300. package/dist/components/input-password/input-password.element.js +45 -90
  301. package/dist/components/input-password/input-password.element.js.map +1 -1
  302. package/dist/components/input-password/input-password.js +5 -5
  303. package/dist/components/input-password/input-password.js.map +1 -1
  304. package/dist/components/keyboard-shortcut/key.element.js +19 -14
  305. package/dist/components/keyboard-shortcut/key.element.js.map +1 -1
  306. package/dist/components/keyboard-shortcut/keyboard-shortcut.d.ts +0 -1
  307. package/dist/components/keyboard-shortcut/keyboard-shortcut.element.js +19 -14
  308. package/dist/components/keyboard-shortcut/keyboard-shortcut.element.js.map +1 -1
  309. package/dist/components/keyboard-shortcut/keyboard-shortcut.js +5 -6
  310. package/dist/components/keyboard-shortcut/keyboard-shortcut.js.map +1 -1
  311. package/dist/components/label/label.d.ts +0 -1
  312. package/dist/components/label/label.element.js +52 -54
  313. package/dist/components/label/label.element.js.map +1 -1
  314. package/dist/components/label/label.js +5 -5
  315. package/dist/components/label/label.js.map +1 -1
  316. package/dist/components/loader/loader.d.ts +0 -1
  317. package/dist/components/loader/loader.element.js +18 -14
  318. package/dist/components/loader/loader.element.js.map +1 -1
  319. package/dist/components/loader/loader.js +5 -5
  320. package/dist/components/loader/loader.js.map +1 -1
  321. package/dist/components/loader-bar/loader-bar.d.ts +0 -1
  322. package/dist/components/loader-bar/loader-bar.element.js +55 -52
  323. package/dist/components/loader-bar/loader-bar.element.js.map +1 -1
  324. package/dist/components/loader-bar/loader-bar.js +5 -5
  325. package/dist/components/loader-bar/loader-bar.js.map +1 -1
  326. package/dist/components/loader-circle/loader-circle.d.ts +0 -1
  327. package/dist/components/loader-circle/loader-circle.element.js +52 -59
  328. package/dist/components/loader-circle/loader-circle.element.js.map +1 -1
  329. package/dist/components/loader-circle/loader-circle.js +5 -5
  330. package/dist/components/loader-circle/loader-circle.js.map +1 -1
  331. package/dist/components/menu-item/UUIMenuItemEvent.js +15 -9
  332. package/dist/components/menu-item/UUIMenuItemEvent.js.map +1 -1
  333. package/dist/components/menu-item/menu-item.d.ts +0 -1
  334. package/dist/components/menu-item/menu-item.element.js +136 -139
  335. package/dist/components/menu-item/menu-item.element.js.map +1 -1
  336. package/dist/components/menu-item/menu-item.js +6 -7
  337. package/dist/components/menu-item/menu-item.js.map +1 -1
  338. package/dist/components/modal/modal-container.js +86 -141
  339. package/dist/components/modal/modal-container.js.map +1 -1
  340. package/dist/components/modal/modal-dialog.element.js +14 -15
  341. package/dist/components/modal/modal-dialog.element.js.map +1 -1
  342. package/dist/components/modal/modal-sidebar.element.js +41 -64
  343. package/dist/components/modal/modal-sidebar.element.js.map +1 -1
  344. package/dist/components/modal/modal.d.ts +0 -1
  345. package/dist/components/modal/modal.element.js +89 -106
  346. package/dist/components/modal/modal.element.js.map +1 -1
  347. package/dist/components/modal/modal.js +6 -12
  348. package/dist/components/modal/modal.js.map +1 -1
  349. package/dist/components/pagination/UUIPaginationEvent.js +15 -13
  350. package/dist/components/pagination/UUIPaginationEvent.js.map +1 -1
  351. package/dist/components/pagination/pagination.d.ts +0 -1
  352. package/dist/components/pagination/pagination.element.js +188 -228
  353. package/dist/components/pagination/pagination.element.js.map +1 -1
  354. package/dist/components/pagination/pagination.js +6 -7
  355. package/dist/components/pagination/pagination.js.map +1 -1
  356. package/dist/components/popover-container/popover-container.d.ts +0 -1
  357. package/dist/components/popover-container/popover-container.element.d.ts +1 -0
  358. package/dist/components/popover-container/popover-container.element.js +290 -335
  359. package/dist/components/popover-container/popover-container.element.js.map +1 -1
  360. package/dist/components/popover-container/popover-container.js +5 -5
  361. package/dist/components/popover-container/popover-container.js.map +1 -1
  362. package/dist/components/progress-bar/progress-bar.d.ts +0 -1
  363. package/dist/components/progress-bar/progress-bar.element.js +41 -43
  364. package/dist/components/progress-bar/progress-bar.element.js.map +1 -1
  365. package/dist/components/progress-bar/progress-bar.js +5 -5
  366. package/dist/components/progress-bar/progress-bar.js.map +1 -1
  367. package/dist/components/radio/UUIRadioEvent.js +15 -13
  368. package/dist/components/radio/UUIRadioEvent.js.map +1 -1
  369. package/dist/components/radio/UUIRadioGroupEvent.js +15 -13
  370. package/dist/components/radio/UUIRadioGroupEvent.js.map +1 -1
  371. package/dist/components/radio/radio-group.element.js +224 -279
  372. package/dist/components/radio/radio-group.element.js.map +1 -1
  373. package/dist/components/radio/radio.d.ts +0 -1
  374. package/dist/components/radio/radio.element.js +100 -123
  375. package/dist/components/radio/radio.element.js.map +1 -1
  376. package/dist/components/radio/radio.js +7 -10
  377. package/dist/components/radio/radio.js.map +1 -1
  378. package/dist/components/range-slider/UUIRangeSliderEvent.js +18 -14
  379. package/dist/components/range-slider/UUIRangeSliderEvent.js.map +1 -1
  380. package/dist/components/range-slider/range-slider.d.ts +0 -1
  381. package/dist/components/range-slider/range-slider.element.js +439 -504
  382. package/dist/components/range-slider/range-slider.element.js.map +1 -1
  383. package/dist/components/range-slider/range-slider.js +6 -7
  384. package/dist/components/range-slider/range-slider.js.map +1 -1
  385. package/dist/components/ref/UUIRefEvent.js +9 -7
  386. package/dist/components/ref/UUIRefEvent.js.map +1 -1
  387. package/dist/components/ref/ref.d.ts +0 -1
  388. package/dist/components/ref/ref.element.js +55 -50
  389. package/dist/components/ref/ref.element.js.map +1 -1
  390. package/dist/components/ref/ref.js +6 -7
  391. package/dist/components/ref/ref.js.map +1 -1
  392. package/dist/components/ref-list/ref-list.d.ts +0 -1
  393. package/dist/components/ref-list/ref-list.element.js +17 -14
  394. package/dist/components/ref-list/ref-list.element.js.map +1 -1
  395. package/dist/components/ref-list/ref-list.js +5 -5
  396. package/dist/components/ref-list/ref-list.js.map +1 -1
  397. package/dist/components/ref-node/ref-node.d.ts +0 -1
  398. package/dist/components/ref-node/ref-node.element.js +91 -109
  399. package/dist/components/ref-node/ref-node.element.js.map +1 -1
  400. package/dist/components/ref-node/ref-node.js +5 -5
  401. package/dist/components/ref-node/ref-node.js.map +1 -1
  402. package/dist/components/ref-node-data-type/ref-node-data-type.d.ts +0 -1
  403. package/dist/components/ref-node-data-type/ref-node-data-type.element.js +30 -35
  404. package/dist/components/ref-node-data-type/ref-node-data-type.element.js.map +1 -1
  405. package/dist/components/ref-node-data-type/ref-node-data-type.js +5 -5
  406. package/dist/components/ref-node-data-type/ref-node-data-type.js.map +1 -1
  407. package/dist/components/ref-node-document-type/ref-node-document-type.d.ts +0 -1
  408. package/dist/components/ref-node-document-type/ref-node-document-type.element.js +30 -35
  409. package/dist/components/ref-node-document-type/ref-node-document-type.element.js.map +1 -1
  410. package/dist/components/ref-node-document-type/ref-node-document-type.js +5 -5
  411. package/dist/components/ref-node-document-type/ref-node-document-type.js.map +1 -1
  412. package/dist/components/ref-node-form/ref-node-form.d.ts +0 -1
  413. package/dist/components/ref-node-form/ref-node-form.element.js +21 -12
  414. package/dist/components/ref-node-form/ref-node-form.element.js.map +1 -1
  415. package/dist/components/ref-node-form/ref-node-form.js +5 -5
  416. package/dist/components/ref-node-form/ref-node-form.js.map +1 -1
  417. package/dist/components/ref-node-member/ref-node-member.d.ts +0 -1
  418. package/dist/components/ref-node-member/ref-node-member.element.js +33 -35
  419. package/dist/components/ref-node-member/ref-node-member.element.js.map +1 -1
  420. package/dist/components/ref-node-member/ref-node-member.js +5 -5
  421. package/dist/components/ref-node-member/ref-node-member.js.map +1 -1
  422. package/dist/components/ref-node-package/ref-node-package.d.ts +0 -1
  423. package/dist/components/ref-node-package/ref-node-package.element.js +33 -42
  424. package/dist/components/ref-node-package/ref-node-package.element.js.map +1 -1
  425. package/dist/components/ref-node-package/ref-node-package.js +5 -5
  426. package/dist/components/ref-node-package/ref-node-package.js.map +1 -1
  427. package/dist/components/ref-node-user/ref-node-user.d.ts +0 -1
  428. package/dist/components/ref-node-user/ref-node-user.element.js +33 -35
  429. package/dist/components/ref-node-user/ref-node-user.element.js.map +1 -1
  430. package/dist/components/ref-node-user/ref-node-user.js +5 -5
  431. package/dist/components/ref-node-user/ref-node-user.js.map +1 -1
  432. package/dist/components/responsive-container/responsive-container.d.ts +0 -1
  433. package/dist/components/responsive-container/responsive-container.element.js +186 -244
  434. package/dist/components/responsive-container/responsive-container.element.js.map +1 -1
  435. package/dist/components/responsive-container/responsive-container.js +5 -5
  436. package/dist/components/responsive-container/responsive-container.js.map +1 -1
  437. package/dist/components/scroll-container/scroll-container.d.ts +0 -1
  438. package/dist/components/scroll-container/scroll-container.element.js +35 -36
  439. package/dist/components/scroll-container/scroll-container.element.js.map +1 -1
  440. package/dist/components/scroll-container/scroll-container.js +5 -5
  441. package/dist/components/scroll-container/scroll-container.js.map +1 -1
  442. package/dist/components/select/UUISelectEvent.js +15 -13
  443. package/dist/components/select/UUISelectEvent.js.map +1 -1
  444. package/dist/components/select/select.d.ts +0 -1
  445. package/dist/components/select/select.element.js +134 -163
  446. package/dist/components/select/select.element.js.map +1 -1
  447. package/dist/components/select/select.js +6 -7
  448. package/dist/components/select/select.js.map +1 -1
  449. package/dist/components/slider/UUISliderEvent.js +18 -14
  450. package/dist/components/slider/UUISliderEvent.js.map +1 -1
  451. package/dist/components/slider/native-input.styles.js +6 -5
  452. package/dist/components/slider/native-input.styles.js.map +1 -1
  453. package/dist/components/slider/slider.d.ts +0 -1
  454. package/dist/components/slider/slider.element.d.ts +7 -0
  455. package/dist/components/slider/slider.element.js +197 -227
  456. package/dist/components/slider/slider.element.js.map +1 -1
  457. package/dist/components/slider/slider.js +6 -7
  458. package/dist/components/slider/slider.js.map +1 -1
  459. package/dist/components/symbol-drag-handle/symbol-drag-handle.d.ts +0 -1
  460. package/dist/components/symbol-drag-handle/symbol-drag-handle.element.js +19 -16
  461. package/dist/components/symbol-drag-handle/symbol-drag-handle.element.js.map +1 -1
  462. package/dist/components/symbol-drag-handle/symbol-drag-handle.js +5 -5
  463. package/dist/components/symbol-drag-handle/symbol-drag-handle.js.map +1 -1
  464. package/dist/components/symbol-expand/symbol-expand.d.ts +0 -1
  465. package/dist/components/symbol-expand/symbol-expand.element.js +27 -30
  466. package/dist/components/symbol-expand/symbol-expand.element.js.map +1 -1
  467. package/dist/components/symbol-expand/symbol-expand.js +5 -5
  468. package/dist/components/symbol-expand/symbol-expand.js.map +1 -1
  469. package/dist/components/symbol-file/symbol-file.d.ts +0 -1
  470. package/dist/components/symbol-file/symbol-file.element.js +24 -32
  471. package/dist/components/symbol-file/symbol-file.element.js.map +1 -1
  472. package/dist/components/symbol-file/symbol-file.js +5 -5
  473. package/dist/components/symbol-file/symbol-file.js.map +1 -1
  474. package/dist/components/symbol-file-dropzone/symbol-file-dropzone.d.ts +0 -1
  475. package/dist/components/symbol-file-dropzone/symbol-file-dropzone.element.js +26 -30
  476. package/dist/components/symbol-file-dropzone/symbol-file-dropzone.element.js.map +1 -1
  477. package/dist/components/symbol-file-dropzone/symbol-file-dropzone.js +5 -5
  478. package/dist/components/symbol-file-dropzone/symbol-file-dropzone.js.map +1 -1
  479. package/dist/components/symbol-file-thumbnail/symbol-file-thumbnail.d.ts +0 -1
  480. package/dist/components/symbol-file-thumbnail/symbol-file-thumbnail.element.js +39 -95
  481. package/dist/components/symbol-file-thumbnail/symbol-file-thumbnail.element.js.map +1 -1
  482. package/dist/components/symbol-file-thumbnail/symbol-file-thumbnail.js +5 -5
  483. package/dist/components/symbol-file-thumbnail/symbol-file-thumbnail.js.map +1 -1
  484. package/dist/components/symbol-folder/symbol-folder.d.ts +0 -1
  485. package/dist/components/symbol-folder/symbol-folder.element.js +17 -14
  486. package/dist/components/symbol-folder/symbol-folder.element.js.map +1 -1
  487. package/dist/components/symbol-folder/symbol-folder.js +5 -5
  488. package/dist/components/symbol-folder/symbol-folder.js.map +1 -1
  489. package/dist/components/symbol-lock/symbol-lock.d.ts +0 -1
  490. package/dist/components/symbol-lock/symbol-lock.element.js +26 -30
  491. package/dist/components/symbol-lock/symbol-lock.element.js.map +1 -1
  492. package/dist/components/symbol-lock/symbol-lock.js +5 -5
  493. package/dist/components/symbol-lock/symbol-lock.js.map +1 -1
  494. package/dist/components/symbol-more/symbol-more.d.ts +0 -1
  495. package/dist/components/symbol-more/symbol-more.element.js +17 -14
  496. package/dist/components/symbol-more/symbol-more.element.js.map +1 -1
  497. package/dist/components/symbol-more/symbol-more.js +5 -5
  498. package/dist/components/symbol-more/symbol-more.js.map +1 -1
  499. package/dist/components/symbol-sort/symbol-sort.d.ts +0 -1
  500. package/dist/components/symbol-sort/symbol-sort.element.js +29 -31
  501. package/dist/components/symbol-sort/symbol-sort.element.js.map +1 -1
  502. package/dist/components/symbol-sort/symbol-sort.js +5 -5
  503. package/dist/components/symbol-sort/symbol-sort.js.map +1 -1
  504. package/dist/components/table/table-cell.element.js +65 -71
  505. package/dist/components/table/table-cell.element.js.map +1 -1
  506. package/dist/components/table/table-column.element.js +14 -10
  507. package/dist/components/table/table-column.element.js.map +1 -1
  508. package/dist/components/table/table-head-cell.element.js +19 -16
  509. package/dist/components/table/table-head-cell.element.js.map +1 -1
  510. package/dist/components/table/table-head.element.js +23 -18
  511. package/dist/components/table/table-head.element.js.map +1 -1
  512. package/dist/components/table/table-row.element.js +41 -52
  513. package/dist/components/table/table-row.element.js.map +1 -1
  514. package/dist/components/table/table.d.ts +0 -1
  515. package/dist/components/table/table.element.js +23 -19
  516. package/dist/components/table/table.element.js.map +1 -1
  517. package/dist/components/table/table.js +5 -10
  518. package/dist/components/table/table.js.map +1 -1
  519. package/dist/components/tabs/UUITabEvent.js +6 -6
  520. package/dist/components/tabs/UUITabEvent.js.map +1 -1
  521. package/dist/components/tabs/UUITabGroupEvent.js +6 -6
  522. package/dist/components/tabs/UUITabGroupEvent.js.map +1 -1
  523. package/dist/components/tabs/tab-group.element.js +188 -251
  524. package/dist/components/tabs/tab-group.element.js.map +1 -1
  525. package/dist/components/tabs/tab.element.js +66 -56
  526. package/dist/components/tabs/tab.element.js.map +1 -1
  527. package/dist/components/tabs/tabs.d.ts +0 -1
  528. package/dist/components/tabs/tabs.js +7 -6
  529. package/dist/components/tabs/tabs.js.map +1 -1
  530. package/dist/components/tag/tag.d.ts +0 -1
  531. package/dist/components/tag/tag.element.js +32 -34
  532. package/dist/components/tag/tag.element.js.map +1 -1
  533. package/dist/components/tag/tag.js +5 -5
  534. package/dist/components/tag/tag.js.map +1 -1
  535. package/dist/components/textarea/UUITextareaEvent.js +18 -14
  536. package/dist/components/textarea/UUITextareaEvent.js.map +1 -1
  537. package/dist/components/textarea/textarea.d.ts +0 -1
  538. package/dist/components/textarea/textarea.element.d.ts +2 -0
  539. package/dist/components/textarea/textarea.element.js +153 -180
  540. package/dist/components/textarea/textarea.element.js.map +1 -1
  541. package/dist/components/textarea/textarea.js +6 -7
  542. package/dist/components/textarea/textarea.js.map +1 -1
  543. package/dist/components/toast-notification/UUIToastNotificationEvent.js +18 -10
  544. package/dist/components/toast-notification/UUIToastNotificationEvent.js.map +1 -1
  545. package/dist/components/toast-notification/toast-notification.d.ts +0 -1
  546. package/dist/components/toast-notification/toast-notification.element.js +155 -224
  547. package/dist/components/toast-notification/toast-notification.element.js.map +1 -1
  548. package/dist/components/toast-notification/toast-notification.js +6 -7
  549. package/dist/components/toast-notification/toast-notification.js.map +1 -1
  550. package/dist/components/toast-notification-container/toast-notification-container.d.ts +0 -1
  551. package/dist/components/toast-notification-container/toast-notification-container.element.js +98 -122
  552. package/dist/components/toast-notification-container/toast-notification-container.element.js.map +1 -1
  553. package/dist/components/toast-notification-container/toast-notification-container.js +6 -9
  554. package/dist/components/toast-notification-container/toast-notification-container.js.map +1 -1
  555. package/dist/components/toast-notification-layout/toast-notification-layout.d.ts +0 -1
  556. package/dist/components/toast-notification-layout/toast-notification-layout.element.js +33 -39
  557. package/dist/components/toast-notification-layout/toast-notification-layout.element.js.map +1 -1
  558. package/dist/components/toast-notification-layout/toast-notification-layout.js +6 -9
  559. package/dist/components/toast-notification-layout/toast-notification-layout.js.map +1 -1
  560. package/dist/components/toggle/toggle.d.ts +0 -1
  561. package/dist/components/toggle/toggle.element.js +43 -54
  562. package/dist/components/toggle/toggle.element.js.map +1 -1
  563. package/dist/components/toggle/toggle.js +5 -5
  564. package/dist/components/toggle/toggle.js.map +1 -1
  565. package/dist/components/visually-hidden/visually-hidden.d.ts +0 -1
  566. package/dist/components/visually-hidden/visually-hidden.element.js +17 -14
  567. package/dist/components/visually-hidden/visually-hidden.element.js.map +1 -1
  568. package/dist/components/visually-hidden/visually-hidden.js +5 -5
  569. package/dist/components/visually-hidden/visually-hidden.js.map +1 -1
  570. package/dist/index.js +115 -359
  571. package/dist/internal/animations/uui-blink.js +7 -7
  572. package/dist/internal/animations/uui-blink.js.map +1 -1
  573. package/dist/internal/animations/uui-pulse.js +7 -9
  574. package/dist/internal/animations/uui-pulse.js.map +1 -1
  575. package/dist/internal/animations/uui-shake.js +7 -9
  576. package/dist/internal/animations/uui-shake.js.map +1 -1
  577. package/dist/internal/events/UUIEvent.js +13 -9
  578. package/dist/internal/events/UUIEvent.js.map +1 -1
  579. package/dist/internal/events/UUIFormControlEvent.d.ts +2 -2
  580. package/dist/internal/events/UUIFormControlEvent.js +18 -14
  581. package/dist/internal/events/UUIFormControlEvent.js.map +1 -1
  582. package/dist/internal/events/UUISelectableEvent.js +19 -15
  583. package/dist/internal/events/UUISelectableEvent.js.map +1 -1
  584. package/dist/internal/mixins/ActiveMixin.js +24 -24
  585. package/dist/internal/mixins/ActiveMixin.js.map +1 -1
  586. package/dist/internal/mixins/FormControlMixin.d.ts +3 -3
  587. package/dist/internal/mixins/FormControlMixin.js +276 -339
  588. package/dist/internal/mixins/FormControlMixin.js.map +1 -1
  589. package/dist/internal/mixins/FormControlWithBasicsMixin.d.ts +19 -3
  590. package/dist/internal/mixins/FormControlWithBasicsMixin.js +54 -60
  591. package/dist/internal/mixins/FormControlWithBasicsMixin.js.map +1 -1
  592. package/dist/internal/mixins/LabelMixin.js +54 -57
  593. package/dist/internal/mixins/LabelMixin.js.map +1 -1
  594. package/dist/internal/mixins/PopoverTargetMixin.js +43 -47
  595. package/dist/internal/mixins/PopoverTargetMixin.js.map +1 -1
  596. package/dist/internal/mixins/SelectOnlyMixin.js +39 -33
  597. package/dist/internal/mixins/SelectOnlyMixin.js.map +1 -1
  598. package/dist/internal/mixins/SelectableMixin.js +109 -121
  599. package/dist/internal/mixins/SelectableMixin.js.map +1 -1
  600. package/dist/internal/registration/index.js +17 -20
  601. package/dist/internal/registration/index.js.map +1 -1
  602. package/dist/internal/types/InterfaceColor.js +11 -10
  603. package/dist/internal/types/InterfaceColor.js.map +1 -1
  604. package/dist/internal/types/InterfaceHeading.js +12 -11
  605. package/dist/internal/types/InterfaceHeading.js.map +1 -1
  606. package/dist/internal/types/InterfaceLook.js +11 -10
  607. package/dist/internal/types/InterfaceLook.js.map +1 -1
  608. package/dist/internal/utils/Timer.js +56 -61
  609. package/dist/internal/utils/Timer.js.map +1 -1
  610. package/dist/internal/utils/color.js +105 -74
  611. package/dist/internal/utils/color.js.map +1 -1
  612. package/dist/internal/utils/drag.js +27 -36
  613. package/dist/internal/utils/drag.js.map +1 -1
  614. package/dist/internal/utils/findAncestorByAttributeValue.js +22 -19
  615. package/dist/internal/utils/findAncestorByAttributeValue.js.map +1 -1
  616. package/dist/internal/utils/math.js +23 -13
  617. package/dist/internal/utils/math.js.map +1 -1
  618. package/dist/internal/utils/slotHasContent.js +6 -5
  619. package/dist/internal/utils/slotHasContent.js.map +1 -1
  620. package/dist/internal/version.js +10 -16
  621. package/dist/internal/version.js.map +1 -1
  622. package/dist/package.json.js +6 -5
  623. package/dist/package.json.js.map +1 -1
  624. package/dist/styles/uui-font.css +1 -1
  625. package/dist/styles/uui-text.css +1 -1
  626. package/dist/styles/uui-text.css.js +6 -5
  627. package/dist/styles/uui-text.css.js.map +1 -1
  628. package/dist/styles/uui-text.styles.js +7 -6
  629. package/dist/styles/uui-text.styles.js.map +1 -1
  630. package/dist/themes/dark.css +1 -1
  631. package/dist/themes/high-contrast.css +1 -1
  632. package/dist/themes/light.css +1 -1
  633. package/package.json +19 -18
  634. package/vscode.html-custom-data.json +36 -7
  635. package/dist/index.js.map +0 -1
@@ -1,232 +1,200 @@
1
- import { LitElement, html, css } from "lit";
2
- import { query, property } from "lit/decorators.js";
3
- import { UUIFileDropzoneEvent } from "./UUIFileDropzoneEvent.js";
4
- import "../symbol-file-dropzone/symbol-file-dropzone.js";
1
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
5
2
  import { LabelMixin } from "../../internal/mixins/LabelMixin.js";
6
- var __defProp = Object.defineProperty;
7
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
- var __decorateClass = (decorators, target, key, kind) => {
9
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
10
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
11
- if (decorator = decorators[i])
12
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
13
- if (kind && result) __defProp(target, key, result);
14
- return result;
15
- };
16
- const _UUIFileDropzoneElement = class _UUIFileDropzoneElement extends LabelMixin("", LitElement) {
17
- constructor() {
18
- super();
19
- this._acceptedFileExtensions = [];
20
- this._acceptedMimeTypes = [];
21
- this._accept = "";
22
- this.disallowFolderUpload = false;
23
- this.multiple = false;
24
- this.addEventListener("dragenter", this._onDragEnter, false);
25
- this.addEventListener("dragleave", this._onDragLeave, false);
26
- this.addEventListener("dragover", this._onDragOver, false);
27
- this.addEventListener("drop", this._onDrop, false);
28
- }
29
- set accept(value) {
30
- if (value) {
31
- const mimetypes = [];
32
- const fileextensions = [];
33
- value.split(",").forEach((item) => {
34
- item = item.trim().toLowerCase();
35
- if (/^[a-z]+\/[a-z*]+$/.test(item)) {
36
- mimetypes.push(item);
37
- } else {
38
- fileextensions.push(item.replace(/^\./, ""));
39
- }
40
- });
41
- this._acceptedMimeTypes = mimetypes;
42
- this._acceptedFileExtensions = fileextensions;
43
- } else {
44
- this._acceptedMimeTypes = [];
45
- this._acceptedFileExtensions = [];
46
- }
47
- const old = this._accept;
48
- this._accept = value;
49
- this.requestUpdate("accept", old);
50
- }
51
- get accept() {
52
- return this._accept;
53
- }
54
- /**
55
- * Opens the native file picker to select a file.
56
- * @method browse
57
- */
58
- browse() {
59
- this._input.click();
60
- }
61
- /**
62
- * Check if folder upload should be processed based on component settings.
63
- * @returns true if folder upload is allowed and multiple files are enabled
64
- */
65
- _shouldProcessFolder() {
66
- return !this.disallowFolderUpload && this.multiple;
67
- }
68
- async _getAllEntries(dataTransferItemList) {
69
- const rootEntries = [...dataTransferItemList].filter((item) => item?.kind === "file").map((item) => this._getEntry(item)).filter((entry) => entry !== null);
70
- return this._processRootEntries(rootEntries);
71
- }
72
- async _processRootEntries(rootEntries) {
73
- const folders = [];
74
- const files = [];
75
- const rejectedFiles = [];
76
- for (const entry of rootEntries) {
77
- if (!entry.isDirectory) {
78
- const file = await this._getAsFile(entry);
79
- if (this._isAccepted(file)) {
80
- files.push(file);
81
- } else {
82
- rejectedFiles.push(file);
83
- }
84
- } else if (this._shouldProcessFolder()) {
85
- folders.push(await this._mkdir(entry));
86
- }
87
- }
88
- return { files, folders, rejectedFiles };
89
- }
90
- /**
91
- * Get the filesystem entry (file or directory) from a DataTransferItem.
92
- * @remark Supports both WebKit and non-WebKit browsers.
93
- */
94
- _getEntry(entry) {
95
- let dir = null;
96
- if ("webkitGetAsEntry" in entry) {
97
- dir = entry.webkitGetAsEntry();
98
- } else if ("getAsEntry" in entry) {
99
- dir = entry.getAsEntry();
100
- }
101
- return dir;
102
- }
103
- // Process entries from a directory reader
104
- async _processEntries(entries, folders, files) {
105
- for (const en of entries) {
106
- if (en.isFile) {
107
- const file = await this._getAsFile(en);
108
- if (this._isAccepted(file)) {
109
- files.push(file);
110
- }
111
- } else if (en.isDirectory) {
112
- const directory = await this._mkdir(en);
113
- folders.push(directory);
114
- }
115
- }
116
- }
117
- // Read entries from a directory reader recursively
118
- async _readAllEntries(reader, folders, files) {
119
- return new Promise((resolve, reject) => {
120
- reader.readEntries(async (entries) => {
121
- if (!entries.length) {
122
- resolve();
123
- return;
124
- }
125
- await this._processEntries(entries, folders, files);
126
- await this._readAllEntries(reader, folders, files);
127
- resolve();
128
- }, reject);
129
- });
130
- }
131
- // Make directory structure
132
- async _mkdir(entry) {
133
- const reader = entry.createReader();
134
- const folders = [];
135
- const files = [];
136
- await this._readAllEntries(reader, folders, files);
137
- const result = { folderName: entry.name, folders, files };
138
- return result;
139
- }
140
- _isAccepted(file) {
141
- if (this._acceptedFileExtensions.length === 0 && this._acceptedMimeTypes.length === 0) {
142
- return true;
143
- }
144
- const fileType = file.type.toLowerCase();
145
- const fileExtension = file.name.split(".").pop();
146
- if (fileExtension && this._acceptedFileExtensions.includes(fileExtension.toLowerCase())) {
147
- return true;
148
- }
149
- for (const mimeType of this._acceptedMimeTypes) {
150
- if (fileType === mimeType || mimeType.endsWith("/*") && fileType.startsWith(mimeType.replace("*", ""))) {
151
- return true;
152
- }
153
- }
154
- return false;
155
- }
156
- async _getAsFile(fileEntry) {
157
- return new Promise((resolve, reject) => fileEntry.file(resolve, reject));
158
- }
159
- async _onDrop(e) {
160
- e.preventDefault();
161
- this._dropzone.classList.remove("hover");
162
- const items = e.dataTransfer?.items;
163
- if (items) {
164
- const fileSystemResult = await this._getAllEntries(items);
165
- if (this.multiple === false && fileSystemResult.files.length) {
166
- fileSystemResult.files = [fileSystemResult.files[0]];
167
- fileSystemResult.folders = [];
168
- fileSystemResult.rejectedFiles = [];
169
- }
170
- if (fileSystemResult.rejectedFiles.length > 0) {
171
- this.dispatchEvent(
172
- new UUIFileDropzoneEvent(UUIFileDropzoneEvent.REJECT, {
173
- detail: { files: fileSystemResult.rejectedFiles, folders: [] }
174
- })
175
- );
176
- }
177
- if (!fileSystemResult.files.length && !fileSystemResult.folders.length) {
178
- return;
179
- }
180
- this.dispatchEvent(
181
- new UUIFileDropzoneEvent(UUIFileDropzoneEvent.CHANGE, {
182
- detail: {
183
- files: fileSystemResult.files,
184
- folders: fileSystemResult.folders
185
- }
186
- })
187
- );
188
- }
189
- }
190
- _onDragOver(e) {
191
- e.preventDefault();
192
- }
193
- _onDragEnter(e) {
194
- this._dropzone.classList.add("hover");
195
- e.preventDefault();
196
- }
197
- _onDragLeave(e) {
198
- this._dropzone.classList.remove("hover");
199
- e.preventDefault();
200
- }
201
- _onFileInputChange() {
202
- const files = this._input.files ? Array.from(this._input.files) : [];
203
- if (this.multiple === false && files.length > 1) {
204
- files.splice(1, files.length - 1);
205
- }
206
- const allowedFiles = files.filter((file) => this._isAccepted(file));
207
- const rejectedFiles = files.filter((file) => !this._isAccepted(file));
208
- const shouldReportRejections = rejectedFiles.length > 0 && (this.multiple || allowedFiles.length === 0);
209
- if (shouldReportRejections) {
210
- this.dispatchEvent(
211
- new UUIFileDropzoneEvent(UUIFileDropzoneEvent.REJECT, {
212
- detail: { files: rejectedFiles, folders: [] }
213
- })
214
- );
215
- }
216
- if (!allowedFiles.length) {
217
- return;
218
- }
219
- this.dispatchEvent(
220
- new UUIFileDropzoneEvent(UUIFileDropzoneEvent.CHANGE, {
221
- detail: {
222
- files: allowedFiles,
223
- folders: []
224
- }
225
- })
226
- );
227
- }
228
- render() {
229
- return html`
3
+ import "../symbol-file-dropzone/symbol-file-dropzone.js";
4
+ import { UUIFileDropzoneEvent } from "./UUIFileDropzoneEvent.js";
5
+ import { LitElement, css, html } from "lit";
6
+ import { property, query } from "lit/decorators.js";
7
+ //#region src/components/file-dropzone/file-dropzone.element.ts
8
+ /**
9
+ * @element uui-file-dropzone
10
+ * @fires {UUIFileDropzoneEvent} change - fires when a file has been selected.
11
+ * @fires {UUIFileDropzoneEvent} reject - fires when files are rejected due to not matching the accept attribute.
12
+ * @slot - For the content of the dropzone
13
+ * @description - Dropzone for file upload. Supports native browsing and drag n drop.
14
+ */
15
+ var UUIFileDropzoneElement = class extends LabelMixin("", LitElement) {
16
+ /**
17
+ * Comma-separated list of accepted mime types or file extensions (denoted with a `.`).
18
+ * If this is left empty, it will allow all types.
19
+ *
20
+ * @type {string}
21
+ * @attr
22
+ * @examples [
23
+ * "image/*,application/pdf",
24
+ * ".gif,.png,.jpg,.jpeg,.pdf",
25
+ * ]
26
+ */
27
+ set accept(value) {
28
+ if (value) {
29
+ const mimetypes = [];
30
+ const fileextensions = [];
31
+ value.split(",").forEach((item) => {
32
+ item = item.trim().toLowerCase();
33
+ if (/^[a-z]+\/[a-z*]+$/.test(item)) mimetypes.push(item);
34
+ else fileextensions.push(item.replace(/^\./, ""));
35
+ });
36
+ this._acceptedMimeTypes = mimetypes;
37
+ this._acceptedFileExtensions = fileextensions;
38
+ } else {
39
+ this._acceptedMimeTypes = [];
40
+ this._acceptedFileExtensions = [];
41
+ }
42
+ const old = this._accept;
43
+ this._accept = value;
44
+ this.requestUpdate("accept", old);
45
+ }
46
+ get accept() {
47
+ return this._accept;
48
+ }
49
+ /**
50
+ * Opens the native file picker to select a file.
51
+ * @method browse
52
+ */
53
+ browse() {
54
+ this._input.click();
55
+ }
56
+ constructor() {
57
+ super();
58
+ this._acceptedFileExtensions = [];
59
+ this._acceptedMimeTypes = [];
60
+ this._accept = "";
61
+ this.disallowFolderUpload = false;
62
+ this.multiple = false;
63
+ this.addEventListener("dragenter", this._onDragEnter, false);
64
+ this.addEventListener("dragleave", this._onDragLeave, false);
65
+ this.addEventListener("dragover", this._onDragOver, false);
66
+ this.addEventListener("drop", this._onDrop, false);
67
+ }
68
+ /**
69
+ * Check if folder upload should be processed based on component settings.
70
+ * @returns true if folder upload is allowed and multiple files are enabled
71
+ */
72
+ _shouldProcessFolder() {
73
+ return !this.disallowFolderUpload && this.multiple;
74
+ }
75
+ async _getAllEntries(dataTransferItemList) {
76
+ const rootEntries = [...dataTransferItemList].filter((item) => item?.kind === "file").map((item) => this._getEntry(item)).filter((entry) => entry !== null);
77
+ return this._processRootEntries(rootEntries);
78
+ }
79
+ async _processRootEntries(rootEntries) {
80
+ const folders = [];
81
+ const files = [];
82
+ const rejectedFiles = [];
83
+ for (const entry of rootEntries) if (!entry.isDirectory) {
84
+ const file = await this._getAsFile(entry);
85
+ if (this._isAccepted(file)) files.push(file);
86
+ else rejectedFiles.push(file);
87
+ } else if (this._shouldProcessFolder()) folders.push(await this._mkdir(entry));
88
+ return {
89
+ files,
90
+ folders,
91
+ rejectedFiles
92
+ };
93
+ }
94
+ /**
95
+ * Get the filesystem entry (file or directory) from a DataTransferItem.
96
+ * @remark Supports both WebKit and non-WebKit browsers.
97
+ */
98
+ _getEntry(entry) {
99
+ let dir = null;
100
+ if ("webkitGetAsEntry" in entry) dir = entry.webkitGetAsEntry();
101
+ else if ("getAsEntry" in entry) dir = entry.getAsEntry();
102
+ return dir;
103
+ }
104
+ async _processEntries(entries, folders, files) {
105
+ for (const en of entries) if (en.isFile) {
106
+ const file = await this._getAsFile(en);
107
+ if (this._isAccepted(file)) files.push(file);
108
+ } else if (en.isDirectory) {
109
+ const directory = await this._mkdir(en);
110
+ folders.push(directory);
111
+ }
112
+ }
113
+ async _readAllEntries(reader, folders, files) {
114
+ return new Promise((resolve, reject) => {
115
+ reader.readEntries(async (entries) => {
116
+ if (!entries.length) {
117
+ resolve();
118
+ return;
119
+ }
120
+ await this._processEntries(entries, folders, files);
121
+ await this._readAllEntries(reader, folders, files);
122
+ resolve();
123
+ }, reject);
124
+ });
125
+ }
126
+ async _mkdir(entry) {
127
+ const reader = entry.createReader();
128
+ const folders = [];
129
+ const files = [];
130
+ await this._readAllEntries(reader, folders, files);
131
+ return {
132
+ folderName: entry.name,
133
+ folders,
134
+ files
135
+ };
136
+ }
137
+ _isAccepted(file) {
138
+ if (this._acceptedFileExtensions.length === 0 && this._acceptedMimeTypes.length === 0) return true;
139
+ const fileType = file.type.toLowerCase();
140
+ const fileExtension = file.name.split(".").pop();
141
+ if (fileExtension && this._acceptedFileExtensions.includes(fileExtension.toLowerCase())) return true;
142
+ for (const mimeType of this._acceptedMimeTypes) if (fileType === mimeType || mimeType.endsWith("/*") && fileType.startsWith(mimeType.replace("*", ""))) return true;
143
+ return false;
144
+ }
145
+ async _getAsFile(fileEntry) {
146
+ return new Promise((resolve, reject) => fileEntry.file(resolve, reject));
147
+ }
148
+ async _onDrop(e) {
149
+ e.preventDefault();
150
+ this._dropzone.classList.remove("hover");
151
+ const items = e.dataTransfer?.items;
152
+ if (items) {
153
+ const fileSystemResult = await this._getAllEntries(items);
154
+ if (this.multiple === false && fileSystemResult.files.length) {
155
+ fileSystemResult.files = [fileSystemResult.files[0]];
156
+ fileSystemResult.folders = [];
157
+ fileSystemResult.rejectedFiles = [];
158
+ }
159
+ if (fileSystemResult.rejectedFiles.length > 0) this.dispatchEvent(new UUIFileDropzoneEvent(UUIFileDropzoneEvent.REJECT, { detail: {
160
+ files: fileSystemResult.rejectedFiles,
161
+ folders: []
162
+ } }));
163
+ if (!fileSystemResult.files.length && !fileSystemResult.folders.length) return;
164
+ this.dispatchEvent(new UUIFileDropzoneEvent(UUIFileDropzoneEvent.CHANGE, { detail: {
165
+ files: fileSystemResult.files,
166
+ folders: fileSystemResult.folders
167
+ } }));
168
+ }
169
+ }
170
+ _onDragOver(e) {
171
+ e.preventDefault();
172
+ }
173
+ _onDragEnter(e) {
174
+ this._dropzone.classList.add("hover");
175
+ e.preventDefault();
176
+ }
177
+ _onDragLeave(e) {
178
+ this._dropzone.classList.remove("hover");
179
+ e.preventDefault();
180
+ }
181
+ _onFileInputChange() {
182
+ const files = this._input.files ? Array.from(this._input.files) : [];
183
+ if (this.multiple === false && files.length > 1) files.splice(1, files.length - 1);
184
+ const allowedFiles = files.filter((file) => this._isAccepted(file));
185
+ const rejectedFiles = files.filter((file) => !this._isAccepted(file));
186
+ if (rejectedFiles.length > 0 && (this.multiple || allowedFiles.length === 0)) this.dispatchEvent(new UUIFileDropzoneEvent(UUIFileDropzoneEvent.REJECT, { detail: {
187
+ files: rejectedFiles,
188
+ folders: []
189
+ } }));
190
+ if (!allowedFiles.length) return;
191
+ this.dispatchEvent(new UUIFileDropzoneEvent(UUIFileDropzoneEvent.CHANGE, { detail: {
192
+ files: allowedFiles,
193
+ folders: []
194
+ } }));
195
+ }
196
+ render() {
197
+ return html`
230
198
  <div id="dropzone">
231
199
  <uui-symbol-file-dropzone id="symbol"></uui-symbol-file-dropzone>
232
200
  ${this.renderLabel()}
@@ -241,10 +209,9 @@ const _UUIFileDropzoneElement = class _UUIFileDropzoneElement extends LabelMixin
241
209
  <slot></slot>
242
210
  </div>
243
211
  `;
244
- }
245
- };
246
- _UUIFileDropzoneElement.styles = [
247
- css`
212
+ }
213
+ static {
214
+ this.styles = [css`
248
215
  #dropzone {
249
216
  display: flex;
250
217
  flex-direction: column;
@@ -282,29 +249,19 @@ _UUIFileDropzoneElement.styles = [
282
249
  opacity: 0;
283
250
  display: none;
284
251
  }
285
- `
286
- ];
287
- let UUIFileDropzoneElement = _UUIFileDropzoneElement;
288
- __decorateClass([
289
- query("#input")
290
- ], UUIFileDropzoneElement.prototype, "_input", 2);
291
- __decorateClass([
292
- query("#dropzone")
293
- ], UUIFileDropzoneElement.prototype, "_dropzone", 2);
294
- __decorateClass([
295
- property({ type: String })
296
- ], UUIFileDropzoneElement.prototype, "accept", 1);
297
- __decorateClass([
298
- property({
299
- type: Boolean,
300
- reflect: true,
301
- attribute: "disallow-folder-upload"
302
- })
303
- ], UUIFileDropzoneElement.prototype, "disallowFolderUpload", 2);
304
- __decorateClass([
305
- property({ type: Boolean })
306
- ], UUIFileDropzoneElement.prototype, "multiple", 2);
307
- export {
308
- UUIFileDropzoneElement
252
+ `];
253
+ }
309
254
  };
310
- //# sourceMappingURL=file-dropzone.element.js.map
255
+ __decorate([query("#input")], UUIFileDropzoneElement.prototype, "_input", void 0);
256
+ __decorate([query("#dropzone")], UUIFileDropzoneElement.prototype, "_dropzone", void 0);
257
+ __decorate([property({ type: String })], UUIFileDropzoneElement.prototype, "accept", null);
258
+ __decorate([property({
259
+ type: Boolean,
260
+ reflect: true,
261
+ attribute: "disallow-folder-upload"
262
+ })], UUIFileDropzoneElement.prototype, "disallowFolderUpload", void 0);
263
+ __decorate([property({ type: Boolean })], UUIFileDropzoneElement.prototype, "multiple", void 0);
264
+ //#endregion
265
+ export { UUIFileDropzoneElement };
266
+
267
+ //# sourceMappingURL=file-dropzone.element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-dropzone.element.js","sources":["../../../src/components/file-dropzone/file-dropzone.element.ts"],"sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { query, property } from 'lit/decorators.js';\nimport { UUIFileDropzoneEvent } from './UUIFileDropzoneEvent.js';\nimport { LabelMixin } from '../../internal/mixins/index.js';\n\nimport '../symbol-file-dropzone/symbol-file-dropzone.js';\n\nexport interface UUIFileFolder {\n folderName: string;\n folders: UUIFileFolder[];\n files: File[];\n}\n\n/**\n * @element uui-file-dropzone\n * @fires {UUIFileDropzoneEvent} change - fires when a file has been selected.\n * @fires {UUIFileDropzoneEvent} reject - fires when files are rejected due to not matching the accept attribute.\n * @slot - For the content of the dropzone\n * @description - Dropzone for file upload. Supports native browsing and drag n drop.\n */\nexport class UUIFileDropzoneElement extends LabelMixin('', LitElement) {\n @query('#input')\n private readonly _input!: HTMLInputElement;\n\n @query('#dropzone')\n private readonly _dropzone!: HTMLElement;\n\n private _acceptedFileExtensions: string[] = [];\n private _acceptedMimeTypes: string[] = [];\n private _accept = '';\n\n /**\n * Comma-separated list of accepted mime types or file extensions (denoted with a `.`).\n * If this is left empty, it will allow all types.\n *\n * @type {string}\n * @attr\n * @examples [\n * \"image/*,application/pdf\",\n * \".gif,.png,.jpg,.jpeg,.pdf\",\n * ]\n */\n @property({ type: String })\n public set accept(value: string) {\n if (value) {\n const mimetypes: string[] = [];\n const fileextensions: string[] = [];\n\n // Create the arrays defined above\n value.split(',').forEach(item => {\n item = item.trim().toLowerCase();\n\n // If the item is a mime type, add it to the accept list\n if (/^[a-z]+\\/[a-z*]+$/.test(item)) {\n mimetypes.push(item);\n } else {\n fileextensions.push(item.replace(/^\\./, ''));\n }\n });\n\n this._acceptedMimeTypes = mimetypes;\n this._acceptedFileExtensions = fileextensions;\n } else {\n this._acceptedMimeTypes = [];\n this._acceptedFileExtensions = [];\n }\n const old = this._accept;\n this._accept = value;\n this.requestUpdate('accept', old);\n }\n public get accept(): string {\n return this._accept;\n }\n\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'disallow-folder-upload',\n })\n public disallowFolderUpload: boolean = false;\n\n /**\n * Allows for multiple files to be selected.\n * @type {boolean}\n * @attr\n * @default false\n */\n @property({ type: Boolean })\n public multiple: boolean = false;\n\n /**\n * Opens the native file picker to select a file.\n * @method browse\n */\n public browse() {\n this._input.click();\n }\n\n constructor() {\n super();\n\n this.addEventListener('dragenter', this._onDragEnter, false);\n this.addEventListener('dragleave', this._onDragLeave, false);\n this.addEventListener('dragover', this._onDragOver, false);\n this.addEventListener('drop', this._onDrop, false);\n }\n\n /**\n * Check if folder upload should be processed based on component settings.\n * @returns true if folder upload is allowed and multiple files are enabled\n */\n private _shouldProcessFolder(): boolean {\n return !this.disallowFolderUpload && this.multiple;\n }\n\n private async _getAllEntries(dataTransferItemList: DataTransferItemList) {\n // Phase 1: Extract ALL FileSystemEntry refs synchronously.\n // DataTransferItem.webkitGetAsEntry() returns null after the first await\n // because the browser expires the drag data store. FileSystemEntry objects\n // obtained here remain valid indefinitely.\n const rootEntries = [...dataTransferItemList]\n .filter(item => item?.kind === 'file')\n .map(item => this._getEntry(item))\n .filter((entry): entry is FileSystemEntry => entry !== null);\n\n return this._processRootEntries(rootEntries);\n }\n\n private async _processRootEntries(rootEntries: FileSystemEntry[]) {\n const folders: UUIFileFolder[] = [];\n const files: File[] = [];\n const rejectedFiles: File[] = [];\n\n for (const entry of rootEntries) {\n if (!entry.isDirectory) {\n const file = await this._getAsFile(entry as FileSystemFileEntry);\n if (this._isAccepted(file)) {\n files.push(file);\n } else {\n rejectedFiles.push(file);\n }\n } else if (this._shouldProcessFolder()) {\n folders.push(await this._mkdir(entry as FileSystemDirectoryEntry));\n }\n }\n\n return { files, folders, rejectedFiles };\n }\n\n /**\n * Get the filesystem entry (file or directory) from a DataTransferItem.\n * @remark Supports both WebKit and non-WebKit browsers.\n */\n private _getEntry(entry: DataTransferItem): FileSystemEntry | null {\n let dir: FileSystemDirectoryEntry | null = null;\n\n if ('webkitGetAsEntry' in entry) {\n dir = entry.webkitGetAsEntry() as FileSystemDirectoryEntry;\n } else if ('getAsEntry' in entry) {\n // non-WebKit browsers may rename webkitGetAsEntry to getAsEntry. MDN recommends looking for both.\n dir = (entry as any).getAsEntry();\n }\n\n return dir;\n }\n\n // Process entries from a directory reader\n private async _processEntries(\n entries: FileSystemEntry[],\n folders: UUIFileFolder[],\n files: File[],\n ): Promise<void> {\n for (const en of entries) {\n if (en.isFile) {\n const file = await this._getAsFile(en as FileSystemFileEntry);\n if (this._isAccepted(file)) {\n files.push(file);\n }\n } else if (en.isDirectory) {\n const directory = await this._mkdir(en as FileSystemDirectoryEntry);\n folders.push(directory);\n }\n }\n }\n\n // Read entries from a directory reader recursively\n private async _readAllEntries(\n reader: FileSystemDirectoryReader,\n folders: UUIFileFolder[],\n files: File[],\n ): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n reader.readEntries(async entries => {\n if (!entries.length) {\n resolve();\n return;\n }\n\n await this._processEntries(entries, folders, files);\n\n // readEntries only reads up to 100 entries at a time. It is on purpose we call readEntries recursively.\n await this._readAllEntries(reader, folders, files);\n\n resolve();\n }, reject);\n });\n }\n\n // Make directory structure\n private async _mkdir(\n entry: FileSystemDirectoryEntry,\n ): Promise<UUIFileFolder> {\n const reader = entry.createReader();\n const folders: UUIFileFolder[] = [];\n const files: File[] = [];\n\n await this._readAllEntries(reader, folders, files);\n\n const result: UUIFileFolder = { folderName: entry.name, folders, files };\n return result;\n }\n\n private _isAccepted(file: File) {\n if (\n this._acceptedFileExtensions.length === 0 &&\n this._acceptedMimeTypes.length === 0\n ) {\n return true;\n }\n\n const fileType = file.type.toLowerCase();\n const fileExtension = file.name.split('.').pop();\n\n if (\n fileExtension &&\n this._acceptedFileExtensions.includes(fileExtension.toLowerCase())\n ) {\n return true;\n }\n\n for (const mimeType of this._acceptedMimeTypes) {\n if (\n fileType === mimeType ||\n (mimeType.endsWith('/*') &&\n fileType.startsWith(mimeType.replace('*', '')))\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n private async _getAsFile(fileEntry: FileSystemFileEntry): Promise<File> {\n return new Promise((resolve, reject) => fileEntry.file(resolve, reject));\n }\n\n private async _onDrop(e: DragEvent) {\n e.preventDefault();\n this._dropzone.classList.remove('hover');\n\n const items = e.dataTransfer?.items;\n\n if (items) {\n const fileSystemResult = await this._getAllEntries(items);\n\n if (this.multiple === false && fileSystemResult.files.length) {\n fileSystemResult.files = [fileSystemResult.files[0]];\n fileSystemResult.folders = [];\n // When multiple is false and we have an accepted file, don't report rejections\n fileSystemResult.rejectedFiles = [];\n }\n\n if (fileSystemResult.rejectedFiles.length > 0) {\n this.dispatchEvent(\n new UUIFileDropzoneEvent(UUIFileDropzoneEvent.REJECT, {\n detail: { files: fileSystemResult.rejectedFiles, folders: [] },\n }),\n );\n }\n\n if (!fileSystemResult.files.length && !fileSystemResult.folders.length) {\n return;\n }\n\n this.dispatchEvent(\n new UUIFileDropzoneEvent(UUIFileDropzoneEvent.CHANGE, {\n detail: {\n files: fileSystemResult.files,\n folders: fileSystemResult.folders,\n },\n }),\n );\n }\n }\n\n private _onDragOver(e: DragEvent) {\n e.preventDefault();\n }\n\n private _onDragEnter(e: DragEvent) {\n // TODO: make visual indication of wether the file is acceptable or not. If not we need to make a more negative/disabled visual look.\n this._dropzone.classList.add('hover');\n e.preventDefault();\n }\n\n private _onDragLeave(e: DragEvent) {\n this._dropzone.classList.remove('hover');\n e.preventDefault();\n }\n\n private _onFileInputChange() {\n const files = this._input.files ? Array.from(this._input.files) : [];\n\n if (this.multiple === false && files.length > 1) {\n files.splice(1, files.length - 1);\n }\n\n const allowedFiles = files.filter(file => this._isAccepted(file));\n const rejectedFiles = files.filter(file => !this._isAccepted(file));\n\n // When multiple is false and we have an accepted file, don't report rejections\n const shouldReportRejections =\n rejectedFiles.length > 0 && (this.multiple || allowedFiles.length === 0);\n\n if (shouldReportRejections) {\n this.dispatchEvent(\n new UUIFileDropzoneEvent(UUIFileDropzoneEvent.REJECT, {\n detail: { files: rejectedFiles, folders: [] },\n }),\n );\n }\n\n if (!allowedFiles.length) {\n return;\n }\n\n this.dispatchEvent(\n new UUIFileDropzoneEvent(UUIFileDropzoneEvent.CHANGE, {\n detail: {\n files: allowedFiles,\n folders: [],\n },\n }),\n );\n }\n\n render() {\n return html`\n <div id=\"dropzone\">\n <uui-symbol-file-dropzone id=\"symbol\"></uui-symbol-file-dropzone>\n ${this.renderLabel()}\n <input\n @click=${(e: Event) => e.stopImmediatePropagation()}\n id=\"input\"\n type=\"file\"\n accept=${this.accept}\n ?multiple=${this.multiple}\n @change=${this._onFileInputChange}\n aria-label=\"${this.label}\" />\n <slot></slot>\n </div>\n `;\n }\n\n static override readonly styles = [\n css`\n #dropzone {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: var(--uui-size-4);\n border: 3px solid transparent;\n margin: -3px;\n backdrop-filter: blur(2px);\n }\n #dropzone.hover {\n border-color: var(--uui-color-default);\n }\n #dropzone.hover::before {\n content: '';\n position: absolute;\n inset: 0;\n opacity: 0.2;\n border-color: var(--uui-color-default);\n background-color: var(--uui-color-default);\n }\n #symbol {\n color: var(--uui-color-default);\n max-width: 100%;\n max-height: 100%;\n }\n #input {\n position: absolute;\n width: 0px;\n height: 0px;\n opacity: 0;\n display: none;\n }\n `,\n ];\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-dropzone.element.js","names":[],"sources":["../../../src/components/file-dropzone/file-dropzone.element.ts"],"sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { query, property } from 'lit/decorators.js';\nimport { UUIFileDropzoneEvent } from './UUIFileDropzoneEvent.js';\nimport { LabelMixin } from '../../internal/mixins/index.js';\n\nimport '../symbol-file-dropzone/symbol-file-dropzone.js';\n\nexport interface UUIFileFolder {\n folderName: string;\n folders: UUIFileFolder[];\n files: File[];\n}\n\n/**\n * @element uui-file-dropzone\n * @fires {UUIFileDropzoneEvent} change - fires when a file has been selected.\n * @fires {UUIFileDropzoneEvent} reject - fires when files are rejected due to not matching the accept attribute.\n * @slot - For the content of the dropzone\n * @description - Dropzone for file upload. Supports native browsing and drag n drop.\n */\nexport class UUIFileDropzoneElement extends LabelMixin('', LitElement) {\n @query('#input')\n private readonly _input!: HTMLInputElement;\n\n @query('#dropzone')\n private readonly _dropzone!: HTMLElement;\n\n private _acceptedFileExtensions: string[] = [];\n private _acceptedMimeTypes: string[] = [];\n private _accept = '';\n\n /**\n * Comma-separated list of accepted mime types or file extensions (denoted with a `.`).\n * If this is left empty, it will allow all types.\n *\n * @type {string}\n * @attr\n * @examples [\n * \"image/*,application/pdf\",\n * \".gif,.png,.jpg,.jpeg,.pdf\",\n * ]\n */\n @property({ type: String })\n public set accept(value: string) {\n if (value) {\n const mimetypes: string[] = [];\n const fileextensions: string[] = [];\n\n // Create the arrays defined above\n value.split(',').forEach(item => {\n item = item.trim().toLowerCase();\n\n // If the item is a mime type, add it to the accept list\n if (/^[a-z]+\\/[a-z*]+$/.test(item)) {\n mimetypes.push(item);\n } else {\n fileextensions.push(item.replace(/^\\./, ''));\n }\n });\n\n this._acceptedMimeTypes = mimetypes;\n this._acceptedFileExtensions = fileextensions;\n } else {\n this._acceptedMimeTypes = [];\n this._acceptedFileExtensions = [];\n }\n const old = this._accept;\n this._accept = value;\n this.requestUpdate('accept', old);\n }\n public get accept(): string {\n return this._accept;\n }\n\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'disallow-folder-upload',\n })\n public disallowFolderUpload: boolean = false;\n\n /**\n * Allows for multiple files to be selected.\n * @type {boolean}\n * @attr\n * @default false\n */\n @property({ type: Boolean })\n public multiple: boolean = false;\n\n /**\n * Opens the native file picker to select a file.\n * @method browse\n */\n public browse() {\n this._input.click();\n }\n\n constructor() {\n super();\n\n this.addEventListener('dragenter', this._onDragEnter, false);\n this.addEventListener('dragleave', this._onDragLeave, false);\n this.addEventListener('dragover', this._onDragOver, false);\n this.addEventListener('drop', this._onDrop, false);\n }\n\n /**\n * Check if folder upload should be processed based on component settings.\n * @returns true if folder upload is allowed and multiple files are enabled\n */\n private _shouldProcessFolder(): boolean {\n return !this.disallowFolderUpload && this.multiple;\n }\n\n private async _getAllEntries(dataTransferItemList: DataTransferItemList) {\n // Phase 1: Extract ALL FileSystemEntry refs synchronously.\n // DataTransferItem.webkitGetAsEntry() returns null after the first await\n // because the browser expires the drag data store. FileSystemEntry objects\n // obtained here remain valid indefinitely.\n const rootEntries = [...dataTransferItemList]\n .filter(item => item?.kind === 'file')\n .map(item => this._getEntry(item))\n .filter((entry): entry is FileSystemEntry => entry !== null);\n\n return this._processRootEntries(rootEntries);\n }\n\n private async _processRootEntries(rootEntries: FileSystemEntry[]) {\n const folders: UUIFileFolder[] = [];\n const files: File[] = [];\n const rejectedFiles: File[] = [];\n\n for (const entry of rootEntries) {\n if (!entry.isDirectory) {\n const file = await this._getAsFile(entry as FileSystemFileEntry);\n if (this._isAccepted(file)) {\n files.push(file);\n } else {\n rejectedFiles.push(file);\n }\n } else if (this._shouldProcessFolder()) {\n folders.push(await this._mkdir(entry as FileSystemDirectoryEntry));\n }\n }\n\n return { files, folders, rejectedFiles };\n }\n\n /**\n * Get the filesystem entry (file or directory) from a DataTransferItem.\n * @remark Supports both WebKit and non-WebKit browsers.\n */\n private _getEntry(entry: DataTransferItem): FileSystemEntry | null {\n let dir: FileSystemDirectoryEntry | null = null;\n\n if ('webkitGetAsEntry' in entry) {\n dir = entry.webkitGetAsEntry() as FileSystemDirectoryEntry;\n } else if ('getAsEntry' in entry) {\n // non-WebKit browsers may rename webkitGetAsEntry to getAsEntry. MDN recommends looking for both.\n dir = (entry as any).getAsEntry();\n }\n\n return dir;\n }\n\n // Process entries from a directory reader\n private async _processEntries(\n entries: FileSystemEntry[],\n folders: UUIFileFolder[],\n files: File[],\n ): Promise<void> {\n for (const en of entries) {\n if (en.isFile) {\n const file = await this._getAsFile(en as FileSystemFileEntry);\n if (this._isAccepted(file)) {\n files.push(file);\n }\n } else if (en.isDirectory) {\n const directory = await this._mkdir(en as FileSystemDirectoryEntry);\n folders.push(directory);\n }\n }\n }\n\n // Read entries from a directory reader recursively\n private async _readAllEntries(\n reader: FileSystemDirectoryReader,\n folders: UUIFileFolder[],\n files: File[],\n ): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n reader.readEntries(async entries => {\n if (!entries.length) {\n resolve();\n return;\n }\n\n await this._processEntries(entries, folders, files);\n\n // readEntries only reads up to 100 entries at a time. It is on purpose we call readEntries recursively.\n await this._readAllEntries(reader, folders, files);\n\n resolve();\n }, reject);\n });\n }\n\n // Make directory structure\n private async _mkdir(\n entry: FileSystemDirectoryEntry,\n ): Promise<UUIFileFolder> {\n const reader = entry.createReader();\n const folders: UUIFileFolder[] = [];\n const files: File[] = [];\n\n await this._readAllEntries(reader, folders, files);\n\n const result: UUIFileFolder = { folderName: entry.name, folders, files };\n return result;\n }\n\n private _isAccepted(file: File) {\n if (\n this._acceptedFileExtensions.length === 0 &&\n this._acceptedMimeTypes.length === 0\n ) {\n return true;\n }\n\n const fileType = file.type.toLowerCase();\n const fileExtension = file.name.split('.').pop();\n\n if (\n fileExtension &&\n this._acceptedFileExtensions.includes(fileExtension.toLowerCase())\n ) {\n return true;\n }\n\n for (const mimeType of this._acceptedMimeTypes) {\n if (\n fileType === mimeType ||\n (mimeType.endsWith('/*') &&\n fileType.startsWith(mimeType.replace('*', '')))\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n private async _getAsFile(fileEntry: FileSystemFileEntry): Promise<File> {\n return new Promise((resolve, reject) => fileEntry.file(resolve, reject));\n }\n\n private async _onDrop(e: DragEvent) {\n e.preventDefault();\n this._dropzone.classList.remove('hover');\n\n const items = e.dataTransfer?.items;\n\n if (items) {\n const fileSystemResult = await this._getAllEntries(items);\n\n if (this.multiple === false && fileSystemResult.files.length) {\n fileSystemResult.files = [fileSystemResult.files[0]];\n fileSystemResult.folders = [];\n // When multiple is false and we have an accepted file, don't report rejections\n fileSystemResult.rejectedFiles = [];\n }\n\n if (fileSystemResult.rejectedFiles.length > 0) {\n this.dispatchEvent(\n new UUIFileDropzoneEvent(UUIFileDropzoneEvent.REJECT, {\n detail: { files: fileSystemResult.rejectedFiles, folders: [] },\n }),\n );\n }\n\n if (!fileSystemResult.files.length && !fileSystemResult.folders.length) {\n return;\n }\n\n this.dispatchEvent(\n new UUIFileDropzoneEvent(UUIFileDropzoneEvent.CHANGE, {\n detail: {\n files: fileSystemResult.files,\n folders: fileSystemResult.folders,\n },\n }),\n );\n }\n }\n\n private _onDragOver(e: DragEvent) {\n e.preventDefault();\n }\n\n private _onDragEnter(e: DragEvent) {\n // TODO: make visual indication of wether the file is acceptable or not. If not we need to make a more negative/disabled visual look.\n this._dropzone.classList.add('hover');\n e.preventDefault();\n }\n\n private _onDragLeave(e: DragEvent) {\n this._dropzone.classList.remove('hover');\n e.preventDefault();\n }\n\n private _onFileInputChange() {\n const files = this._input.files ? Array.from(this._input.files) : [];\n\n if (this.multiple === false && files.length > 1) {\n files.splice(1, files.length - 1);\n }\n\n const allowedFiles = files.filter(file => this._isAccepted(file));\n const rejectedFiles = files.filter(file => !this._isAccepted(file));\n\n // When multiple is false and we have an accepted file, don't report rejections\n const shouldReportRejections =\n rejectedFiles.length > 0 && (this.multiple || allowedFiles.length === 0);\n\n if (shouldReportRejections) {\n this.dispatchEvent(\n new UUIFileDropzoneEvent(UUIFileDropzoneEvent.REJECT, {\n detail: { files: rejectedFiles, folders: [] },\n }),\n );\n }\n\n if (!allowedFiles.length) {\n return;\n }\n\n this.dispatchEvent(\n new UUIFileDropzoneEvent(UUIFileDropzoneEvent.CHANGE, {\n detail: {\n files: allowedFiles,\n folders: [],\n },\n }),\n );\n }\n\n render() {\n return html`\n <div id=\"dropzone\">\n <uui-symbol-file-dropzone id=\"symbol\"></uui-symbol-file-dropzone>\n ${this.renderLabel()}\n <input\n @click=${(e: Event) => e.stopImmediatePropagation()}\n id=\"input\"\n type=\"file\"\n accept=${this.accept}\n ?multiple=${this.multiple}\n @change=${this._onFileInputChange}\n aria-label=\"${this.label}\" />\n <slot></slot>\n </div>\n `;\n }\n\n static override readonly styles = [\n css`\n #dropzone {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: var(--uui-size-4);\n border: 3px solid transparent;\n margin: -3px;\n backdrop-filter: blur(2px);\n }\n #dropzone.hover {\n border-color: var(--uui-color-default);\n }\n #dropzone.hover::before {\n content: '';\n position: absolute;\n inset: 0;\n opacity: 0.2;\n border-color: var(--uui-color-default);\n background-color: var(--uui-color-default);\n }\n #symbol {\n color: var(--uui-color-default);\n max-width: 100%;\n max-height: 100%;\n }\n #input {\n position: absolute;\n width: 0px;\n height: 0px;\n opacity: 0;\n display: none;\n }\n `,\n ];\n}\n"],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  import { defineElement } from "../../internal/registration/index.js";
2
- import { UUIFileDropzoneElement } from "./file-dropzone.element.js";
3
2
  import { UUIFileDropzoneEvent } from "./UUIFileDropzoneEvent.js";
3
+ import { UUIFileDropzoneElement } from "./file-dropzone.element.js";
4
+ //#region src/components/file-dropzone/file-dropzone.ts
4
5
  defineElement("uui-file-dropzone", UUIFileDropzoneElement);
5
- export {
6
- UUIFileDropzoneElement,
7
- UUIFileDropzoneEvent,
8
- UUIFileDropzoneElement as default
9
- };
10
- //# sourceMappingURL=file-dropzone.js.map
6
+ //#endregion
7
+ export { UUIFileDropzoneElement, UUIFileDropzoneEvent };
8
+
9
+ //# sourceMappingURL=file-dropzone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-dropzone.js","sources":["../../../src/components/file-dropzone/file-dropzone.ts"],"sourcesContent":["import { defineElement } from '../../internal/registration/index.js';\nimport { UUIFileDropzoneElement } from './file-dropzone.element.js';\n\ndefineElement('uui-file-dropzone', UUIFileDropzoneElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'uui-file-dropzone': UUIFileDropzoneElement;\n }\n}\n\nexport * from './file-dropzone.element.js';\nexport * from './UUIFileDropzoneEvent.js';\nexport { UUIFileDropzoneElement as default } from './file-dropzone.element.js';\n"],"names":[],"mappings":";;;AAGA,cAAc,qBAAqB,sBAAsB;"}
1
+ {"version":3,"file":"file-dropzone.js","names":[],"sources":["../../../src/components/file-dropzone/file-dropzone.ts"],"sourcesContent":["import { defineElement } from '../../internal/registration/index.js';\nimport { UUIFileDropzoneElement } from './file-dropzone.element.js';\n\ndefineElement('uui-file-dropzone', UUIFileDropzoneElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'uui-file-dropzone': UUIFileDropzoneElement;\n }\n}\n\nexport * from './file-dropzone.element.js';\nexport * from './UUIFileDropzoneEvent.js';\n"],"mappings":";;;;AAGA,cAAc,qBAAqB,sBAAsB"}