@umbraco-ui/uui 2.0.0-rc.2 → 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.
- package/custom-elements.json +103 -1
- package/dist/_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js +9 -0
- package/dist/components/action-bar/action-bar.d.ts +0 -1
- package/dist/components/action-bar/action-bar.element.js +15 -12
- package/dist/components/action-bar/action-bar.element.js.map +1 -1
- package/dist/components/action-bar/action-bar.js +5 -5
- package/dist/components/action-bar/action-bar.js.map +1 -1
- package/dist/components/avatar/avatar.d.ts +0 -1
- package/dist/components/avatar/avatar.element.js +72 -86
- package/dist/components/avatar/avatar.element.js.map +1 -1
- package/dist/components/avatar/avatar.js +5 -5
- package/dist/components/avatar/avatar.js.map +1 -1
- package/dist/components/avatar-group/avatar-group.d.ts +0 -1
- package/dist/components/avatar-group/avatar-group.element.js +58 -68
- package/dist/components/avatar-group/avatar-group.element.js.map +1 -1
- package/dist/components/avatar-group/avatar-group.js +5 -5
- package/dist/components/avatar-group/avatar-group.js.map +1 -1
- package/dist/components/badge/badge.d.ts +0 -1
- package/dist/components/badge/badge.element.js +32 -38
- package/dist/components/badge/badge.element.js.map +1 -1
- package/dist/components/badge/badge.js +5 -5
- package/dist/components/badge/badge.js.map +1 -1
- package/dist/components/boolean-input/UUIBooleanInputEvent.js +15 -13
- package/dist/components/boolean-input/UUIBooleanInputEvent.js.map +1 -1
- package/dist/components/boolean-input/boolean-input.d.ts +0 -1
- package/dist/components/boolean-input/boolean-input.element.js +114 -134
- package/dist/components/boolean-input/boolean-input.element.js.map +1 -1
- package/dist/components/boolean-input/boolean-input.js +3 -0
- package/dist/components/box/box.d.ts +0 -1
- package/dist/components/box/box.element.js +74 -77
- package/dist/components/box/box.element.js.map +1 -1
- package/dist/components/box/box.js +5 -5
- package/dist/components/box/box.js.map +1 -1
- package/dist/components/breadcrumbs/breadcrumb-item.element.js +45 -50
- package/dist/components/breadcrumbs/breadcrumb-item.element.js.map +1 -1
- package/dist/components/breadcrumbs/breadcrumbs.d.ts +0 -1
- package/dist/components/breadcrumbs/breadcrumbs.element.js +40 -47
- package/dist/components/breadcrumbs/breadcrumbs.element.js.map +1 -1
- package/dist/components/breadcrumbs/breadcrumbs.js +5 -6
- package/dist/components/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/components/button/button.d.ts +0 -1
- package/dist/components/button/button.element.js +147 -199
- package/dist/components/button/button.element.js.map +1 -1
- package/dist/components/button/button.js +5 -5
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button-copy-text/UUICopyTextEvent.js +16 -12
- package/dist/components/button-copy-text/UUICopyTextEvent.js.map +1 -1
- package/dist/components/button-copy-text/button-copy-text.d.ts +0 -1
- package/dist/components/button-copy-text/button-copy-text.element.js +78 -93
- package/dist/components/button-copy-text/button-copy-text.element.js.map +1 -1
- package/dist/components/button-copy-text/button-copy-text.js +6 -7
- package/dist/components/button-copy-text/button-copy-text.js.map +1 -1
- package/dist/components/button-group/button-group.d.ts +0 -1
- package/dist/components/button-group/button-group.element.js +19 -14
- package/dist/components/button-group/button-group.element.js.map +1 -1
- package/dist/components/button-group/button-group.js +5 -5
- package/dist/components/button-group/button-group.js.map +1 -1
- package/dist/components/button-inline-create/UUIButtonInlineCreateEvent.js +16 -14
- package/dist/components/button-inline-create/UUIButtonInlineCreateEvent.js.map +1 -1
- package/dist/components/button-inline-create/button-inline-create.d.ts +0 -1
- package/dist/components/button-inline-create/button-inline-create.element.js +63 -88
- package/dist/components/button-inline-create/button-inline-create.element.js.map +1 -1
- package/dist/components/button-inline-create/button-inline-create.js +6 -7
- package/dist/components/button-inline-create/button-inline-create.js.map +1 -1
- package/dist/components/card/UUICardEvent.js +9 -7
- package/dist/components/card/UUICardEvent.js.map +1 -1
- package/dist/components/card/card.d.ts +0 -1
- package/dist/components/card/card.element.d.ts +7 -0
- package/dist/components/card/card.element.js +72 -69
- package/dist/components/card/card.element.js.map +1 -1
- package/dist/components/card/card.js +6 -7
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/card-block-type/card-block-type.d.ts +0 -1
- package/dist/components/card-block-type/card-block-type.element.js +55 -74
- package/dist/components/card-block-type/card-block-type.element.js.map +1 -1
- package/dist/components/card-block-type/card-block-type.js +5 -5
- package/dist/components/card-block-type/card-block-type.js.map +1 -1
- package/dist/components/card-content-node/card-content-node.d.ts +0 -1
- package/dist/components/card-content-node/card-content-node.element.d.ts +1 -0
- package/dist/components/card-content-node/card-content-node.element.js +82 -83
- package/dist/components/card-content-node/card-content-node.element.js.map +1 -1
- package/dist/components/card-content-node/card-content-node.js +5 -5
- package/dist/components/card-content-node/card-content-node.js.map +1 -1
- package/dist/components/card-media/card-media.d.ts +0 -1
- package/dist/components/card-media/card-media.element.d.ts +4 -0
- package/dist/components/card-media/card-media.element.js +103 -89
- package/dist/components/card-media/card-media.element.js.map +1 -1
- package/dist/components/card-media/card-media.js +5 -5
- package/dist/components/card-media/card-media.js.map +1 -1
- package/dist/components/card-user/card-user.d.ts +0 -1
- package/dist/components/card-user/card-user.element.js +57 -72
- package/dist/components/card-user/card-user.element.js.map +1 -1
- package/dist/components/card-user/card-user.js +5 -5
- package/dist/components/card-user/card-user.js.map +1 -1
- package/dist/components/checkbox/checkbox.d.ts +0 -1
- package/dist/components/checkbox/checkbox.element.js +41 -22
- package/dist/components/checkbox/checkbox.element.js.map +1 -1
- package/dist/components/checkbox/checkbox.js +5 -5
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/color-area/UUIColorAreaEvent.js +15 -13
- package/dist/components/color-area/UUIColorAreaEvent.js.map +1 -1
- package/dist/components/color-area/color-area.d.ts +0 -1
- package/dist/components/color-area/color-area.element.js +137 -174
- package/dist/components/color-area/color-area.element.js.map +1 -1
- package/dist/components/color-area/color-area.js +6 -7
- package/dist/components/color-area/color-area.js.map +1 -1
- package/dist/components/color-picker/UUIColorPickerEvent.js +15 -13
- package/dist/components/color-picker/UUIColorPickerEvent.js.map +1 -1
- package/dist/components/color-picker/color-picker.d.ts +0 -1
- package/dist/components/color-picker/color-picker.element.js +293 -334
- package/dist/components/color-picker/color-picker.element.js.map +1 -1
- package/dist/components/color-picker/color-picker.js +6 -7
- package/dist/components/color-picker/color-picker.js.map +1 -1
- package/dist/components/color-slider/UUIColorSliderEvent.js +15 -13
- package/dist/components/color-slider/UUIColorSliderEvent.js.map +1 -1
- package/dist/components/color-slider/color-slider.d.ts +0 -1
- package/dist/components/color-slider/color-slider.element.js +169 -219
- package/dist/components/color-slider/color-slider.element.js.map +1 -1
- package/dist/components/color-slider/color-slider.js +6 -7
- package/dist/components/color-slider/color-slider.js.map +1 -1
- package/dist/components/color-swatch/color-swatch.d.ts +0 -1
- package/dist/components/color-swatch/color-swatch.element.d.ts +1 -1
- package/dist/components/color-swatch/color-swatch.element.js +215 -201
- package/dist/components/color-swatch/color-swatch.element.js.map +1 -1
- package/dist/components/color-swatch/color-swatch.js +5 -5
- package/dist/components/color-swatch/color-swatch.js.map +1 -1
- package/dist/components/color-swatches/UUIColorSwatchesEvent.js +15 -13
- package/dist/components/color-swatches/UUIColorSwatchesEvent.js.map +1 -1
- package/dist/components/color-swatches/color-swatches.d.ts +0 -1
- package/dist/components/color-swatches/color-swatches.element.js +115 -132
- package/dist/components/color-swatches/color-swatches.element.js.map +1 -1
- package/dist/components/color-swatches/color-swatches.js +6 -7
- package/dist/components/color-swatches/color-swatches.js.map +1 -1
- package/dist/components/combobox/UUIComboboxEvent.js +18 -14
- package/dist/components/combobox/UUIComboboxEvent.js.map +1 -1
- package/dist/components/combobox/combobox.d.ts +0 -1
- package/dist/components/combobox/combobox.element.js +321 -425
- package/dist/components/combobox/combobox.element.js.map +1 -1
- package/dist/components/combobox/combobox.js +6 -7
- package/dist/components/combobox/combobox.js.map +1 -1
- package/dist/components/combobox-list/UUIComboboxListEvent.js +18 -14
- package/dist/components/combobox-list/UUIComboboxListEvent.js.map +1 -1
- package/dist/components/combobox-list/combobox-list-option.element.js +88 -80
- package/dist/components/combobox-list/combobox-list-option.element.js.map +1 -1
- package/dist/components/combobox-list/combobox-list.d.ts +0 -1
- package/dist/components/combobox-list/combobox-list.element.js +218 -275
- package/dist/components/combobox-list/combobox-list.element.js.map +1 -1
- package/dist/components/combobox-list/combobox-list.js +6 -8
- package/dist/components/combobox-list/combobox-list.js.map +1 -1
- package/dist/components/dialog/dialog.d.ts +0 -1
- package/dist/components/dialog/dialog.element.js +19 -14
- package/dist/components/dialog/dialog.element.js.map +1 -1
- package/dist/components/dialog/dialog.js +5 -5
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog-layout/dialog-layout.d.ts +0 -1
- package/dist/components/dialog-layout/dialog-layout.element.js +59 -64
- package/dist/components/dialog-layout/dialog-layout.element.js.map +1 -1
- package/dist/components/dialog-layout/dialog-layout.js +5 -5
- package/dist/components/dialog-layout/dialog-layout.js.map +1 -1
- package/dist/components/file-dropzone/UUIFileDropzoneEvent.js +18 -14
- package/dist/components/file-dropzone/UUIFileDropzoneEvent.js.map +1 -1
- package/dist/components/file-dropzone/file-dropzone.d.ts +0 -1
- package/dist/components/file-dropzone/file-dropzone.element.js +214 -257
- package/dist/components/file-dropzone/file-dropzone.element.js.map +1 -1
- package/dist/components/file-dropzone/file-dropzone.js +6 -7
- package/dist/components/file-dropzone/file-dropzone.js.map +1 -1
- package/dist/components/file-preview/UUIFileSize.js +46 -19
- package/dist/components/file-preview/UUIFileSize.js.map +1 -1
- package/dist/components/file-preview/file-preview.d.ts +0 -1
- package/dist/components/file-preview/file-preview.element.js +78 -103
- package/dist/components/file-preview/file-preview.element.js.map +1 -1
- package/dist/components/file-preview/file-preview.js +6 -5
- package/dist/components/file-preview/file-preview.js.map +1 -1
- package/dist/components/form/form.d.ts +0 -1
- package/dist/components/form/form.element.js +46 -46
- package/dist/components/form/form.element.js.map +1 -1
- package/dist/components/form/form.js +5 -5
- package/dist/components/form/form.js.map +1 -1
- package/dist/components/form-layout-item/form-layout-item.d.ts +0 -1
- package/dist/components/form-layout-item/form-layout-item.element.js +39 -45
- package/dist/components/form-layout-item/form-layout-item.element.js.map +1 -1
- package/dist/components/form-layout-item/form-layout-item.js +5 -5
- package/dist/components/form-layout-item/form-layout-item.js.map +1 -1
- package/dist/components/form-validation-message/form-validation-message.d.ts +0 -1
- package/dist/components/form-validation-message/form-validation-message.element.js +71 -89
- package/dist/components/form-validation-message/form-validation-message.element.js.map +1 -1
- package/dist/components/form-validation-message/form-validation-message.js +5 -5
- package/dist/components/form-validation-message/form-validation-message.js.map +1 -1
- package/dist/components/icon/UUIIconRequestEvent.js +21 -19
- package/dist/components/icon/UUIIconRequestEvent.js.map +1 -1
- package/dist/components/icon/icon.d.ts +0 -1
- package/dist/components/icon/icon.element.js +93 -117
- package/dist/components/icon/icon.element.js.map +1 -1
- package/dist/components/icon/icon.js +6 -7
- package/dist/components/icon/icon.js.map +1 -1
- package/dist/components/icon-registry/UUIIconHost.js +16 -17
- package/dist/components/icon-registry/UUIIconHost.js.map +1 -1
- package/dist/components/icon-registry/UUIIconRegistry.js +67 -77
- package/dist/components/icon-registry/UUIIconRegistry.js.map +1 -1
- package/dist/components/icon-registry/icon-registry.d.ts +0 -1
- package/dist/components/icon-registry/icon-registry.element.js +39 -48
- package/dist/components/icon-registry/icon-registry.element.js.map +1 -1
- package/dist/components/icon-registry/icon-registry.js +7 -6
- package/dist/components/icon-registry/icon-registry.js.map +1 -1
- package/dist/components/icon-registry-essential/UUIIconRegistryEssential.js +44 -42
- package/dist/components/icon-registry-essential/UUIIconRegistryEssential.js.map +1 -1
- package/dist/components/icon-registry-essential/icon-registry-essential.d.ts +0 -1
- package/dist/components/icon-registry-essential/icon-registry-essential.element.js +15 -9
- package/dist/components/icon-registry-essential/icon-registry-essential.element.js.map +1 -1
- package/dist/components/icon-registry-essential/icon-registry-essential.js +6 -39
- package/dist/components/icon-registry-essential/icon-registry-essential.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconAdd.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconAdd.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconAlert.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconAlert.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconAttachment.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconAttachment.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconCalendar.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconCalendar.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconCheck.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconCheck.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconClipboard.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconClipboard.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconCode.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconCode.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconColorPicker.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconColorPicker.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconCopy.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconCopy.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconDelete.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconDelete.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconDocument.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconDocument.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconDownload.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconDownload.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconDrag.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconDrag.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconEdit.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconEdit.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconFavorite.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconFavorite.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconFolder.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconFolder.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconForbidden.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconForbidden.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconInfo.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconInfo.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconLink.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconLink.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconLock.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconLock.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconPause.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconPause.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconPicture.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconPicture.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconPlay.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconPlay.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconRemove.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconRemove.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconSearch.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconSearch.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconSee.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconSee.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconSettings.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconSettings.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconSubtract.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconSubtract.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconSync.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconSync.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconUnlock.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconUnlock.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconUnsee.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconUnsee.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconWand.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconWand.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/iconWrong.js +6 -5
- package/dist/components/icon-registry-essential/svgs/iconWrong.js.map +1 -1
- package/dist/components/icon-registry-essential/svgs/index.js +34 -0
- package/dist/components/index.js +206 -0
- package/dist/components/input/UUIInputEvent.js +18 -14
- package/dist/components/input/UUIInputEvent.js.map +1 -1
- package/dist/components/input/input.d.ts +0 -1
- package/dist/components/input/input.element.js +176 -201
- package/dist/components/input/input.element.js.map +1 -1
- package/dist/components/input/input.js +6 -7
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/input-file/input-file.d.ts +0 -1
- package/dist/components/input-file/input-file.element.js +137 -211
- package/dist/components/input-file/input-file.element.js.map +1 -1
- package/dist/components/input-file/input-file.js +5 -5
- package/dist/components/input-file/input-file.js.map +1 -1
- package/dist/components/input-lock/UUIInputLockEvent.js +15 -13
- package/dist/components/input-lock/UUIInputLockEvent.js.map +1 -1
- package/dist/components/input-lock/input-lock.d.ts +0 -1
- package/dist/components/input-lock/input-lock.element.js +69 -105
- package/dist/components/input-lock/input-lock.element.js.map +1 -1
- package/dist/components/input-lock/input-lock.js +6 -7
- package/dist/components/input-lock/input-lock.js.map +1 -1
- package/dist/components/input-password/input-password.d.ts +0 -1
- package/dist/components/input-password/input-password.element.js +45 -90
- package/dist/components/input-password/input-password.element.js.map +1 -1
- package/dist/components/input-password/input-password.js +5 -5
- package/dist/components/input-password/input-password.js.map +1 -1
- package/dist/components/keyboard-shortcut/key.element.js +19 -14
- package/dist/components/keyboard-shortcut/key.element.js.map +1 -1
- package/dist/components/keyboard-shortcut/keyboard-shortcut.d.ts +0 -1
- package/dist/components/keyboard-shortcut/keyboard-shortcut.element.js +19 -14
- package/dist/components/keyboard-shortcut/keyboard-shortcut.element.js.map +1 -1
- package/dist/components/keyboard-shortcut/keyboard-shortcut.js +5 -6
- package/dist/components/keyboard-shortcut/keyboard-shortcut.js.map +1 -1
- package/dist/components/label/label.d.ts +0 -1
- package/dist/components/label/label.element.js +52 -54
- package/dist/components/label/label.element.js.map +1 -1
- package/dist/components/label/label.js +5 -5
- package/dist/components/label/label.js.map +1 -1
- package/dist/components/loader/loader.d.ts +0 -1
- package/dist/components/loader/loader.element.js +18 -14
- package/dist/components/loader/loader.element.js.map +1 -1
- package/dist/components/loader/loader.js +5 -5
- package/dist/components/loader/loader.js.map +1 -1
- package/dist/components/loader-bar/loader-bar.d.ts +0 -1
- package/dist/components/loader-bar/loader-bar.element.js +55 -52
- package/dist/components/loader-bar/loader-bar.element.js.map +1 -1
- package/dist/components/loader-bar/loader-bar.js +5 -5
- package/dist/components/loader-bar/loader-bar.js.map +1 -1
- package/dist/components/loader-circle/loader-circle.d.ts +0 -1
- package/dist/components/loader-circle/loader-circle.element.js +52 -59
- package/dist/components/loader-circle/loader-circle.element.js.map +1 -1
- package/dist/components/loader-circle/loader-circle.js +5 -5
- package/dist/components/loader-circle/loader-circle.js.map +1 -1
- package/dist/components/menu-item/UUIMenuItemEvent.js +15 -9
- package/dist/components/menu-item/UUIMenuItemEvent.js.map +1 -1
- package/dist/components/menu-item/menu-item.d.ts +0 -1
- package/dist/components/menu-item/menu-item.element.js +136 -139
- package/dist/components/menu-item/menu-item.element.js.map +1 -1
- package/dist/components/menu-item/menu-item.js +6 -7
- package/dist/components/menu-item/menu-item.js.map +1 -1
- package/dist/components/modal/modal-container.js +86 -141
- package/dist/components/modal/modal-container.js.map +1 -1
- package/dist/components/modal/modal-dialog.element.js +14 -15
- package/dist/components/modal/modal-dialog.element.js.map +1 -1
- package/dist/components/modal/modal-sidebar.element.js +41 -64
- package/dist/components/modal/modal-sidebar.element.js.map +1 -1
- package/dist/components/modal/modal.d.ts +0 -1
- package/dist/components/modal/modal.element.js +89 -106
- package/dist/components/modal/modal.element.js.map +1 -1
- package/dist/components/modal/modal.js +6 -12
- package/dist/components/modal/modal.js.map +1 -1
- package/dist/components/pagination/UUIPaginationEvent.js +15 -13
- package/dist/components/pagination/UUIPaginationEvent.js.map +1 -1
- package/dist/components/pagination/pagination.d.ts +0 -1
- package/dist/components/pagination/pagination.element.js +188 -228
- package/dist/components/pagination/pagination.element.js.map +1 -1
- package/dist/components/pagination/pagination.js +6 -7
- package/dist/components/pagination/pagination.js.map +1 -1
- package/dist/components/popover-container/popover-container.d.ts +0 -1
- package/dist/components/popover-container/popover-container.element.d.ts +1 -0
- package/dist/components/popover-container/popover-container.element.js +290 -335
- package/dist/components/popover-container/popover-container.element.js.map +1 -1
- package/dist/components/popover-container/popover-container.js +5 -5
- package/dist/components/popover-container/popover-container.js.map +1 -1
- package/dist/components/progress-bar/progress-bar.d.ts +0 -1
- package/dist/components/progress-bar/progress-bar.element.js +41 -43
- package/dist/components/progress-bar/progress-bar.element.js.map +1 -1
- package/dist/components/progress-bar/progress-bar.js +5 -5
- package/dist/components/progress-bar/progress-bar.js.map +1 -1
- package/dist/components/radio/UUIRadioEvent.js +15 -13
- package/dist/components/radio/UUIRadioEvent.js.map +1 -1
- package/dist/components/radio/UUIRadioGroupEvent.js +15 -13
- package/dist/components/radio/UUIRadioGroupEvent.js.map +1 -1
- package/dist/components/radio/radio-group.element.js +224 -279
- package/dist/components/radio/radio-group.element.js.map +1 -1
- package/dist/components/radio/radio.d.ts +0 -1
- package/dist/components/radio/radio.element.js +100 -123
- package/dist/components/radio/radio.element.js.map +1 -1
- package/dist/components/radio/radio.js +7 -10
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/range-slider/UUIRangeSliderEvent.js +18 -14
- package/dist/components/range-slider/UUIRangeSliderEvent.js.map +1 -1
- package/dist/components/range-slider/range-slider.d.ts +0 -1
- package/dist/components/range-slider/range-slider.element.js +439 -504
- package/dist/components/range-slider/range-slider.element.js.map +1 -1
- package/dist/components/range-slider/range-slider.js +6 -7
- package/dist/components/range-slider/range-slider.js.map +1 -1
- package/dist/components/ref/UUIRefEvent.js +9 -7
- package/dist/components/ref/UUIRefEvent.js.map +1 -1
- package/dist/components/ref/ref.d.ts +0 -1
- package/dist/components/ref/ref.element.js +55 -50
- package/dist/components/ref/ref.element.js.map +1 -1
- package/dist/components/ref/ref.js +6 -7
- package/dist/components/ref/ref.js.map +1 -1
- package/dist/components/ref-list/ref-list.d.ts +0 -1
- package/dist/components/ref-list/ref-list.element.js +17 -14
- package/dist/components/ref-list/ref-list.element.js.map +1 -1
- package/dist/components/ref-list/ref-list.js +5 -5
- package/dist/components/ref-list/ref-list.js.map +1 -1
- package/dist/components/ref-node/ref-node.d.ts +0 -1
- package/dist/components/ref-node/ref-node.element.js +91 -109
- package/dist/components/ref-node/ref-node.element.js.map +1 -1
- package/dist/components/ref-node/ref-node.js +5 -5
- package/dist/components/ref-node/ref-node.js.map +1 -1
- package/dist/components/ref-node-data-type/ref-node-data-type.d.ts +0 -1
- package/dist/components/ref-node-data-type/ref-node-data-type.element.js +30 -35
- package/dist/components/ref-node-data-type/ref-node-data-type.element.js.map +1 -1
- package/dist/components/ref-node-data-type/ref-node-data-type.js +5 -5
- package/dist/components/ref-node-data-type/ref-node-data-type.js.map +1 -1
- package/dist/components/ref-node-document-type/ref-node-document-type.d.ts +0 -1
- package/dist/components/ref-node-document-type/ref-node-document-type.element.js +30 -35
- package/dist/components/ref-node-document-type/ref-node-document-type.element.js.map +1 -1
- package/dist/components/ref-node-document-type/ref-node-document-type.js +5 -5
- package/dist/components/ref-node-document-type/ref-node-document-type.js.map +1 -1
- package/dist/components/ref-node-form/ref-node-form.d.ts +0 -1
- package/dist/components/ref-node-form/ref-node-form.element.js +21 -12
- package/dist/components/ref-node-form/ref-node-form.element.js.map +1 -1
- package/dist/components/ref-node-form/ref-node-form.js +5 -5
- package/dist/components/ref-node-form/ref-node-form.js.map +1 -1
- package/dist/components/ref-node-member/ref-node-member.d.ts +0 -1
- package/dist/components/ref-node-member/ref-node-member.element.js +33 -35
- package/dist/components/ref-node-member/ref-node-member.element.js.map +1 -1
- package/dist/components/ref-node-member/ref-node-member.js +5 -5
- package/dist/components/ref-node-member/ref-node-member.js.map +1 -1
- package/dist/components/ref-node-package/ref-node-package.d.ts +0 -1
- package/dist/components/ref-node-package/ref-node-package.element.js +33 -42
- package/dist/components/ref-node-package/ref-node-package.element.js.map +1 -1
- package/dist/components/ref-node-package/ref-node-package.js +5 -5
- package/dist/components/ref-node-package/ref-node-package.js.map +1 -1
- package/dist/components/ref-node-user/ref-node-user.d.ts +0 -1
- package/dist/components/ref-node-user/ref-node-user.element.js +33 -35
- package/dist/components/ref-node-user/ref-node-user.element.js.map +1 -1
- package/dist/components/ref-node-user/ref-node-user.js +5 -5
- package/dist/components/ref-node-user/ref-node-user.js.map +1 -1
- package/dist/components/responsive-container/responsive-container.d.ts +0 -1
- package/dist/components/responsive-container/responsive-container.element.js +186 -244
- package/dist/components/responsive-container/responsive-container.element.js.map +1 -1
- package/dist/components/responsive-container/responsive-container.js +5 -5
- package/dist/components/responsive-container/responsive-container.js.map +1 -1
- package/dist/components/scroll-container/scroll-container.d.ts +0 -1
- package/dist/components/scroll-container/scroll-container.element.js +35 -36
- package/dist/components/scroll-container/scroll-container.element.js.map +1 -1
- package/dist/components/scroll-container/scroll-container.js +5 -5
- package/dist/components/scroll-container/scroll-container.js.map +1 -1
- package/dist/components/select/UUISelectEvent.js +15 -13
- package/dist/components/select/UUISelectEvent.js.map +1 -1
- package/dist/components/select/select.d.ts +0 -1
- package/dist/components/select/select.element.js +134 -163
- package/dist/components/select/select.element.js.map +1 -1
- package/dist/components/select/select.js +6 -7
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/slider/UUISliderEvent.js +18 -14
- package/dist/components/slider/UUISliderEvent.js.map +1 -1
- package/dist/components/slider/native-input.styles.js +6 -5
- package/dist/components/slider/native-input.styles.js.map +1 -1
- package/dist/components/slider/slider.d.ts +0 -1
- package/dist/components/slider/slider.element.d.ts +7 -0
- package/dist/components/slider/slider.element.js +197 -227
- package/dist/components/slider/slider.element.js.map +1 -1
- package/dist/components/slider/slider.js +6 -7
- package/dist/components/slider/slider.js.map +1 -1
- package/dist/components/symbol-drag-handle/symbol-drag-handle.d.ts +0 -1
- package/dist/components/symbol-drag-handle/symbol-drag-handle.element.js +19 -16
- package/dist/components/symbol-drag-handle/symbol-drag-handle.element.js.map +1 -1
- package/dist/components/symbol-drag-handle/symbol-drag-handle.js +5 -5
- package/dist/components/symbol-drag-handle/symbol-drag-handle.js.map +1 -1
- package/dist/components/symbol-expand/symbol-expand.d.ts +0 -1
- package/dist/components/symbol-expand/symbol-expand.element.js +27 -30
- package/dist/components/symbol-expand/symbol-expand.element.js.map +1 -1
- package/dist/components/symbol-expand/symbol-expand.js +5 -5
- package/dist/components/symbol-expand/symbol-expand.js.map +1 -1
- package/dist/components/symbol-file/symbol-file.d.ts +0 -1
- package/dist/components/symbol-file/symbol-file.element.js +24 -32
- package/dist/components/symbol-file/symbol-file.element.js.map +1 -1
- package/dist/components/symbol-file/symbol-file.js +5 -5
- package/dist/components/symbol-file/symbol-file.js.map +1 -1
- package/dist/components/symbol-file-dropzone/symbol-file-dropzone.d.ts +0 -1
- package/dist/components/symbol-file-dropzone/symbol-file-dropzone.element.js +26 -30
- package/dist/components/symbol-file-dropzone/symbol-file-dropzone.element.js.map +1 -1
- package/dist/components/symbol-file-dropzone/symbol-file-dropzone.js +5 -5
- package/dist/components/symbol-file-dropzone/symbol-file-dropzone.js.map +1 -1
- package/dist/components/symbol-file-thumbnail/symbol-file-thumbnail.d.ts +0 -1
- package/dist/components/symbol-file-thumbnail/symbol-file-thumbnail.element.js +39 -95
- package/dist/components/symbol-file-thumbnail/symbol-file-thumbnail.element.js.map +1 -1
- package/dist/components/symbol-file-thumbnail/symbol-file-thumbnail.js +5 -5
- package/dist/components/symbol-file-thumbnail/symbol-file-thumbnail.js.map +1 -1
- package/dist/components/symbol-folder/symbol-folder.d.ts +0 -1
- package/dist/components/symbol-folder/symbol-folder.element.js +17 -14
- package/dist/components/symbol-folder/symbol-folder.element.js.map +1 -1
- package/dist/components/symbol-folder/symbol-folder.js +5 -5
- package/dist/components/symbol-folder/symbol-folder.js.map +1 -1
- package/dist/components/symbol-lock/symbol-lock.d.ts +0 -1
- package/dist/components/symbol-lock/symbol-lock.element.js +26 -30
- package/dist/components/symbol-lock/symbol-lock.element.js.map +1 -1
- package/dist/components/symbol-lock/symbol-lock.js +5 -5
- package/dist/components/symbol-lock/symbol-lock.js.map +1 -1
- package/dist/components/symbol-more/symbol-more.d.ts +0 -1
- package/dist/components/symbol-more/symbol-more.element.js +17 -14
- package/dist/components/symbol-more/symbol-more.element.js.map +1 -1
- package/dist/components/symbol-more/symbol-more.js +5 -5
- package/dist/components/symbol-more/symbol-more.js.map +1 -1
- package/dist/components/symbol-sort/symbol-sort.d.ts +0 -1
- package/dist/components/symbol-sort/symbol-sort.element.js +29 -31
- package/dist/components/symbol-sort/symbol-sort.element.js.map +1 -1
- package/dist/components/symbol-sort/symbol-sort.js +5 -5
- package/dist/components/symbol-sort/symbol-sort.js.map +1 -1
- package/dist/components/table/table-cell.element.js +65 -71
- package/dist/components/table/table-cell.element.js.map +1 -1
- package/dist/components/table/table-column.element.js +14 -10
- package/dist/components/table/table-column.element.js.map +1 -1
- package/dist/components/table/table-head-cell.element.js +19 -16
- package/dist/components/table/table-head-cell.element.js.map +1 -1
- package/dist/components/table/table-head.element.js +23 -18
- package/dist/components/table/table-head.element.js.map +1 -1
- package/dist/components/table/table-row.element.js +41 -52
- package/dist/components/table/table-row.element.js.map +1 -1
- package/dist/components/table/table.d.ts +0 -1
- package/dist/components/table/table.element.js +31 -20
- package/dist/components/table/table.element.js.map +1 -1
- package/dist/components/table/table.js +5 -10
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/tabs/UUITabEvent.js +6 -6
- package/dist/components/tabs/UUITabEvent.js.map +1 -1
- package/dist/components/tabs/UUITabGroupEvent.js +6 -6
- package/dist/components/tabs/UUITabGroupEvent.js.map +1 -1
- package/dist/components/tabs/tab-group.element.js +188 -251
- package/dist/components/tabs/tab-group.element.js.map +1 -1
- package/dist/components/tabs/tab.element.js +66 -56
- package/dist/components/tabs/tab.element.js.map +1 -1
- package/dist/components/tabs/tabs.d.ts +0 -1
- package/dist/components/tabs/tabs.js +7 -6
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tag/tag.d.ts +0 -1
- package/dist/components/tag/tag.element.js +32 -34
- package/dist/components/tag/tag.element.js.map +1 -1
- package/dist/components/tag/tag.js +5 -5
- package/dist/components/tag/tag.js.map +1 -1
- package/dist/components/textarea/UUITextareaEvent.js +18 -14
- package/dist/components/textarea/UUITextareaEvent.js.map +1 -1
- package/dist/components/textarea/textarea.d.ts +0 -1
- package/dist/components/textarea/textarea.element.d.ts +2 -0
- package/dist/components/textarea/textarea.element.js +153 -180
- package/dist/components/textarea/textarea.element.js.map +1 -1
- package/dist/components/textarea/textarea.js +6 -7
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/components/toast-notification/UUIToastNotificationEvent.js +18 -10
- package/dist/components/toast-notification/UUIToastNotificationEvent.js.map +1 -1
- package/dist/components/toast-notification/toast-notification.d.ts +0 -1
- package/dist/components/toast-notification/toast-notification.element.js +155 -224
- package/dist/components/toast-notification/toast-notification.element.js.map +1 -1
- package/dist/components/toast-notification/toast-notification.js +6 -7
- package/dist/components/toast-notification/toast-notification.js.map +1 -1
- package/dist/components/toast-notification-container/toast-notification-container.d.ts +0 -1
- package/dist/components/toast-notification-container/toast-notification-container.element.js +98 -122
- package/dist/components/toast-notification-container/toast-notification-container.element.js.map +1 -1
- package/dist/components/toast-notification-container/toast-notification-container.js +6 -9
- package/dist/components/toast-notification-container/toast-notification-container.js.map +1 -1
- package/dist/components/toast-notification-layout/toast-notification-layout.d.ts +0 -1
- package/dist/components/toast-notification-layout/toast-notification-layout.element.js +33 -39
- package/dist/components/toast-notification-layout/toast-notification-layout.element.js.map +1 -1
- package/dist/components/toast-notification-layout/toast-notification-layout.js +6 -9
- package/dist/components/toast-notification-layout/toast-notification-layout.js.map +1 -1
- package/dist/components/toggle/toggle.d.ts +0 -1
- package/dist/components/toggle/toggle.element.js +43 -54
- package/dist/components/toggle/toggle.element.js.map +1 -1
- package/dist/components/toggle/toggle.js +5 -5
- package/dist/components/toggle/toggle.js.map +1 -1
- package/dist/components/visually-hidden/visually-hidden.d.ts +0 -1
- package/dist/components/visually-hidden/visually-hidden.element.js +17 -14
- package/dist/components/visually-hidden/visually-hidden.element.js.map +1 -1
- package/dist/components/visually-hidden/visually-hidden.js +5 -5
- package/dist/components/visually-hidden/visually-hidden.js.map +1 -1
- package/dist/index.js +115 -359
- package/dist/internal/animations/uui-blink.js +7 -7
- package/dist/internal/animations/uui-blink.js.map +1 -1
- package/dist/internal/animations/uui-pulse.js +7 -9
- package/dist/internal/animations/uui-pulse.js.map +1 -1
- package/dist/internal/animations/uui-shake.js +7 -9
- package/dist/internal/animations/uui-shake.js.map +1 -1
- package/dist/internal/events/UUIEvent.js +13 -9
- package/dist/internal/events/UUIEvent.js.map +1 -1
- package/dist/internal/events/UUIFormControlEvent.d.ts +2 -2
- package/dist/internal/events/UUIFormControlEvent.js +18 -14
- package/dist/internal/events/UUIFormControlEvent.js.map +1 -1
- package/dist/internal/events/UUISelectableEvent.js +19 -15
- package/dist/internal/events/UUISelectableEvent.js.map +1 -1
- package/dist/internal/mixins/ActiveMixin.js +24 -24
- package/dist/internal/mixins/ActiveMixin.js.map +1 -1
- package/dist/internal/mixins/FormControlMixin.d.ts +3 -3
- package/dist/internal/mixins/FormControlMixin.js +276 -339
- package/dist/internal/mixins/FormControlMixin.js.map +1 -1
- package/dist/internal/mixins/FormControlWithBasicsMixin.d.ts +19 -3
- package/dist/internal/mixins/FormControlWithBasicsMixin.js +54 -60
- package/dist/internal/mixins/FormControlWithBasicsMixin.js.map +1 -1
- package/dist/internal/mixins/LabelMixin.js +54 -57
- package/dist/internal/mixins/LabelMixin.js.map +1 -1
- package/dist/internal/mixins/PopoverTargetMixin.js +43 -47
- package/dist/internal/mixins/PopoverTargetMixin.js.map +1 -1
- package/dist/internal/mixins/SelectOnlyMixin.js +39 -33
- package/dist/internal/mixins/SelectOnlyMixin.js.map +1 -1
- package/dist/internal/mixins/SelectableMixin.js +109 -121
- package/dist/internal/mixins/SelectableMixin.js.map +1 -1
- package/dist/internal/registration/index.js +17 -20
- package/dist/internal/registration/index.js.map +1 -1
- package/dist/internal/types/InterfaceColor.js +11 -10
- package/dist/internal/types/InterfaceColor.js.map +1 -1
- package/dist/internal/types/InterfaceHeading.js +12 -11
- package/dist/internal/types/InterfaceHeading.js.map +1 -1
- package/dist/internal/types/InterfaceLook.js +11 -10
- package/dist/internal/types/InterfaceLook.js.map +1 -1
- package/dist/internal/utils/Timer.js +56 -61
- package/dist/internal/utils/Timer.js.map +1 -1
- package/dist/internal/utils/color.js +105 -74
- package/dist/internal/utils/color.js.map +1 -1
- package/dist/internal/utils/drag.js +27 -36
- package/dist/internal/utils/drag.js.map +1 -1
- package/dist/internal/utils/findAncestorByAttributeValue.js +22 -19
- package/dist/internal/utils/findAncestorByAttributeValue.js.map +1 -1
- package/dist/internal/utils/math.js +23 -13
- package/dist/internal/utils/math.js.map +1 -1
- package/dist/internal/utils/slotHasContent.js +6 -5
- package/dist/internal/utils/slotHasContent.js.map +1 -1
- package/dist/internal/version.js +10 -16
- package/dist/internal/version.js.map +1 -1
- package/dist/package.json.js +6 -5
- package/dist/package.json.js.map +1 -1
- package/dist/styles/uui-font.css +1 -1
- package/dist/styles/uui-text.css +1 -1
- package/dist/styles/uui-text.css.js +6 -5
- package/dist/styles/uui-text.css.js.map +1 -1
- package/dist/styles/uui-text.styles.js +7 -6
- package/dist/styles/uui-text.styles.js.map +1 -1
- package/dist/themes/dark.css +1 -1
- package/dist/themes/high-contrast.css +1 -1
- package/dist/themes/light.css +1 -1
- package/package.json +26 -25
- package/vscode.html-custom-data.json +36 -7
- package/dist/index.js.map +0 -1
|
@@ -1,232 +1,200 @@
|
|
|
1
|
-
import
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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';\
|
|
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"}
|