@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.
- 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 +23 -19
- 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 +19 -18
- package/vscode.html-custom-data.json +36 -7
- package/dist/index.js.map +0 -1
|
@@ -1,73 +1,171 @@
|
|
|
1
|
-
|
|
2
|
-
throw TypeError(msg);
|
|
3
|
-
};
|
|
4
|
-
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
5
|
-
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
6
|
-
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
7
|
-
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
8
|
-
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
9
|
-
var _childElements, _hiddenElements, _clonedElements, _hiddenElementsMap, _visibilityBreakpoints, _resizeObserver, _childResizeObservers, _breakPointCalculationInProgress, _isConnected, _UUIResponsiveContainerElement_instances, initialize_fn, onResize_fn, onSlotChange_fn, cleanup_fn, calculateBreakPoints_fn, updateCollapsibleItems_fn, hideElement_fn, collapseFromEnd_fn, collapseFromStart_fn, _onItemClicked, onPopoverToggle_fn, buildDropdownItems_fn;
|
|
10
|
-
import { LitElement, html, css } from "lit";
|
|
11
|
-
import { query, property, queryAssignedElements } from "lit/decorators.js";
|
|
12
|
-
import { repeat } from "lit/directives/repeat.js";
|
|
1
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
|
|
13
2
|
import "../button/button.js";
|
|
14
3
|
import "../popover-container/popover-container.js";
|
|
15
4
|
import "../symbol-more/symbol-more.js";
|
|
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
|
-
|
|
5
|
+
import { LitElement, css, html } from "lit";
|
|
6
|
+
import { property, query, queryAssignedElements } from "lit/decorators.js";
|
|
7
|
+
import { repeat } from "lit/directives/repeat.js";
|
|
8
|
+
//#region src/components/responsive-container/responsive-container.element.ts
|
|
9
|
+
/**
|
|
10
|
+
* A responsive container that collapses overflowing children into a dropdown.
|
|
11
|
+
*
|
|
12
|
+
* @element uui-responsive-container
|
|
13
|
+
* @slot - Default slot for child elements (buttons, etc.)
|
|
14
|
+
* @cssprop --uui-responsive-container-gap - Gap between items (default: 8px)
|
|
15
|
+
*/
|
|
16
|
+
var UUIResponsiveContainerElement = class extends LitElement {
|
|
17
|
+
constructor(..._args) {
|
|
18
|
+
super(..._args);
|
|
19
|
+
this.collapse = "end";
|
|
20
|
+
this.#childElements = [];
|
|
21
|
+
this.#hiddenElements = [];
|
|
22
|
+
this.#clonedElements = [];
|
|
23
|
+
this.#hiddenElementsMap = /* @__PURE__ */ new Map();
|
|
24
|
+
this.#visibilityBreakpoints = [];
|
|
25
|
+
this.#resizeObserver = new ResizeObserver(this.#onResize.bind(this));
|
|
26
|
+
this.#childResizeObservers = [];
|
|
27
|
+
this.#breakPointCalculationInProgress = false;
|
|
28
|
+
this.#isConnected = false;
|
|
29
|
+
this.#onItemClicked = (e) => {
|
|
30
|
+
const clickedElement = e.currentTarget;
|
|
31
|
+
const originalElement = this.#hiddenElementsMap.get(clickedElement);
|
|
32
|
+
if (originalElement) {
|
|
33
|
+
this._popoverContainerElement?.hidePopover();
|
|
34
|
+
originalElement.click();
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
#childElements;
|
|
39
|
+
#hiddenElements;
|
|
40
|
+
#clonedElements;
|
|
41
|
+
#hiddenElementsMap;
|
|
42
|
+
#visibilityBreakpoints;
|
|
43
|
+
#resizeObserver;
|
|
44
|
+
#childResizeObservers;
|
|
45
|
+
#breakPointCalculationInProgress;
|
|
46
|
+
#isConnected;
|
|
47
|
+
connectedCallback() {
|
|
48
|
+
super.connectedCallback();
|
|
49
|
+
this.#isConnected = true;
|
|
50
|
+
this.#initialize();
|
|
51
|
+
}
|
|
52
|
+
disconnectedCallback() {
|
|
53
|
+
super.disconnectedCallback();
|
|
54
|
+
this.#isConnected = false;
|
|
55
|
+
this.#resizeObserver.disconnect();
|
|
56
|
+
this.#cleanup();
|
|
57
|
+
}
|
|
58
|
+
async #initialize() {
|
|
59
|
+
await this.updateComplete;
|
|
60
|
+
if (!this.#isConnected) return;
|
|
61
|
+
this.#resizeObserver.observe(this);
|
|
62
|
+
requestAnimationFrame(() => {
|
|
63
|
+
if (!this.#isConnected) return;
|
|
64
|
+
this.#onSlotChange();
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
#onResize(entries) {
|
|
68
|
+
if (!this.#isConnected) return;
|
|
69
|
+
const newWidth = entries[0].contentBoxSize[0].inlineSize;
|
|
70
|
+
this.#updateCollapsibleItems(newWidth);
|
|
71
|
+
}
|
|
72
|
+
#onSlotChange() {
|
|
73
|
+
if (!this.#isConnected) return;
|
|
74
|
+
this.#cleanup();
|
|
75
|
+
this.#childElements = this._slottedNodes ? [...this._slottedNodes] : [];
|
|
76
|
+
this.#childElements.forEach((el) => {
|
|
77
|
+
const observer = new ResizeObserver(this.#calculateBreakPoints.bind(this));
|
|
78
|
+
observer.observe(el);
|
|
79
|
+
this.#childResizeObservers.push(observer);
|
|
80
|
+
});
|
|
81
|
+
this.#calculateBreakPoints();
|
|
82
|
+
}
|
|
83
|
+
#cleanup() {
|
|
84
|
+
this.#childResizeObservers.forEach((observer) => observer.disconnect());
|
|
85
|
+
this.#childResizeObservers = [];
|
|
86
|
+
this.#visibilityBreakpoints = [];
|
|
87
|
+
this.#clonedElements.forEach((el) => {
|
|
88
|
+
el.removeEventListener("click", this.#onItemClicked);
|
|
89
|
+
});
|
|
90
|
+
this.#clonedElements = [];
|
|
91
|
+
this.#hiddenElements = [];
|
|
92
|
+
this.#hiddenElementsMap.clear();
|
|
93
|
+
}
|
|
94
|
+
async #calculateBreakPoints() {
|
|
95
|
+
if (!this.#isConnected) return;
|
|
96
|
+
if (this.#breakPointCalculationInProgress) return;
|
|
97
|
+
this.#breakPointCalculationInProgress = true;
|
|
98
|
+
await this.updateComplete;
|
|
99
|
+
const gapCSSVar = Number.parseFloat(getComputedStyle(this).getPropertyValue("--uui-responsive-container-gap"));
|
|
100
|
+
const gap = Number.isNaN(gapCSSVar) ? 8 : gapCSSVar;
|
|
101
|
+
let totalWidth = 0;
|
|
102
|
+
for (let i = 0; i < this.#childElements.length; i++) {
|
|
103
|
+
this.#childElements[i].style.display = "";
|
|
104
|
+
totalWidth += this.#childElements[i].offsetWidth;
|
|
105
|
+
this.#visibilityBreakpoints[i] = totalWidth;
|
|
106
|
+
totalWidth += gap;
|
|
107
|
+
}
|
|
108
|
+
const tolerance = 2;
|
|
109
|
+
this._mainElement.style.width = totalWidth - gap + tolerance + "px";
|
|
110
|
+
this.#updateCollapsibleItems(this.offsetWidth);
|
|
111
|
+
this.#breakPointCalculationInProgress = false;
|
|
112
|
+
}
|
|
113
|
+
#updateCollapsibleItems(containerWidth) {
|
|
114
|
+
const availableWidth = containerWidth - (this._moreButtonElement?.offsetWidth || 40);
|
|
115
|
+
this.#hiddenElements = [];
|
|
116
|
+
this.#clonedElements.forEach((el) => el.removeEventListener("click", this.#onItemClicked));
|
|
117
|
+
this.#clonedElements = [];
|
|
118
|
+
this._popoverContainerElement?.hidePopover();
|
|
119
|
+
this.#hiddenElementsMap.clear();
|
|
120
|
+
if (this.collapse === "end") this.#collapseFromEnd(containerWidth, availableWidth);
|
|
121
|
+
else this.#collapseFromStart(containerWidth, availableWidth);
|
|
122
|
+
if (this.#hiddenElements.length === 0) {
|
|
123
|
+
this._moreButtonElement.style.display = "none";
|
|
124
|
+
this._popoverContainerElement?.hidePopover();
|
|
125
|
+
} else this._moreButtonElement.style.display = "";
|
|
126
|
+
this.requestUpdate();
|
|
127
|
+
}
|
|
128
|
+
#hideElement(element) {
|
|
129
|
+
element.style.display = "none";
|
|
130
|
+
this.#hiddenElements.push(element);
|
|
131
|
+
}
|
|
132
|
+
#collapseFromEnd(containerWidth, availableWidth) {
|
|
133
|
+
const len = this.#visibilityBreakpoints.length;
|
|
134
|
+
for (let i = 0; i < len; i++) {
|
|
135
|
+
const breakpoint = this.#visibilityBreakpoints[i];
|
|
136
|
+
const element = this.#childElements[i];
|
|
137
|
+
if (breakpoint <= (i === len - 1 ? containerWidth : availableWidth)) element.style.display = "";
|
|
138
|
+
else this.#hideElement(element);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
#collapseFromStart(containerWidth, availableWidth) {
|
|
142
|
+
const len = this.#visibilityBreakpoints.length;
|
|
143
|
+
const totalWidth = this.#visibilityBreakpoints[len - 1] || 0;
|
|
144
|
+
for (let i = 0; i < len; i++) {
|
|
145
|
+
const element = this.#childElements[i];
|
|
146
|
+
if (totalWidth - (i > 0 ? this.#visibilityBreakpoints[i - 1] : 0) <= ((i === 0 || this.#childElements[i - 1].style.display === "none") && this.#hiddenElements.length === 0 ? containerWidth : availableWidth)) element.style.display = "";
|
|
147
|
+
else this.#hideElement(element);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
#onItemClicked;
|
|
151
|
+
#onPopoverToggle(e) {
|
|
152
|
+
if (e.newState === "open") this.#buildDropdownItems();
|
|
153
|
+
}
|
|
154
|
+
#buildDropdownItems() {
|
|
155
|
+
this.#clonedElements.forEach((el) => el.removeEventListener("click", this.#onItemClicked));
|
|
156
|
+
this.#clonedElements = [];
|
|
157
|
+
this.#hiddenElementsMap.clear();
|
|
158
|
+
for (const original of this.#hiddenElements) {
|
|
159
|
+
const clone = original.cloneNode(true);
|
|
160
|
+
clone.style.display = "";
|
|
161
|
+
clone.addEventListener("click", this.#onItemClicked);
|
|
162
|
+
this.#hiddenElementsMap.set(clone, original);
|
|
163
|
+
this.#clonedElements.push(clone);
|
|
164
|
+
}
|
|
165
|
+
this.requestUpdate();
|
|
166
|
+
}
|
|
167
|
+
render() {
|
|
168
|
+
const moreButton = html`
|
|
71
169
|
<uui-button
|
|
72
170
|
popovertarget="popover-container"
|
|
73
171
|
style="display: none"
|
|
@@ -79,176 +177,27 @@ const _UUIResponsiveContainerElement = class _UUIResponsiveContainerElement exte
|
|
|
79
177
|
</slot>
|
|
80
178
|
</uui-button>
|
|
81
179
|
`;
|
|
82
|
-
|
|
180
|
+
return html`
|
|
83
181
|
<div id="main">
|
|
84
182
|
${this.collapse === "start" ? moreButton : ""}
|
|
85
183
|
<div id="items-container">
|
|
86
|
-
<slot @slotchange=${
|
|
184
|
+
<slot @slotchange=${this.#onSlotChange}></slot>
|
|
87
185
|
</div>
|
|
88
186
|
${this.collapse === "end" ? moreButton : ""}
|
|
89
187
|
</div>
|
|
90
188
|
<uui-popover-container
|
|
91
189
|
id="popover-container"
|
|
92
190
|
popover
|
|
93
|
-
@beforetoggle=${
|
|
191
|
+
@beforetoggle=${this.#onPopoverToggle}
|
|
94
192
|
placement=${this.collapse === "start" ? "bottom-start" : "bottom-end"}>
|
|
95
193
|
<div id="dropdown-container">
|
|
96
|
-
${repeat(
|
|
194
|
+
${repeat(this.#clonedElements, (el) => html`${el}`)}
|
|
97
195
|
</div>
|
|
98
196
|
</uui-popover-container>
|
|
99
197
|
`;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
_hiddenElements = new WeakMap();
|
|
104
|
-
_clonedElements = new WeakMap();
|
|
105
|
-
_hiddenElementsMap = new WeakMap();
|
|
106
|
-
_visibilityBreakpoints = new WeakMap();
|
|
107
|
-
_resizeObserver = new WeakMap();
|
|
108
|
-
_childResizeObservers = new WeakMap();
|
|
109
|
-
_breakPointCalculationInProgress = new WeakMap();
|
|
110
|
-
_isConnected = new WeakMap();
|
|
111
|
-
_UUIResponsiveContainerElement_instances = new WeakSet();
|
|
112
|
-
initialize_fn = async function() {
|
|
113
|
-
await this.updateComplete;
|
|
114
|
-
if (!__privateGet(this, _isConnected)) return;
|
|
115
|
-
__privateGet(this, _resizeObserver).observe(this);
|
|
116
|
-
requestAnimationFrame(() => {
|
|
117
|
-
if (!__privateGet(this, _isConnected)) return;
|
|
118
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, onSlotChange_fn).call(this);
|
|
119
|
-
});
|
|
120
|
-
};
|
|
121
|
-
// This runs when the container size changes
|
|
122
|
-
onResize_fn = function(entries) {
|
|
123
|
-
if (!__privateGet(this, _isConnected)) return;
|
|
124
|
-
const newWidth = entries[0].contentBoxSize[0].inlineSize;
|
|
125
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, updateCollapsibleItems_fn).call(this, newWidth);
|
|
126
|
-
};
|
|
127
|
-
// This runs when children are added/removed
|
|
128
|
-
onSlotChange_fn = function() {
|
|
129
|
-
if (!__privateGet(this, _isConnected)) return;
|
|
130
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, cleanup_fn).call(this);
|
|
131
|
-
__privateSet(this, _childElements, this._slottedNodes ? [...this._slottedNodes] : []);
|
|
132
|
-
__privateGet(this, _childElements).forEach((el) => {
|
|
133
|
-
const observer = new ResizeObserver(
|
|
134
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, calculateBreakPoints_fn).bind(this)
|
|
135
|
-
);
|
|
136
|
-
observer.observe(el);
|
|
137
|
-
__privateGet(this, _childResizeObservers).push(observer);
|
|
138
|
-
});
|
|
139
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, calculateBreakPoints_fn).call(this);
|
|
140
|
-
};
|
|
141
|
-
cleanup_fn = function() {
|
|
142
|
-
__privateGet(this, _childResizeObservers).forEach((observer) => observer.disconnect());
|
|
143
|
-
__privateSet(this, _childResizeObservers, []);
|
|
144
|
-
__privateSet(this, _visibilityBreakpoints, []);
|
|
145
|
-
__privateGet(this, _clonedElements).forEach((el) => {
|
|
146
|
-
el.removeEventListener("click", __privateGet(this, _onItemClicked));
|
|
147
|
-
});
|
|
148
|
-
__privateSet(this, _clonedElements, []);
|
|
149
|
-
__privateSet(this, _hiddenElements, []);
|
|
150
|
-
__privateGet(this, _hiddenElementsMap).clear();
|
|
151
|
-
};
|
|
152
|
-
calculateBreakPoints_fn = async function() {
|
|
153
|
-
if (!__privateGet(this, _isConnected)) return;
|
|
154
|
-
if (__privateGet(this, _breakPointCalculationInProgress)) return;
|
|
155
|
-
__privateSet(this, _breakPointCalculationInProgress, true);
|
|
156
|
-
await this.updateComplete;
|
|
157
|
-
const gapCSSVar = Number.parseFloat(
|
|
158
|
-
getComputedStyle(this).getPropertyValue("--uui-responsive-container-gap")
|
|
159
|
-
);
|
|
160
|
-
const gap = Number.isNaN(gapCSSVar) ? 8 : gapCSSVar;
|
|
161
|
-
let totalWidth = 0;
|
|
162
|
-
for (let i = 0; i < __privateGet(this, _childElements).length; i++) {
|
|
163
|
-
__privateGet(this, _childElements)[i].style.display = "";
|
|
164
|
-
totalWidth += __privateGet(this, _childElements)[i].offsetWidth;
|
|
165
|
-
__privateGet(this, _visibilityBreakpoints)[i] = totalWidth;
|
|
166
|
-
totalWidth += gap;
|
|
167
|
-
}
|
|
168
|
-
const tolerance = 2;
|
|
169
|
-
this._mainElement.style.width = totalWidth - gap + tolerance + "px";
|
|
170
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, updateCollapsibleItems_fn).call(this, this.offsetWidth);
|
|
171
|
-
__privateSet(this, _breakPointCalculationInProgress, false);
|
|
172
|
-
};
|
|
173
|
-
// The main logic that shows/hides items
|
|
174
|
-
updateCollapsibleItems_fn = function(containerWidth) {
|
|
175
|
-
const moreButtonWidth = this._moreButtonElement?.offsetWidth || 40;
|
|
176
|
-
const availableWidth = containerWidth - moreButtonWidth;
|
|
177
|
-
__privateSet(this, _hiddenElements, []);
|
|
178
|
-
__privateGet(this, _clonedElements).forEach(
|
|
179
|
-
(el) => el.removeEventListener("click", __privateGet(this, _onItemClicked))
|
|
180
|
-
);
|
|
181
|
-
__privateSet(this, _clonedElements, []);
|
|
182
|
-
this._popoverContainerElement?.hidePopover();
|
|
183
|
-
__privateGet(this, _hiddenElementsMap).clear();
|
|
184
|
-
if (this.collapse === "end") {
|
|
185
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, collapseFromEnd_fn).call(this, containerWidth, availableWidth);
|
|
186
|
-
} else {
|
|
187
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, collapseFromStart_fn).call(this, containerWidth, availableWidth);
|
|
188
|
-
}
|
|
189
|
-
if (__privateGet(this, _hiddenElements).length === 0) {
|
|
190
|
-
this._moreButtonElement.style.display = "none";
|
|
191
|
-
this._popoverContainerElement?.hidePopover();
|
|
192
|
-
} else {
|
|
193
|
-
this._moreButtonElement.style.display = "";
|
|
194
|
-
}
|
|
195
|
-
this.requestUpdate();
|
|
196
|
-
};
|
|
197
|
-
hideElement_fn = function(element) {
|
|
198
|
-
element.style.display = "none";
|
|
199
|
-
__privateGet(this, _hiddenElements).push(element);
|
|
200
|
-
};
|
|
201
|
-
collapseFromEnd_fn = function(containerWidth, availableWidth) {
|
|
202
|
-
const len = __privateGet(this, _visibilityBreakpoints).length;
|
|
203
|
-
for (let i = 0; i < len; i++) {
|
|
204
|
-
const breakpoint = __privateGet(this, _visibilityBreakpoints)[i];
|
|
205
|
-
const element = __privateGet(this, _childElements)[i];
|
|
206
|
-
const widthToCheck = i === len - 1 ? containerWidth : availableWidth;
|
|
207
|
-
if (breakpoint <= widthToCheck) {
|
|
208
|
-
element.style.display = "";
|
|
209
|
-
} else {
|
|
210
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, hideElement_fn).call(this, element);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
};
|
|
214
|
-
collapseFromStart_fn = function(containerWidth, availableWidth) {
|
|
215
|
-
const len = __privateGet(this, _visibilityBreakpoints).length;
|
|
216
|
-
const totalWidth = __privateGet(this, _visibilityBreakpoints)[len - 1] || 0;
|
|
217
|
-
for (let i = 0; i < len; i++) {
|
|
218
|
-
const element = __privateGet(this, _childElements)[i];
|
|
219
|
-
const widthFromEnd = totalWidth - (i > 0 ? __privateGet(this, _visibilityBreakpoints)[i - 1] : 0);
|
|
220
|
-
const isFirstPotentiallyVisible = i === 0 || __privateGet(this, _childElements)[i - 1].style.display === "none";
|
|
221
|
-
const widthToCheck = isFirstPotentiallyVisible && __privateGet(this, _hiddenElements).length === 0 ? containerWidth : availableWidth;
|
|
222
|
-
if (widthFromEnd <= widthToCheck) {
|
|
223
|
-
element.style.display = "";
|
|
224
|
-
} else {
|
|
225
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, hideElement_fn).call(this, element);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
_onItemClicked = new WeakMap();
|
|
230
|
-
onPopoverToggle_fn = function(e) {
|
|
231
|
-
if (e.newState === "open") {
|
|
232
|
-
__privateMethod(this, _UUIResponsiveContainerElement_instances, buildDropdownItems_fn).call(this);
|
|
233
|
-
}
|
|
234
|
-
};
|
|
235
|
-
buildDropdownItems_fn = function() {
|
|
236
|
-
__privateGet(this, _clonedElements).forEach(
|
|
237
|
-
(el) => el.removeEventListener("click", __privateGet(this, _onItemClicked))
|
|
238
|
-
);
|
|
239
|
-
__privateSet(this, _clonedElements, []);
|
|
240
|
-
__privateGet(this, _hiddenElementsMap).clear();
|
|
241
|
-
for (const original of __privateGet(this, _hiddenElements)) {
|
|
242
|
-
const clone = original.cloneNode(true);
|
|
243
|
-
clone.style.display = "";
|
|
244
|
-
clone.addEventListener("click", __privateGet(this, _onItemClicked));
|
|
245
|
-
__privateGet(this, _hiddenElementsMap).set(clone, original);
|
|
246
|
-
__privateGet(this, _clonedElements).push(clone);
|
|
247
|
-
}
|
|
248
|
-
this.requestUpdate();
|
|
249
|
-
};
|
|
250
|
-
_UUIResponsiveContainerElement.styles = [
|
|
251
|
-
css`
|
|
198
|
+
}
|
|
199
|
+
static {
|
|
200
|
+
this.styles = [css`
|
|
252
201
|
:host {
|
|
253
202
|
display: flex;
|
|
254
203
|
min-width: 0;
|
|
@@ -292,25 +241,18 @@ _UUIResponsiveContainerElement.styles = [
|
|
|
292
241
|
padding: var(--uui-size-space-2);
|
|
293
242
|
gap: var(--uui-size-space-1);
|
|
294
243
|
}
|
|
295
|
-
`
|
|
296
|
-
|
|
297
|
-
let UUIResponsiveContainerElement = _UUIResponsiveContainerElement;
|
|
298
|
-
__decorateClass([
|
|
299
|
-
query("#more-button")
|
|
300
|
-
], UUIResponsiveContainerElement.prototype, "_moreButtonElement");
|
|
301
|
-
__decorateClass([
|
|
302
|
-
query("#popover-container")
|
|
303
|
-
], UUIResponsiveContainerElement.prototype, "_popoverContainerElement");
|
|
304
|
-
__decorateClass([
|
|
305
|
-
query("#main")
|
|
306
|
-
], UUIResponsiveContainerElement.prototype, "_mainElement");
|
|
307
|
-
__decorateClass([
|
|
308
|
-
property({ type: String, reflect: true })
|
|
309
|
-
], UUIResponsiveContainerElement.prototype, "collapse");
|
|
310
|
-
__decorateClass([
|
|
311
|
-
queryAssignedElements({ flatten: true })
|
|
312
|
-
], UUIResponsiveContainerElement.prototype, "_slottedNodes");
|
|
313
|
-
export {
|
|
314
|
-
UUIResponsiveContainerElement
|
|
244
|
+
`];
|
|
245
|
+
}
|
|
315
246
|
};
|
|
316
|
-
|
|
247
|
+
__decorate([query("#more-button")], UUIResponsiveContainerElement.prototype, "_moreButtonElement", void 0);
|
|
248
|
+
__decorate([query("#popover-container")], UUIResponsiveContainerElement.prototype, "_popoverContainerElement", void 0);
|
|
249
|
+
__decorate([query("#main")], UUIResponsiveContainerElement.prototype, "_mainElement", void 0);
|
|
250
|
+
__decorate([property({
|
|
251
|
+
type: String,
|
|
252
|
+
reflect: true
|
|
253
|
+
})], UUIResponsiveContainerElement.prototype, "collapse", void 0);
|
|
254
|
+
__decorate([queryAssignedElements({ flatten: true })], UUIResponsiveContainerElement.prototype, "_slottedNodes", void 0);
|
|
255
|
+
//#endregion
|
|
256
|
+
export { UUIResponsiveContainerElement };
|
|
257
|
+
|
|
258
|
+
//# sourceMappingURL=responsive-container.element.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responsive-container.element.js","sources":["../../../src/components/responsive-container/responsive-container.element.ts"],"sourcesContent":["import type { UUIButtonElement } from '../button/button.js';\nimport type { UUIPopoverContainerElement } from '../popover-container/popover-container.js';\nimport { css, html, LitElement } from 'lit';\nimport { property, query, queryAssignedElements } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\n\nimport '../button/button.js';\nimport '../popover-container/popover-container.js';\nimport '../symbol-more/symbol-more.js';\n\n/**\n * A responsive container that collapses overflowing children into a dropdown.\n *\n * @element uui-responsive-container\n * @slot - Default slot for child elements (buttons, etc.)\n * @cssprop --uui-responsive-container-gap - Gap between items (default: 8px)\n */\nexport class UUIResponsiveContainerElement extends LitElement {\n // These help us find elements inside the component\n @query('#more-button')\n private readonly _moreButtonElement!: UUIButtonElement;\n\n @query('#popover-container')\n private readonly _popoverContainerElement!: UUIPopoverContainerElement;\n\n @query('#main')\n private readonly _mainElement!: HTMLElement;\n\n /**\n * Controls which side items collapse from.\n * - \"end\": Items collapse from the right, more button appears on right (default)\n * - \"start\": Items collapse from the left, more button appears on left\n * @attr collapse\n * @default \"end\"\n */\n @property({ type: String, reflect: true })\n collapse: 'start' | 'end' = 'end';\n\n // This gets all elements put inside the slot\n @queryAssignedElements({ flatten: true })\n private readonly _slottedNodes?: HTMLElement[];\n\n // These store the component's internal state\n #childElements: HTMLElement[] = []; // All child elements\n #hiddenElements: HTMLElement[] = []; // Elements in the dropdown\n #clonedElements: HTMLElement[] = []; // Clones of hidden elements for the dropdown\n readonly #hiddenElementsMap: Map<HTMLElement, HTMLElement> = new Map();\n #visibilityBreakpoints: number[] = []; // Width thresholds for each item\n\n // ResizeObserver watches for size changes\n readonly #resizeObserver = new ResizeObserver(this.#onResize.bind(this));\n #childResizeObservers: ResizeObserver[] = [];\n #breakPointCalculationInProgress = false;\n\n #isConnected = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.#isConnected = true;\n this.#initialize();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#isConnected = false;\n this.#resizeObserver.disconnect();\n this.#cleanup();\n }\n\n async #initialize() {\n await this.updateComplete;\n if (!this.#isConnected) return;\n this.#resizeObserver.observe(this);\n\n requestAnimationFrame(() => {\n if (!this.#isConnected) return;\n this.#onSlotChange();\n });\n }\n\n // This runs when the container size changes\n #onResize(entries: ResizeObserverEntry[]) {\n if (!this.#isConnected) return;\n const newWidth = entries[0].contentBoxSize[0].inlineSize;\n this.#updateCollapsibleItems(newWidth);\n }\n\n // This runs when children are added/removed\n #onSlotChange() {\n if (!this.#isConnected) return;\n\n this.#cleanup();\n this.#childElements = this._slottedNodes ? [...this._slottedNodes] : [];\n\n this.#childElements.forEach(el => {\n const observer = new ResizeObserver(\n this.#calculateBreakPoints.bind(this),\n );\n observer.observe(el);\n this.#childResizeObservers.push(observer);\n });\n\n this.#calculateBreakPoints();\n }\n\n #cleanup() {\n this.#childResizeObservers.forEach(observer => observer.disconnect());\n this.#childResizeObservers = [];\n this.#visibilityBreakpoints = [];\n\n // Clean up hidden elements\n this.#clonedElements.forEach(el => {\n el.removeEventListener('click', this.#onItemClicked);\n });\n this.#clonedElements = [];\n this.#hiddenElements = [];\n this.#hiddenElementsMap.clear();\n }\n\n // Calculate at what widths items should hide\n async #calculateBreakPoints() {\n if (!this.#isConnected) return;\n if (this.#breakPointCalculationInProgress) return;\n\n this.#breakPointCalculationInProgress = true;\n\n await this.updateComplete;\n\n // Get the gap from CSS or use default\n const gapCSSVar = Number.parseFloat(\n getComputedStyle(this).getPropertyValue('--uui-responsive-container-gap'),\n );\n const gap = Number.isNaN(gapCSSVar) ? 8 : gapCSSVar;\n\n let totalWidth = 0;\n\n // Calculate cumulative width for each item\n for (let i = 0; i < this.#childElements.length; i++) {\n this.#childElements[i].style.display = '';\n totalWidth += this.#childElements[i].offsetWidth;\n this.#visibilityBreakpoints[i] = totalWidth;\n totalWidth += gap;\n }\n\n // Set the container width\n const tolerance = 2;\n this._mainElement.style.width = totalWidth - gap + tolerance + 'px';\n\n this.#updateCollapsibleItems(this.offsetWidth);\n this.#breakPointCalculationInProgress = false;\n }\n\n // The main logic that shows/hides items\n #updateCollapsibleItems(containerWidth: number) {\n const moreButtonWidth = this._moreButtonElement?.offsetWidth || 40;\n const availableWidth = containerWidth - moreButtonWidth;\n\n // Clear previous hidden items\n this.#hiddenElements = [];\n this.#clonedElements.forEach(el =>\n el.removeEventListener('click', this.#onItemClicked),\n );\n this.#clonedElements = [];\n this._popoverContainerElement?.hidePopover();\n this.#hiddenElementsMap.clear();\n\n if (this.collapse === 'end') {\n this.#collapseFromEnd(containerWidth, availableWidth);\n } else {\n this.#collapseFromStart(containerWidth, availableWidth);\n }\n\n // Show/hide the \"more\" button\n if (this.#hiddenElements.length === 0) {\n this._moreButtonElement.style.display = 'none';\n this._popoverContainerElement?.hidePopover();\n } else {\n this._moreButtonElement.style.display = '';\n }\n\n this.requestUpdate();\n }\n\n #hideElement(element: HTMLElement) {\n element.style.display = 'none';\n this.#hiddenElements.push(element);\n }\n\n #collapseFromEnd(containerWidth: number, availableWidth: number) {\n const len = this.#visibilityBreakpoints.length;\n\n for (let i = 0; i < len; i++) {\n const breakpoint = this.#visibilityBreakpoints[i];\n const element = this.#childElements[i];\n\n // Last item: use full width (no more button needed if all fit)\n const widthToCheck = i === len - 1 ? containerWidth : availableWidth;\n\n if (breakpoint <= widthToCheck) {\n element.style.display = '';\n } else {\n this.#hideElement(element);\n }\n }\n }\n\n #collapseFromStart(containerWidth: number, availableWidth: number) {\n const len = this.#visibilityBreakpoints.length;\n const totalWidth = this.#visibilityBreakpoints[len - 1] || 0;\n\n for (let i = 0; i < len; i++) {\n const element = this.#childElements[i];\n // Width from this item to the end\n const widthFromEnd =\n totalWidth - (i > 0 ? this.#visibilityBreakpoints[i - 1] : 0);\n\n // First visible item: use full width (no more button needed if all fit)\n const isFirstPotentiallyVisible =\n i === 0 || this.#childElements[i - 1].style.display === 'none';\n const widthToCheck =\n isFirstPotentiallyVisible && this.#hiddenElements.length === 0\n ? containerWidth\n : availableWidth;\n\n if (widthFromEnd <= widthToCheck) {\n element.style.display = '';\n } else {\n this.#hideElement(element);\n }\n }\n }\n\n readonly #onItemClicked = (e: MouseEvent) => {\n const clickedElement = e.currentTarget as HTMLElement;\n\n // Find the original element linked to this clone\n const originalElement = this.#hiddenElementsMap.get(clickedElement);\n\n if (originalElement) {\n // Close the dropdown\n this._popoverContainerElement?.hidePopover();\n\n // Trigger click on the ORIGINAL element so its event handlers fire\n originalElement.click();\n }\n };\n\n #onPopoverToggle(e: ToggleEvent) {\n if (e.newState === 'open') {\n this.#buildDropdownItems();\n }\n }\n\n #buildDropdownItems() {\n // Clear old clones\n this.#clonedElements.forEach(el =>\n el.removeEventListener('click', this.#onItemClicked),\n );\n this.#clonedElements = [];\n this.#hiddenElementsMap.clear();\n\n for (const original of this.#hiddenElements) {\n const clone = original.cloneNode(true) as HTMLElement;\n clone.style.display = '';\n clone.addEventListener('click', this.#onItemClicked);\n this.#hiddenElementsMap.set(clone, original);\n this.#clonedElements.push(clone);\n }\n this.requestUpdate();\n }\n\n render() {\n const moreButton = html`\n <uui-button\n popovertarget=\"popover-container\"\n style=\"display: none\"\n id=\"more-button\"\n label=\"More\"\n compact>\n <slot name=\"trigger-content\">\n <uui-symbol-more></uui-symbol-more>\n </slot>\n </uui-button>\n `;\n\n return html`\n <div id=\"main\">\n ${this.collapse === 'start' ? moreButton : ''}\n <div id=\"items-container\">\n <slot @slotchange=${this.#onSlotChange}></slot>\n </div>\n ${this.collapse === 'end' ? moreButton : ''}\n </div>\n <uui-popover-container\n id=\"popover-container\"\n popover\n @beforetoggle=${this.#onPopoverToggle}\n placement=${this.collapse === 'start' ? 'bottom-start' : 'bottom-end'}>\n <div id=\"dropdown-container\">\n ${repeat(this.#clonedElements, el => html`${el}`)}\n </div>\n </uui-popover-container>\n `;\n }\n\n static override readonly styles = [\n css`\n :host {\n display: flex;\n min-width: 0;\n }\n\n #main {\n display: flex;\n overflow: hidden;\n align-items: center;\n }\n\n #items-container {\n display: flex;\n gap: var(--uui-responsive-container-gap, var(--uui-size-3));\n overflow: hidden;\n align-items: center;\n }\n\n #more-button {\n --uui-button-background-color: transparent;\n --uui-button-background-color-hover: var(--uui-color-surface-alt);\n flex-shrink: 0;\n }\n\n :host([collapse='end']) #more-button,\n :host(:not([collapse])) #more-button {\n margin-left: var(--uui-responsive-container-gap, var(--uui-size-3));\n }\n\n :host([collapse='start']) #more-button {\n margin-right: var(--uui-responsive-container-gap, var(--uui-size-3));\n }\n\n #dropdown-container {\n display: flex;\n flex-direction: column;\n background-color: var(--uui-color-surface);\n border-radius: var(--uui-border-radius);\n box-shadow: var(--uui-shadow-depth-3);\n overflow: hidden;\n padding: var(--uui-size-space-2);\n gap: var(--uui-size-space-1);\n }\n `,\n ];\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"responsive-container.element.js","names":["#onResize","#hiddenElementsMap","#resizeObserver","#isConnected","#initialize","#cleanup","#onSlotChange","#updateCollapsibleItems","#childElements","#calculateBreakPoints","#childResizeObservers","#visibilityBreakpoints","#clonedElements","#onItemClicked","#hiddenElements","#breakPointCalculationInProgress","#collapseFromEnd","#collapseFromStart","#hideElement","#buildDropdownItems","#onPopoverToggle"],"sources":["../../../src/components/responsive-container/responsive-container.element.ts"],"sourcesContent":["import type { UUIButtonElement } from '../button/button.js';\nimport type { UUIPopoverContainerElement } from '../popover-container/popover-container.js';\nimport { css, html, LitElement } from 'lit';\nimport { property, query, queryAssignedElements } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\n\nimport '../button/button.js';\nimport '../popover-container/popover-container.js';\nimport '../symbol-more/symbol-more.js';\n\n/**\n * A responsive container that collapses overflowing children into a dropdown.\n *\n * @element uui-responsive-container\n * @slot - Default slot for child elements (buttons, etc.)\n * @cssprop --uui-responsive-container-gap - Gap between items (default: 8px)\n */\nexport class UUIResponsiveContainerElement extends LitElement {\n // These help us find elements inside the component\n @query('#more-button')\n private readonly _moreButtonElement!: UUIButtonElement;\n\n @query('#popover-container')\n private readonly _popoverContainerElement!: UUIPopoverContainerElement;\n\n @query('#main')\n private readonly _mainElement!: HTMLElement;\n\n /**\n * Controls which side items collapse from.\n * - \"end\": Items collapse from the right, more button appears on right (default)\n * - \"start\": Items collapse from the left, more button appears on left\n * @attr collapse\n * @default \"end\"\n */\n @property({ type: String, reflect: true })\n collapse: 'start' | 'end' = 'end';\n\n // This gets all elements put inside the slot\n @queryAssignedElements({ flatten: true })\n private readonly _slottedNodes?: HTMLElement[];\n\n // These store the component's internal state\n #childElements: HTMLElement[] = []; // All child elements\n #hiddenElements: HTMLElement[] = []; // Elements in the dropdown\n #clonedElements: HTMLElement[] = []; // Clones of hidden elements for the dropdown\n readonly #hiddenElementsMap: Map<HTMLElement, HTMLElement> = new Map();\n #visibilityBreakpoints: number[] = []; // Width thresholds for each item\n\n // ResizeObserver watches for size changes\n readonly #resizeObserver = new ResizeObserver(this.#onResize.bind(this));\n #childResizeObservers: ResizeObserver[] = [];\n #breakPointCalculationInProgress = false;\n\n #isConnected = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.#isConnected = true;\n this.#initialize();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.#isConnected = false;\n this.#resizeObserver.disconnect();\n this.#cleanup();\n }\n\n async #initialize() {\n await this.updateComplete;\n if (!this.#isConnected) return;\n this.#resizeObserver.observe(this);\n\n requestAnimationFrame(() => {\n if (!this.#isConnected) return;\n this.#onSlotChange();\n });\n }\n\n // This runs when the container size changes\n #onResize(entries: ResizeObserverEntry[]) {\n if (!this.#isConnected) return;\n const newWidth = entries[0].contentBoxSize[0].inlineSize;\n this.#updateCollapsibleItems(newWidth);\n }\n\n // This runs when children are added/removed\n #onSlotChange() {\n if (!this.#isConnected) return;\n\n this.#cleanup();\n this.#childElements = this._slottedNodes ? [...this._slottedNodes] : [];\n\n this.#childElements.forEach(el => {\n const observer = new ResizeObserver(\n this.#calculateBreakPoints.bind(this),\n );\n observer.observe(el);\n this.#childResizeObservers.push(observer);\n });\n\n this.#calculateBreakPoints();\n }\n\n #cleanup() {\n this.#childResizeObservers.forEach(observer => observer.disconnect());\n this.#childResizeObservers = [];\n this.#visibilityBreakpoints = [];\n\n // Clean up hidden elements\n this.#clonedElements.forEach(el => {\n el.removeEventListener('click', this.#onItemClicked);\n });\n this.#clonedElements = [];\n this.#hiddenElements = [];\n this.#hiddenElementsMap.clear();\n }\n\n // Calculate at what widths items should hide\n async #calculateBreakPoints() {\n if (!this.#isConnected) return;\n if (this.#breakPointCalculationInProgress) return;\n\n this.#breakPointCalculationInProgress = true;\n\n await this.updateComplete;\n\n // Get the gap from CSS or use default\n const gapCSSVar = Number.parseFloat(\n getComputedStyle(this).getPropertyValue('--uui-responsive-container-gap'),\n );\n const gap = Number.isNaN(gapCSSVar) ? 8 : gapCSSVar;\n\n let totalWidth = 0;\n\n // Calculate cumulative width for each item\n for (let i = 0; i < this.#childElements.length; i++) {\n this.#childElements[i].style.display = '';\n totalWidth += this.#childElements[i].offsetWidth;\n this.#visibilityBreakpoints[i] = totalWidth;\n totalWidth += gap;\n }\n\n // Set the container width\n const tolerance = 2;\n this._mainElement.style.width = totalWidth - gap + tolerance + 'px';\n\n this.#updateCollapsibleItems(this.offsetWidth);\n this.#breakPointCalculationInProgress = false;\n }\n\n // The main logic that shows/hides items\n #updateCollapsibleItems(containerWidth: number) {\n const moreButtonWidth = this._moreButtonElement?.offsetWidth || 40;\n const availableWidth = containerWidth - moreButtonWidth;\n\n // Clear previous hidden items\n this.#hiddenElements = [];\n this.#clonedElements.forEach(el =>\n el.removeEventListener('click', this.#onItemClicked),\n );\n this.#clonedElements = [];\n this._popoverContainerElement?.hidePopover();\n this.#hiddenElementsMap.clear();\n\n if (this.collapse === 'end') {\n this.#collapseFromEnd(containerWidth, availableWidth);\n } else {\n this.#collapseFromStart(containerWidth, availableWidth);\n }\n\n // Show/hide the \"more\" button\n if (this.#hiddenElements.length === 0) {\n this._moreButtonElement.style.display = 'none';\n this._popoverContainerElement?.hidePopover();\n } else {\n this._moreButtonElement.style.display = '';\n }\n\n this.requestUpdate();\n }\n\n #hideElement(element: HTMLElement) {\n element.style.display = 'none';\n this.#hiddenElements.push(element);\n }\n\n #collapseFromEnd(containerWidth: number, availableWidth: number) {\n const len = this.#visibilityBreakpoints.length;\n\n for (let i = 0; i < len; i++) {\n const breakpoint = this.#visibilityBreakpoints[i];\n const element = this.#childElements[i];\n\n // Last item: use full width (no more button needed if all fit)\n const widthToCheck = i === len - 1 ? containerWidth : availableWidth;\n\n if (breakpoint <= widthToCheck) {\n element.style.display = '';\n } else {\n this.#hideElement(element);\n }\n }\n }\n\n #collapseFromStart(containerWidth: number, availableWidth: number) {\n const len = this.#visibilityBreakpoints.length;\n const totalWidth = this.#visibilityBreakpoints[len - 1] || 0;\n\n for (let i = 0; i < len; i++) {\n const element = this.#childElements[i];\n // Width from this item to the end\n const widthFromEnd =\n totalWidth - (i > 0 ? this.#visibilityBreakpoints[i - 1] : 0);\n\n // First visible item: use full width (no more button needed if all fit)\n const isFirstPotentiallyVisible =\n i === 0 || this.#childElements[i - 1].style.display === 'none';\n const widthToCheck =\n isFirstPotentiallyVisible && this.#hiddenElements.length === 0\n ? containerWidth\n : availableWidth;\n\n if (widthFromEnd <= widthToCheck) {\n element.style.display = '';\n } else {\n this.#hideElement(element);\n }\n }\n }\n\n readonly #onItemClicked = (e: MouseEvent) => {\n const clickedElement = e.currentTarget as HTMLElement;\n\n // Find the original element linked to this clone\n const originalElement = this.#hiddenElementsMap.get(clickedElement);\n\n if (originalElement) {\n // Close the dropdown\n this._popoverContainerElement?.hidePopover();\n\n // Trigger click on the ORIGINAL element so its event handlers fire\n originalElement.click();\n }\n };\n\n #onPopoverToggle(e: ToggleEvent) {\n if (e.newState === 'open') {\n this.#buildDropdownItems();\n }\n }\n\n #buildDropdownItems() {\n // Clear old clones\n this.#clonedElements.forEach(el =>\n el.removeEventListener('click', this.#onItemClicked),\n );\n this.#clonedElements = [];\n this.#hiddenElementsMap.clear();\n\n for (const original of this.#hiddenElements) {\n const clone = original.cloneNode(true) as HTMLElement;\n clone.style.display = '';\n clone.addEventListener('click', this.#onItemClicked);\n this.#hiddenElementsMap.set(clone, original);\n this.#clonedElements.push(clone);\n }\n this.requestUpdate();\n }\n\n render() {\n const moreButton = html`\n <uui-button\n popovertarget=\"popover-container\"\n style=\"display: none\"\n id=\"more-button\"\n label=\"More\"\n compact>\n <slot name=\"trigger-content\">\n <uui-symbol-more></uui-symbol-more>\n </slot>\n </uui-button>\n `;\n\n return html`\n <div id=\"main\">\n ${this.collapse === 'start' ? moreButton : ''}\n <div id=\"items-container\">\n <slot @slotchange=${this.#onSlotChange}></slot>\n </div>\n ${this.collapse === 'end' ? moreButton : ''}\n </div>\n <uui-popover-container\n id=\"popover-container\"\n popover\n @beforetoggle=${this.#onPopoverToggle}\n placement=${this.collapse === 'start' ? 'bottom-start' : 'bottom-end'}>\n <div id=\"dropdown-container\">\n ${repeat(this.#clonedElements, el => html`${el}`)}\n </div>\n </uui-popover-container>\n `;\n }\n\n static override readonly styles = [\n css`\n :host {\n display: flex;\n min-width: 0;\n }\n\n #main {\n display: flex;\n overflow: hidden;\n align-items: center;\n }\n\n #items-container {\n display: flex;\n gap: var(--uui-responsive-container-gap, var(--uui-size-3));\n overflow: hidden;\n align-items: center;\n }\n\n #more-button {\n --uui-button-background-color: transparent;\n --uui-button-background-color-hover: var(--uui-color-surface-alt);\n flex-shrink: 0;\n }\n\n :host([collapse='end']) #more-button,\n :host(:not([collapse])) #more-button {\n margin-left: var(--uui-responsive-container-gap, var(--uui-size-3));\n }\n\n :host([collapse='start']) #more-button {\n margin-right: var(--uui-responsive-container-gap, var(--uui-size-3));\n }\n\n #dropdown-container {\n display: flex;\n flex-direction: column;\n background-color: var(--uui-color-surface);\n border-radius: var(--uui-border-radius);\n box-shadow: var(--uui-shadow-depth-3);\n overflow: hidden;\n padding: var(--uui-size-space-2);\n gap: var(--uui-size-space-1);\n }\n `,\n ];\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineElement } from "../../internal/registration/index.js";
|
|
2
2
|
import { UUIResponsiveContainerElement } from "./responsive-container.element.js";
|
|
3
|
+
//#region src/components/responsive-container/responsive-container.ts
|
|
3
4
|
defineElement("uui-responsive-container", UUIResponsiveContainerElement);
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=responsive-container.js.map
|
|
5
|
+
//#endregion
|
|
6
|
+
export { UUIResponsiveContainerElement };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=responsive-container.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responsive-container.js","sources":["../../../src/components/responsive-container/responsive-container.ts"],"sourcesContent":["import { defineElement } from '../../internal/registration/index.js';\nimport { UUIResponsiveContainerElement } from './responsive-container.element.js';\n\ndefineElement('uui-responsive-container', UUIResponsiveContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'uui-responsive-container': UUIResponsiveContainerElement;\n }\n}\n\nexport * from './responsive-container.element.js';\
|
|
1
|
+
{"version":3,"file":"responsive-container.js","names":[],"sources":["../../../src/components/responsive-container/responsive-container.ts"],"sourcesContent":["import { defineElement } from '../../internal/registration/index.js';\nimport { UUIResponsiveContainerElement } from './responsive-container.element.js';\n\ndefineElement('uui-responsive-container', UUIResponsiveContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'uui-responsive-container': UUIResponsiveContainerElement;\n }\n}\n\nexport * from './responsive-container.element.js';\n"],"mappings":";;;AAGA,cAAc,4BAA4B,6BAA6B"}
|
|
@@ -1,31 +1,28 @@
|
|
|
1
|
-
import
|
|
1
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.138.0/helpers/esm/decorate.js";
|
|
2
|
+
import { LitElement, css, html } from "lit";
|
|
2
3
|
import { property } from "lit/decorators.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
_UUIScrollContainerElement.styles = [
|
|
28
|
-
css`
|
|
4
|
+
//#region src/components/scroll-container/scroll-container.element.ts
|
|
5
|
+
/**
|
|
6
|
+
* @element uui-scroll-container
|
|
7
|
+
* @slot - for content
|
|
8
|
+
* @attribute enforce-scroll - forces the scrollbar to appear
|
|
9
|
+
* @description - Component for displaying a larger amount of .
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
var UUIScrollContainerElement = class extends LitElement {
|
|
13
|
+
constructor(..._args) {
|
|
14
|
+
super(..._args);
|
|
15
|
+
this.enforceScroll = false;
|
|
16
|
+
}
|
|
17
|
+
connectedCallback() {
|
|
18
|
+
super.connectedCallback();
|
|
19
|
+
if (!this.hasAttribute("tabindex")) this.setAttribute("tabindex", "0");
|
|
20
|
+
}
|
|
21
|
+
render() {
|
|
22
|
+
return html`<slot></slot>`;
|
|
23
|
+
}
|
|
24
|
+
static {
|
|
25
|
+
this.styles = [css`
|
|
29
26
|
:host {
|
|
30
27
|
display: block;
|
|
31
28
|
overflow-y: auto;
|
|
@@ -67,13 +64,15 @@ _UUIScrollContainerElement.styles = [
|
|
|
67
64
|
:host(:focus-within)::-webkit-scrollbar-thumb {
|
|
68
65
|
background-color: var(--uui-color-disabled-standalone);
|
|
69
66
|
}
|
|
70
|
-
`
|
|
71
|
-
|
|
72
|
-
let UUIScrollContainerElement = _UUIScrollContainerElement;
|
|
73
|
-
__decorateClass([
|
|
74
|
-
property({ type: Boolean, reflect: true, attribute: "enforce-scroll" })
|
|
75
|
-
], UUIScrollContainerElement.prototype, "enforceScroll");
|
|
76
|
-
export {
|
|
77
|
-
UUIScrollContainerElement
|
|
67
|
+
`];
|
|
68
|
+
}
|
|
78
69
|
};
|
|
79
|
-
|
|
70
|
+
__decorate([property({
|
|
71
|
+
type: Boolean,
|
|
72
|
+
reflect: true,
|
|
73
|
+
attribute: "enforce-scroll"
|
|
74
|
+
})], UUIScrollContainerElement.prototype, "enforceScroll", void 0);
|
|
75
|
+
//#endregion
|
|
76
|
+
export { UUIScrollContainerElement };
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=scroll-container.element.js.map
|