igniteui-webcomponents 7.2.4 → 7.3.0-beta.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/CHANGELOG.md +162 -0
- package/animations/player.d.ts +7 -2
- package/animations/player.js +2 -3
- package/animations/player.js.map +1 -1
- package/animations/view-transition.js +1 -1
- package/animations/view-transition.js.map +1 -1
- package/components/accordion/accordion.d.ts +1 -1
- package/components/accordion/accordion.js +11 -22
- package/components/accordion/accordion.js.map +1 -1
- package/components/avatar/avatar.d.ts +0 -1
- package/components/avatar/avatar.js +8 -12
- package/components/avatar/avatar.js.map +1 -1
- package/components/avatar/themes/themes.d.ts +1 -1
- package/components/avatar/themes/themes.js.map +1 -1
- package/components/badge/badge.d.ts +2 -4
- package/components/badge/badge.js +9 -13
- package/components/badge/badge.js.map +1 -1
- package/components/badge/themes/themes.d.ts +1 -1
- package/components/badge/themes/themes.js.map +1 -1
- package/components/banner/banner.d.ts +8 -7
- package/components/banner/banner.js +27 -25
- package/components/banner/banner.js.map +1 -1
- package/components/banner/themes/themes.d.ts +1 -1
- package/components/banner/themes/themes.js.map +1 -1
- package/components/button/button-base.d.ts +3 -3
- package/components/button/button-base.js +9 -8
- package/components/button/button-base.js.map +1 -1
- package/components/button/button.d.ts +3 -3
- package/components/button/button.js +2 -2
- package/components/button/button.js.map +1 -1
- package/components/button/icon-button.js +3 -3
- package/components/button/icon-button.js.map +1 -1
- package/components/button/themes/button/themes.d.ts +1 -1
- package/components/button/themes/button/themes.js.map +1 -1
- package/components/button/themes/icon-button/themes.d.ts +1 -1
- package/components/button/themes/icon-button/themes.js.map +1 -1
- package/components/button-group/button-group.d.ts +41 -21
- package/components/button-group/button-group.js +95 -105
- package/components/button-group/button-group.js.map +1 -1
- package/components/button-group/themes/button.d.ts +1 -1
- package/components/button-group/themes/button.js.map +1 -1
- package/components/button-group/themes/group.d.ts +1 -1
- package/components/button-group/themes/group.js.map +1 -1
- package/components/button-group/toggle-button.d.ts +17 -10
- package/components/button-group/toggle-button.js +28 -13
- package/components/button-group/toggle-button.js.map +1 -1
- package/components/calendar/base.d.ts +28 -19
- package/components/calendar/base.js +20 -44
- package/components/calendar/base.js.map +1 -1
- package/components/calendar/calendar.d.ts +38 -7
- package/components/calendar/calendar.js +96 -85
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +49 -22
- package/components/calendar/days-view/days-view.js +102 -163
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/helpers.d.ts +3 -62
- package/components/calendar/helpers.js +6 -110
- package/components/calendar/helpers.js.map +1 -1
- package/components/calendar/months-view/months-view.d.ts +8 -22
- package/components/calendar/months-view/months-view.js +30 -83
- package/components/calendar/months-view/months-view.js.map +1 -1
- package/components/calendar/selection.d.ts +21 -0
- package/components/calendar/selection.js +42 -0
- package/components/calendar/selection.js.map +1 -0
- package/components/calendar/themes/calendar.d.ts +1 -1
- package/components/calendar/themes/calendar.js.map +1 -1
- package/components/calendar/themes/days.d.ts +1 -1
- package/components/calendar/themes/days.js.map +1 -1
- package/components/calendar/themes/year-month.d.ts +1 -1
- package/components/calendar/themes/year-month.js.map +1 -1
- package/components/calendar/types.d.ts +18 -0
- package/components/calendar/types.js.map +1 -1
- package/components/calendar/year-month-view.base.d.ts +44 -0
- package/components/calendar/year-month-view.base.js +89 -0
- package/components/calendar/year-month-view.base.js.map +1 -0
- package/components/calendar/years-view/years-view.d.ts +7 -20
- package/components/calendar/years-view/years-view.js +25 -79
- package/components/calendar/years-view/years-view.js.map +1 -1
- package/components/card/card.actions.js +2 -2
- package/components/card/card.actions.js.map +1 -1
- package/components/card/card.content.d.ts +1 -1
- package/components/card/card.content.js +2 -2
- package/components/card/card.content.js.map +1 -1
- package/components/card/card.d.ts +1 -1
- package/components/card/card.header.js +2 -2
- package/components/card/card.header.js.map +1 -1
- package/components/card/card.js +2 -2
- package/components/card/card.js.map +1 -1
- package/components/card/card.media.d.ts +1 -1
- package/components/card/card.media.js +1 -1
- package/components/card/card.media.js.map +1 -1
- package/components/card/themes/actions.d.ts +1 -1
- package/components/card/themes/actions.js.map +1 -1
- package/components/card/themes/container.d.ts +1 -1
- package/components/card/themes/container.js.map +1 -1
- package/components/card/themes/content.d.ts +1 -1
- package/components/card/themes/content.js.map +1 -1
- package/components/card/themes/header.d.ts +1 -1
- package/components/card/themes/header.js.map +1 -1
- package/components/carousel/animations.d.ts +1 -1
- package/components/carousel/animations.js +2 -2
- package/components/carousel/animations.js.map +1 -1
- package/components/carousel/carousel-indicator-container.js +4 -4
- package/components/carousel/carousel-indicator-container.js.map +1 -1
- package/components/carousel/carousel-indicator.d.ts +2 -2
- package/components/carousel/carousel-indicator.js +17 -17
- package/components/carousel/carousel-indicator.js.map +1 -1
- package/components/carousel/carousel-slide.d.ts +1 -3
- package/components/carousel/carousel-slide.js +16 -18
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.d.ts +58 -41
- package/components/carousel/carousel.js +170 -145
- package/components/carousel/carousel.js.map +1 -1
- package/components/carousel/themes/carousel.base.css.js +1 -1
- package/components/carousel/themes/carousel.base.css.js.map +1 -1
- package/components/carousel/themes/container.d.ts +1 -1
- package/components/carousel/themes/container.js.map +1 -1
- package/components/carousel/themes/indicator-container.d.ts +1 -1
- package/components/carousel/themes/indicator-container.js.map +1 -1
- package/components/chat/chat-input.d.ts +4 -4
- package/components/chat/chat-input.js +28 -27
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-message.d.ts +1 -1
- package/components/chat/chat-message.js +7 -6
- package/components/chat/chat-message.js.map +1 -1
- package/components/chat/chat-state.d.ts +2 -2
- package/components/chat/chat-state.js +2 -1
- package/components/chat/chat-state.js.map +1 -1
- package/components/chat/chat.d.ts +4 -6
- package/components/chat/chat.js +13 -19
- package/components/chat/chat.js.map +1 -1
- package/components/chat/message-attachments.js +5 -5
- package/components/chat/message-attachments.js.map +1 -1
- package/components/chat/themes/attachments.d.ts +1 -1
- package/components/chat/themes/attachments.js.map +1 -1
- package/components/chat/themes/input.d.ts +1 -1
- package/components/chat/themes/input.js.map +1 -1
- package/components/chat/themes/message.d.ts +1 -1
- package/components/chat/themes/message.js.map +1 -1
- package/components/chat/themes/themes.d.ts +1 -1
- package/components/chat/themes/themes.js.map +1 -1
- package/components/chat/types.d.ts +2 -2
- package/components/chat/types.js.map +1 -1
- package/components/chat/utils.d.ts +1 -1
- package/components/chat/utils.js +3 -3
- package/components/chat/utils.js.map +1 -1
- package/components/checkbox/checkbox-base.d.ts +7 -7
- package/components/checkbox/checkbox-base.js +7 -7
- package/components/checkbox/checkbox-base.js.map +1 -1
- package/components/checkbox/checkbox.d.ts +3 -5
- package/components/checkbox/checkbox.js +40 -50
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.d.ts +1 -1
- package/components/checkbox/switch.js +30 -40
- package/components/checkbox/switch.js.map +1 -1
- package/components/checkbox/themes/checkbox-themes.d.ts +1 -1
- package/components/checkbox/themes/checkbox-themes.js.map +1 -1
- package/components/checkbox/themes/switch-themes.d.ts +1 -1
- package/components/checkbox/themes/switch-themes.js.map +1 -1
- package/components/checkbox/validators.d.ts +1 -1
- package/components/checkbox/validators.js +1 -1
- package/components/checkbox/validators.js.map +1 -1
- package/components/chip/chip.d.ts +9 -16
- package/components/chip/chip.js +21 -38
- package/components/chip/chip.js.map +1 -1
- package/components/chip/themes/chip.base.css.js +1 -1
- package/components/chip/themes/chip.base.css.js.map +1 -1
- package/components/chip/themes/dark/chip.bootstrap.css.js +1 -1
- package/components/chip/themes/dark/chip.bootstrap.css.js.map +1 -1
- package/components/chip/themes/dark/chip.fluent.css.js +1 -1
- package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/dark/chip.indigo.css.js +1 -1
- package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/dark/chip.material.css.js +1 -1
- package/components/chip/themes/dark/chip.material.css.js.map +1 -1
- package/components/chip/themes/light/chip.bootstrap.css.js +1 -1
- package/components/chip/themes/light/chip.bootstrap.css.js.map +1 -1
- package/components/chip/themes/light/chip.fluent.css.js +1 -1
- package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/light/chip.indigo.css.js +1 -1
- package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/light/chip.material.css.js +1 -1
- package/components/chip/themes/light/chip.material.css.js.map +1 -1
- package/components/chip/themes/light/chip.shared.css.js +1 -1
- package/components/chip/themes/light/chip.shared.css.js.map +1 -1
- package/components/chip/themes/shared/chip.bootstrap.css.js +1 -1
- package/components/chip/themes/shared/chip.bootstrap.css.js.map +1 -1
- package/components/chip/themes/shared/chip.common.css.js +1 -1
- package/components/chip/themes/shared/chip.common.css.js.map +1 -1
- package/components/chip/themes/shared/chip.fluent.css.js +1 -1
- package/components/chip/themes/shared/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/shared/chip.indigo.css.js +1 -1
- package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/themes.d.ts +1 -1
- package/components/chip/themes/themes.js.map +1 -1
- package/components/combo/combo-header.js +2 -2
- package/components/combo/combo-header.js.map +1 -1
- package/components/combo/combo-item.d.ts +1 -5
- package/components/combo/combo-item.js +8 -18
- package/components/combo/combo-item.js.map +1 -1
- package/components/combo/combo.d.ts +89 -45
- package/components/combo/combo.js +244 -229
- package/components/combo/combo.js.map +1 -1
- package/components/combo/controllers/data.d.ts +30 -3
- package/components/combo/controllers/data.js +34 -9
- package/components/combo/controllers/data.js.map +1 -1
- package/components/combo/controllers/navigation.d.ts +8 -2
- package/components/combo/controllers/navigation.js +11 -12
- package/components/combo/controllers/navigation.js.map +1 -1
- package/components/combo/operations/filter.d.ts +17 -1
- package/components/combo/operations/filter.js +29 -9
- package/components/combo/operations/filter.js.map +1 -1
- package/components/combo/operations/group.js +1 -1
- package/components/combo/operations/group.js.map +1 -1
- package/components/combo/themes/combo.base.css.js +1 -1
- package/components/combo/themes/combo.base.css.js.map +1 -1
- package/components/combo/themes/themes.d.ts +1 -1
- package/components/combo/themes/themes.js.map +1 -1
- package/components/combo/types.d.ts +8 -4
- package/components/combo/types.js.map +1 -1
- package/components/combo/validators.d.ts +1 -1
- package/components/combo/validators.js.map +1 -1
- package/components/date-picker/date-picker.base.d.ts +297 -0
- package/components/date-picker/date-picker.base.js +473 -0
- package/components/date-picker/date-picker.base.js.map +1 -0
- package/components/date-picker/date-picker.d.ts +53 -174
- package/components/date-picker/date-picker.js +90 -403
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-picker/themes/themes.d.ts +1 -1
- package/components/date-picker/themes/themes.js.map +1 -1
- package/components/date-picker/validators.d.ts +1 -1
- package/components/date-picker/validators.js +2 -2
- package/components/date-picker/validators.js.map +1 -1
- package/components/date-range-picker/date-range-input.d.ts +14 -18
- package/components/date-range-picker/date-range-input.js +39 -126
- package/components/date-range-picker/date-range-input.js.map +1 -1
- package/components/date-range-picker/date-range-mask-parser.d.ts +22 -34
- package/components/date-range-picker/date-range-mask-parser.js +38 -69
- package/components/date-range-picker/date-range-mask-parser.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +93 -190
- package/components/date-range-picker/date-range-picker.js +208 -543
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.d.ts +4 -4
- package/components/date-range-picker/predefined-ranges-area.js +8 -10
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
- package/components/date-range-picker/themes/ranges-themes.d.ts +1 -1
- package/components/date-range-picker/themes/ranges-themes.js.map +1 -1
- package/components/date-range-picker/themes/themes.d.ts +1 -1
- package/components/date-range-picker/themes/themes.js.map +1 -1
- package/components/date-range-picker/validators.d.ts +1 -1
- package/components/date-range-picker/validators.js +10 -30
- package/components/date-range-picker/validators.js.map +1 -1
- package/components/date-time-input/date-part.d.ts +20 -2
- package/components/date-time-input/date-part.js +48 -75
- package/components/date-time-input/date-part.js.map +1 -1
- package/components/date-time-input/date-time-input.base.d.ts +101 -35
- package/components/date-time-input/date-time-input.base.js +142 -46
- package/components/date-time-input/date-time-input.base.js.map +1 -1
- package/components/date-time-input/date-time-input.d.ts +14 -26
- package/components/date-time-input/date-time-input.js +37 -90
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/datetime-mask-parser.d.ts +53 -109
- package/components/date-time-input/datetime-mask-parser.js +93 -144
- package/components/date-time-input/datetime-mask-parser.js.map +1 -1
- package/components/date-time-input/validators.d.ts +1 -1
- package/components/date-time-input/validators.js +3 -14
- package/components/date-time-input/validators.js.map +1 -1
- package/components/dialog/dialog.d.ts +8 -9
- package/components/dialog/dialog.js +38 -44
- package/components/dialog/dialog.js.map +1 -1
- package/components/dialog/themes/themes.d.ts +1 -1
- package/components/dialog/themes/themes.js.map +1 -1
- package/components/divider/divider.d.ts +3 -5
- package/components/divider/divider.js +11 -20
- package/components/divider/divider.js.map +1 -1
- package/components/divider/themes/themes.d.ts +1 -1
- package/components/divider/themes/themes.js.map +1 -1
- package/components/dropdown/dropdown-group.d.ts +10 -3
- package/components/dropdown/dropdown-group.js +16 -5
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown-header.d.ts +2 -2
- package/components/dropdown/dropdown-header.js +7 -2
- package/components/dropdown/dropdown-header.js.map +1 -1
- package/components/dropdown/dropdown-item.d.ts +4 -4
- package/components/dropdown/dropdown-item.js +3 -3
- package/components/dropdown/dropdown-item.js.map +1 -1
- package/components/dropdown/dropdown.d.ts +75 -32
- package/components/dropdown/dropdown.js +189 -110
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/dropdown/themes/container.d.ts +1 -1
- package/components/dropdown/themes/container.js.map +1 -1
- package/components/dropdown/themes/group.d.ts +1 -1
- package/components/dropdown/themes/group.js.map +1 -1
- package/components/dropdown/themes/header.d.ts +1 -1
- package/components/dropdown/themes/header.js.map +1 -1
- package/components/dropdown/themes/item.d.ts +1 -1
- package/components/dropdown/themes/item.js.map +1 -1
- package/components/expansion-panel/expansion-panel.d.ts +27 -8
- package/components/expansion-panel/expansion-panel.js +33 -43
- package/components/expansion-panel/expansion-panel.js.map +1 -1
- package/components/expansion-panel/themes/themes.d.ts +1 -1
- package/components/expansion-panel/themes/themes.js.map +1 -1
- package/components/file-input/file-input.d.ts +19 -23
- package/components/file-input/file-input.js +21 -34
- package/components/file-input/file-input.js.map +1 -1
- package/components/file-input/themes/themes.d.ts +1 -1
- package/components/file-input/themes/themes.js.map +1 -1
- package/components/file-input/validators.d.ts +1 -1
- package/components/file-input/validators.js +1 -1
- package/components/file-input/validators.js.map +1 -1
- package/components/focus-trap/focus-trap.js +3 -2
- package/components/focus-trap/focus-trap.js.map +1 -1
- package/components/highlight/highlight.d.ts +6 -8
- package/components/highlight/highlight.js +14 -22
- package/components/highlight/highlight.js.map +1 -1
- package/components/highlight/service.d.ts +4 -1
- package/components/highlight/service.js +23 -7
- package/components/highlight/service.js.map +1 -1
- package/components/highlight/themes/themes.d.ts +1 -1
- package/components/highlight/themes/themes.js.map +1 -1
- package/components/icon/icon-references.d.ts +3 -2
- package/components/icon/icon-references.js +103 -491
- package/components/icon/icon-references.js.map +1 -1
- package/components/icon/icon-state.broadcast.d.ts +14 -17
- package/components/icon/icon-state.broadcast.js +19 -20
- package/components/icon/icon-state.broadcast.js.map +1 -1
- package/components/icon/icon.d.ts +11 -23
- package/components/icon/icon.js +36 -28
- package/components/icon/icon.js.map +1 -1
- package/components/icon/icon.registry.d.ts +69 -131
- package/components/icon/icon.registry.js +51 -53
- package/components/icon/icon.registry.js.map +1 -1
- package/components/icon/internal-icons-lib.js +2 -2
- package/components/icon/internal-icons-lib.js.map +1 -1
- package/components/icon/registry/parser.d.ts +15 -3
- package/components/icon/registry/parser.js +36 -11
- package/components/icon/registry/parser.js.map +1 -1
- package/components/icon/registry/types.d.ts +55 -11
- package/components/icon/registry/types.js.map +1 -1
- package/components/icon/themes/icon.base.css.js +1 -1
- package/components/icon/themes/icon.base.css.js.map +1 -1
- package/components/icon/themes/shared/icon.common.css.js +1 -1
- package/components/icon/themes/shared/icon.common.css.js.map +1 -1
- package/components/icon/themes/themes.d.ts +1 -1
- package/components/icon/themes/themes.js.map +1 -1
- package/components/input/input-base.d.ts +10 -25
- package/components/input/input-base.js +14 -23
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +23 -30
- package/components/input/input.js +38 -69
- package/components/input/input.js.map +1 -1
- package/components/input/themes/input.base.css.js +1 -1
- package/components/input/themes/input.base.css.js.map +1 -1
- package/components/input/themes/shared/input.bootstrap.css.js +1 -1
- package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
- package/components/input/themes/shared/input.common.css.js +1 -1
- package/components/input/themes/shared/input.common.css.js.map +1 -1
- package/components/input/themes/shared/input.fluent.css.js +1 -1
- package/components/input/themes/shared/input.fluent.css.js.map +1 -1
- package/components/input/themes/shared/input.indigo.css.js +1 -1
- package/components/input/themes/shared/input.indigo.css.js.map +1 -1
- package/components/input/themes/shared/input.material.css.js +1 -1
- package/components/input/themes/shared/input.material.css.js.map +1 -1
- package/components/input/themes/themes.d.ts +1 -1
- package/components/input/themes/themes.js.map +1 -1
- package/components/input/validators.d.ts +1 -1
- package/components/input/validators.js +1 -1
- package/components/input/validators.js.map +1 -1
- package/components/list/list-header.js +3 -3
- package/components/list/list-header.js.map +1 -1
- package/components/list/list-item.js +3 -3
- package/components/list/list-item.js.map +1 -1
- package/components/list/list.js +3 -3
- package/components/list/list.js.map +1 -1
- package/components/list/themes/container.d.ts +1 -1
- package/components/list/themes/container.js.map +1 -1
- package/components/list/themes/header.d.ts +1 -1
- package/components/list/themes/header.js.map +1 -1
- package/components/list/themes/item.d.ts +1 -1
- package/components/list/themes/item.js.map +1 -1
- package/components/mask-input/mask-history.d.ts +99 -0
- package/components/mask-input/mask-history.js +95 -0
- package/components/mask-input/mask-history.js.map +1 -0
- package/components/mask-input/mask-input.d.ts +14 -9
- package/components/mask-input/mask-input.js +20 -26
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/mask-input/mask-parser.d.ts +20 -2
- package/components/mask-input/mask-parser.js +21 -13
- package/components/mask-input/mask-parser.js.map +1 -1
- package/components/mask-input/validators.d.ts +1 -1
- package/components/mask-input/validators.js +1 -1
- package/components/mask-input/validators.js.map +1 -1
- package/components/nav-drawer/nav-drawer-header-item.d.ts +1 -1
- package/components/nav-drawer/nav-drawer-header-item.js +2 -2
- package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer-item.d.ts +2 -2
- package/components/nav-drawer/nav-drawer-item.js +4 -4
- package/components/nav-drawer/nav-drawer-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer.d.ts +10 -10
- package/components/nav-drawer/nav-drawer.js +23 -37
- package/components/nav-drawer/nav-drawer.js.map +1 -1
- package/components/nav-drawer/themes/container.base.css.js +1 -1
- package/components/nav-drawer/themes/container.base.css.js.map +1 -1
- package/components/nav-drawer/themes/container.d.ts +1 -1
- package/components/nav-drawer/themes/container.js +2 -3
- package/components/nav-drawer/themes/container.js.map +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js.map +1 -1
- package/components/nav-drawer/themes/header-item.d.ts +1 -1
- package/components/nav-drawer/themes/header-item.js.map +1 -1
- package/components/nav-drawer/themes/item.d.ts +1 -1
- package/components/nav-drawer/themes/item.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.indigo.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.indigo.css.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js.map +1 -1
- package/components/navbar/navbar.js +2 -2
- package/components/navbar/navbar.js.map +1 -1
- package/components/navbar/themes/themes.d.ts +1 -1
- package/components/navbar/themes/themes.js.map +1 -1
- package/components/popover/popover.d.ts +10 -3
- package/components/popover/popover.js +114 -99
- package/components/popover/popover.js.map +1 -1
- package/components/progress/base.d.ts +5 -8
- package/components/progress/base.js +25 -48
- package/components/progress/base.js.map +1 -1
- package/components/progress/circular-gradient.d.ts +2 -2
- package/components/progress/circular-gradient.js +1 -1
- package/components/progress/circular-gradient.js.map +1 -1
- package/components/progress/circular-progress.d.ts +15 -15
- package/components/progress/circular-progress.js +7 -6
- package/components/progress/circular-progress.js.map +1 -1
- package/components/progress/linear-progress.d.ts +12 -12
- package/components/progress/linear-progress.js +4 -4
- package/components/progress/linear-progress.js.map +1 -1
- package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
- package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
- package/components/progress/themes/circular/themes.d.ts +1 -1
- package/components/progress/themes/circular/themes.js.map +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
- package/components/progress/themes/linear/themes.d.ts +1 -1
- package/components/progress/themes/linear/themes.js.map +1 -1
- package/components/qr-code/model/encode.d.ts +20 -0
- package/components/qr-code/model/encode.js +166 -0
- package/components/qr-code/model/encode.js.map +1 -0
- package/components/qr-code/model/error-correction.d.ts +15 -0
- package/components/qr-code/model/error-correction.js +1114 -0
- package/components/qr-code/model/error-correction.js.map +1 -0
- package/components/qr-code/model/mask.d.ts +11 -0
- package/components/qr-code/model/mask.js +161 -0
- package/components/qr-code/model/mask.js.map +1 -0
- package/components/qr-code/model/matrix.d.ts +15 -0
- package/components/qr-code/model/matrix.js +277 -0
- package/components/qr-code/model/matrix.js.map +1 -0
- package/components/qr-code/qr-code.d.ts +134 -0
- package/components/qr-code/qr-code.js +222 -0
- package/components/qr-code/qr-code.js.map +1 -0
- package/components/qr-code/renderer/constants.d.ts +26 -0
- package/components/qr-code/renderer/constants.js +5 -0
- package/components/qr-code/renderer/constants.js.map +1 -0
- package/components/qr-code/renderer/corner.d.ts +23 -0
- package/components/qr-code/renderer/corner.js +25 -0
- package/components/qr-code/renderer/corner.js.map +1 -0
- package/components/qr-code/renderer/dots.d.ts +14 -0
- package/components/qr-code/renderer/dots.js +7 -0
- package/components/qr-code/renderer/dots.js.map +1 -0
- package/components/qr-code/renderer/helpers.d.ts +18 -0
- package/components/qr-code/renderer/helpers.js +158 -0
- package/components/qr-code/renderer/helpers.js.map +1 -0
- package/components/qr-code/renderer/image.d.ts +23 -0
- package/components/qr-code/renderer/image.js +29 -0
- package/components/qr-code/renderer/image.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.bootstrap.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.bootstrap.css.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.fluent.css.d.ts +1 -0
- package/components/qr-code/themes/dark/qr-code.fluent.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.fluent.css.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.indigo.css.d.ts +1 -0
- package/components/qr-code/themes/dark/qr-code.indigo.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.indigo.css.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.material.css.d.ts +1 -0
- package/components/qr-code/themes/dark/qr-code.material.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.material.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.bootstrap.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.bootstrap.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.bootstrap.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.fluent.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.fluent.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.fluent.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.indigo.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.indigo.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.indigo.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.material.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.material.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.material.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.shared.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.shared.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.shared.css.js.map +1 -0
- package/components/qr-code/themes/qr-code.base.css.d.ts +1 -0
- package/components/qr-code/themes/qr-code.base.css.js +3 -0
- package/components/qr-code/themes/qr-code.base.css.js.map +1 -0
- package/components/qr-code/themes/shared/qr-code.common.css.d.ts +1 -0
- package/components/qr-code/themes/shared/qr-code.common.css.js +3 -0
- package/components/qr-code/themes/shared/qr-code.common.css.js.map +1 -0
- package/components/qr-code/themes/themes.d.ts +2 -0
- package/components/qr-code/themes/themes.js +46 -0
- package/components/qr-code/themes/themes.js.map +1 -0
- package/components/qr-code/types.d.ts +16 -0
- package/components/qr-code/types.js +2 -0
- package/components/qr-code/types.js.map +1 -0
- package/components/radio/controller.d.ts +7 -0
- package/components/radio/controller.js +14 -0
- package/components/radio/controller.js.map +1 -0
- package/components/radio/radio.d.ts +30 -18
- package/components/radio/radio.js +90 -89
- package/components/radio/radio.js.map +1 -1
- package/components/radio/themes/themes.d.ts +1 -1
- package/components/radio/themes/themes.js.map +1 -1
- package/components/radio/validators.d.ts +1 -1
- package/components/radio/validators.js +5 -3
- package/components/radio/validators.js.map +1 -1
- package/components/radio-group/radio-group.d.ts +17 -9
- package/components/radio-group/radio-group.js +46 -44
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/radio-group/themes/themes.d.ts +1 -1
- package/components/radio-group/themes/themes.js.map +1 -1
- package/components/rating/rating-symbol.d.ts +1 -1
- package/components/rating/rating-symbol.js +1 -1
- package/components/rating/rating-symbol.js.map +1 -1
- package/components/rating/rating.d.ts +30 -18
- package/components/rating/rating.js +90 -81
- package/components/rating/rating.js.map +1 -1
- package/components/rating/themes/themes.d.ts +1 -1
- package/components/rating/themes/themes.js.map +1 -1
- package/components/resize-container/default-ghost.js +4 -3
- package/components/resize-container/default-ghost.js.map +1 -1
- package/components/resize-container/resize-container.d.ts +3 -3
- package/components/resize-container/resize-container.js +9 -7
- package/components/resize-container/resize-container.js.map +1 -1
- package/components/resize-container/resize-controller.js +6 -5
- package/components/resize-container/resize-controller.js.map +1 -1
- package/components/resize-container/themes/themes.d.ts +1 -1
- package/components/resize-container/themes/themes.js.map +1 -1
- package/components/ripple/ripple.d.ts +1 -1
- package/components/ripple/ripple.js +3 -2
- package/components/ripple/ripple.js.map +1 -1
- package/components/select/select-group.d.ts +11 -3
- package/components/select/select-group.js +21 -9
- package/components/select/select-group.js.map +1 -1
- package/components/select/select-header.d.ts +1 -1
- package/components/select/select-header.js +7 -2
- package/components/select/select-header.js.map +1 -1
- package/components/select/select-item.d.ts +4 -4
- package/components/select/select-item.js +3 -3
- package/components/select/select-item.js.map +1 -1
- package/components/select/select.d.ts +48 -28
- package/components/select/select.js +143 -94
- package/components/select/select.js.map +1 -1
- package/components/select/themes/select.base.css.js +1 -1
- package/components/select/themes/select.base.css.js.map +1 -1
- package/components/select/themes/themes.d.ts +1 -1
- package/components/select/themes/themes.js.map +1 -1
- package/components/select/validators.d.ts +1 -1
- package/components/select/validators.js +1 -1
- package/components/select/validators.js.map +1 -1
- package/components/slider/range-slider.d.ts +5 -4
- package/components/slider/range-slider.js +25 -73
- package/components/slider/range-slider.js.map +1 -1
- package/components/slider/slider-base.d.ts +9 -6
- package/components/slider/slider-base.js +35 -32
- package/components/slider/slider-base.js.map +1 -1
- package/components/slider/slider-label.js +1 -1
- package/components/slider/slider-label.js.map +1 -1
- package/components/slider/slider.d.ts +3 -3
- package/components/slider/slider.js +15 -11
- package/components/slider/slider.js.map +1 -1
- package/components/slider/themes/themes.d.ts +1 -1
- package/components/slider/themes/themes.js.map +1 -1
- package/components/snackbar/snackbar.d.ts +3 -3
- package/components/snackbar/snackbar.js +4 -4
- package/components/snackbar/snackbar.js.map +1 -1
- package/components/snackbar/themes/themes.d.ts +1 -1
- package/components/snackbar/themes/themes.js.map +1 -1
- package/components/splitter/splitter.d.ts +107 -24
- package/components/splitter/splitter.js +234 -147
- package/components/splitter/splitter.js.map +1 -1
- package/components/splitter/themes/themes.d.ts +1 -1
- package/components/splitter/themes/themes.js.map +1 -1
- package/components/splitter/types.d.ts +14 -3
- package/components/splitter/types.js.map +1 -1
- package/components/stepper/common/animations.d.ts +1 -1
- package/components/stepper/common/animations.js +2 -2
- package/components/stepper/common/animations.js.map +1 -1
- package/components/stepper/step.d.ts +4 -1
- package/components/stepper/step.js +16 -12
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/stepper.d.ts +5 -16
- package/components/stepper/stepper.js +27 -89
- package/components/stepper/stepper.js.map +1 -1
- package/components/stepper/themes/step/themes.d.ts +1 -1
- package/components/stepper/themes/step/themes.js.map +1 -1
- package/components/tabs/tab-dom.d.ts +31 -28
- package/components/tabs/tab-dom.js +84 -34
- package/components/tabs/tab-dom.js.map +1 -1
- package/components/tabs/tab.d.ts +24 -6
- package/components/tabs/tab.js +36 -14
- package/components/tabs/tab.js.map +1 -1
- package/components/tabs/tabs.d.ts +37 -27
- package/components/tabs/tabs.js +118 -129
- package/components/tabs/tabs.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
- package/components/tabs/themes/tab-themes.d.ts +1 -1
- package/components/tabs/themes/tab-themes.js.map +1 -1
- package/components/tabs/themes/tabs-themes.d.ts +1 -1
- package/components/tabs/themes/tabs-themes.js.map +1 -1
- package/components/tabs/themes/tabs.base.css.js +1 -1
- package/components/tabs/themes/tabs.base.css.js.map +1 -1
- package/components/textarea/textarea.d.ts +24 -20
- package/components/textarea/textarea.js +25 -27
- package/components/textarea/textarea.js.map +1 -1
- package/components/textarea/themes/themes.d.ts +1 -1
- package/components/textarea/themes/themes.js.map +1 -1
- package/components/textarea/validators.d.ts +1 -1
- package/components/textarea/validators.js +1 -1
- package/components/textarea/validators.js.map +1 -1
- package/components/theme-provider/theme-provider.d.ts +3 -5
- package/components/theme-provider/theme-provider.js +13 -23
- package/components/theme-provider/theme-provider.js.map +1 -1
- package/components/tile-manager/position.d.ts +1 -1
- package/components/tile-manager/position.js +2 -2
- package/components/tile-manager/position.js.map +1 -1
- package/components/tile-manager/resize-state.js +4 -3
- package/components/tile-manager/resize-state.js.map +1 -1
- package/components/tile-manager/themes/container.d.ts +1 -1
- package/components/tile-manager/themes/container.js.map +1 -1
- package/components/tile-manager/themes/tile.d.ts +1 -1
- package/components/tile-manager/themes/tile.js.map +1 -1
- package/components/tile-manager/tile-ghost-util.js +1 -1
- package/components/tile-manager/tile-ghost-util.js.map +1 -1
- package/components/tile-manager/tile-manager.d.ts +11 -22
- package/components/tile-manager/tile-manager.js +50 -81
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.d.ts +14 -22
- package/components/tile-manager/tile.js +66 -80
- package/components/tile-manager/tile.js.map +1 -1
- package/components/toast/themes/themes.d.ts +1 -1
- package/components/toast/themes/themes.js.map +1 -1
- package/components/toast/toast.d.ts +1 -1
- package/components/toast/toast.js +3 -3
- package/components/toast/toast.js.map +1 -1
- package/components/tooltip/controller.d.ts +18 -16
- package/components/tooltip/controller.js +62 -41
- package/components/tooltip/controller.js.map +1 -1
- package/components/tooltip/service.d.ts +2 -1
- package/components/tooltip/service.js +10 -15
- package/components/tooltip/service.js.map +1 -1
- package/components/tooltip/themes/shared/tooltip.common.css.js +1 -1
- package/components/tooltip/themes/shared/tooltip.common.css.js.map +1 -1
- package/components/tooltip/themes/shared/tooltip.indigo.css.js +1 -1
- package/components/tooltip/themes/shared/tooltip.indigo.css.js.map +1 -1
- package/components/tooltip/themes/themes.d.ts +1 -1
- package/components/tooltip/themes/themes.js.map +1 -1
- package/components/tooltip/themes/tooltip.base.css.js +1 -1
- package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
- package/components/tooltip/tooltip.d.ts +68 -25
- package/components/tooltip/tooltip.js +130 -88
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/themes/container.base.css.js +1 -1
- package/components/tree/themes/container.base.css.js.map +1 -1
- package/components/tree/themes/container.d.ts +1 -1
- package/components/tree/themes/container.js.map +1 -1
- package/components/tree/themes/item.base.css.js +1 -1
- package/components/tree/themes/item.base.css.js.map +1 -1
- package/components/tree/themes/item.d.ts +1 -1
- package/components/tree/themes/item.js.map +1 -1
- package/components/tree/tree-item.d.ts +62 -36
- package/components/tree/tree-item.js +198 -208
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.common.d.ts +16 -1
- package/components/tree/tree.common.js +40 -1
- package/components/tree/tree.common.js.map +1 -1
- package/components/tree/tree.d.ts +17 -23
- package/components/tree/tree.js +68 -94
- package/components/tree/tree.js.map +1 -1
- package/components/tree/tree.navigation.d.ts +39 -29
- package/components/tree/tree.navigation.js +140 -192
- package/components/tree/tree.navigation.js.map +1 -1
- package/components/tree/tree.selection.d.ts +32 -31
- package/components/tree/tree.selection.js +184 -178
- package/components/tree/tree.selection.js.map +1 -1
- package/components/types.js.map +1 -1
- package/components/validation-container/validation-container.d.ts +2 -3
- package/components/validation-container/validation-container.js +7 -6
- package/components/validation-container/validation-container.js.map +1 -1
- package/components/virtualization/engine.d.ts +94 -0
- package/components/virtualization/engine.js +217 -0
- package/components/virtualization/engine.js.map +1 -0
- package/components/virtualization/types.d.ts +54 -0
- package/components/virtualization/types.js +14 -0
- package/components/virtualization/types.js.map +1 -0
- package/components/virtualization/virtualization.d.ts +249 -0
- package/components/virtualization/virtualization.js +482 -0
- package/components/virtualization/virtualization.js.map +1 -0
- package/components/visually-hidden/visually-hidden.js +1 -1
- package/components/visually-hidden/visually-hidden.js.map +1 -1
- package/custom-elements.json +50649 -38832
- package/extras/chat-markdown-renderer.d.ts +1 -1
- package/extras/chat-markdown-renderer.js.map +1 -1
- package/igniteui-webcomponents.css-data.json +2 -2
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +17 -12
- package/index.js +11 -9
- package/index.js.map +1 -1
- package/internals/abort-handler.js.map +1 -0
- package/internals/context.d.ts +39 -0
- package/{components/common → internals}/context.js +2 -1
- package/internals/context.js.map +1 -0
- package/internals/controllers/adopt-styles.d.ts +76 -0
- package/internals/controllers/adopt-styles.js +173 -0
- package/internals/controllers/adopt-styles.js.map +1 -0
- package/internals/controllers/aria-projection.d.ts +144 -0
- package/internals/controllers/aria-projection.js +138 -0
- package/internals/controllers/aria-projection.js.map +1 -0
- package/{components/common → internals}/controllers/async-consumer.js +8 -7
- package/internals/controllers/async-consumer.js.map +1 -0
- package/internals/controllers/command.js.map +1 -0
- package/internals/controllers/context-provider.d.ts +48 -0
- package/internals/controllers/context-provider.js +29 -0
- package/internals/controllers/context-provider.js.map +1 -0
- package/{components/common → internals}/controllers/drag.js +8 -7
- package/internals/controllers/drag.js.map +1 -0
- package/{components/common → internals}/controllers/focus-ring.js +5 -2
- package/internals/controllers/focus-ring.js.map +1 -0
- package/{components/common → internals}/controllers/fullscreen.js +6 -3
- package/internals/controllers/fullscreen.js.map +1 -0
- package/{components/common → internals}/controllers/gestures.d.ts +1 -1
- package/{components/common → internals}/controllers/gestures.js +7 -4
- package/internals/controllers/gestures.js.map +1 -0
- package/internals/controllers/group.d.ts +64 -0
- package/internals/controllers/group.js +104 -0
- package/internals/controllers/group.js.map +1 -0
- package/{components/common → internals}/controllers/id-resolver.js +15 -21
- package/internals/controllers/id-resolver.js.map +1 -0
- package/{components/common → internals}/controllers/internals.d.ts +52 -3
- package/{components/common → internals}/controllers/internals.js +35 -0
- package/internals/controllers/internals.js.map +1 -0
- package/{components/common → internals}/controllers/key-bindings.d.ts +8 -5
- package/{components/common → internals}/controllers/key-bindings.js +46 -29
- package/internals/controllers/key-bindings.js.map +1 -0
- package/{components/common → internals}/controllers/mutation-observer.d.ts +3 -2
- package/{components/common → internals}/controllers/mutation-observer.js +24 -22
- package/internals/controllers/mutation-observer.js.map +1 -0
- package/{components/common → internals}/controllers/resize-observer.d.ts +11 -1
- package/{components/common → internals}/controllers/resize-observer.js +13 -2
- package/internals/controllers/resize-observer.js.map +1 -0
- package/{components/common → internals}/controllers/root-click.js +8 -13
- package/internals/controllers/root-click.js.map +1 -0
- package/{components/common → internals}/controllers/root-scroll.d.ts +11 -8
- package/internals/controllers/root-scroll.js +71 -0
- package/internals/controllers/root-scroll.js.map +1 -0
- package/internals/controllers/roving-focus.d.ts +72 -0
- package/internals/controllers/roving-focus.js +61 -0
- package/internals/controllers/roving-focus.js.map +1 -0
- package/{components/common → internals}/controllers/slot.d.ts +25 -1
- package/{components/common → internals}/controllers/slot.js +22 -6
- package/internals/controllers/slot.js.map +1 -0
- package/internals/controllers/toggle.d.ts +96 -0
- package/internals/controllers/toggle.js +65 -0
- package/internals/controllers/toggle.js.map +1 -0
- package/internals/date/compare.d.ts +2 -0
- package/internals/date/compare.js +23 -0
- package/internals/date/compare.js.map +1 -0
- package/internals/date/converters.d.ts +18 -0
- package/internals/date/converters.js +70 -0
- package/internals/date/converters.js.map +1 -0
- package/{components/calendar → internals/date}/model.d.ts +10 -3
- package/{components/calendar → internals/date}/model.js +29 -0
- package/internals/date/model.js.map +1 -0
- package/internals/decorators/blazorAdditionalDependencies.js.map +1 -0
- package/internals/decorators/blazorDeepImport.js.map +1 -0
- package/internals/decorators/blazorInclude.js.map +1 -0
- package/internals/decorators/blazorIndirectRender.js.map +1 -0
- package/internals/decorators/blazorSuppressComponent.js.map +1 -0
- package/internals/decorators/coerced-property.d.ts +47 -0
- package/internals/decorators/coerced-property.js +36 -0
- package/internals/decorators/coerced-property.js.map +1 -0
- package/internals/decorators/shadow-options.js.map +1 -0
- package/internals/definitions/defineAllComponents.js +153 -0
- package/internals/definitions/defineAllComponents.js.map +1 -0
- package/internals/definitions/defineComponents.js.map +1 -0
- package/internals/definitions/register.js.map +1 -0
- package/{components/common → internals}/i18n/EN/calendar.resources.js +1 -1
- package/internals/i18n/EN/calendar.resources.js.map +1 -0
- package/internals/i18n/EN/chat.resources.js.map +1 -0
- package/internals/i18n/EN/date-picker.resources.js.map +1 -0
- package/internals/i18n/EN/date-range-picker.resources.js.map +1 -0
- package/{components/common → internals}/i18n/i18n-controller.d.ts +22 -3
- package/{components/common → internals}/i18n/i18n-controller.js +28 -6
- package/internals/i18n/i18n-controller.js.map +1 -0
- package/{components/common → internals}/i18n/utils.js +1 -1
- package/internals/i18n/utils.js.map +1 -0
- package/{components/common → internals}/mixins/alert.d.ts +3 -3
- package/{components/common → internals}/mixins/alert.js +8 -6
- package/internals/mixins/alert.js.map +1 -0
- package/{components/common → internals}/mixins/combo-box.d.ts +13 -14
- package/{components/common → internals}/mixins/combo-box.js +15 -36
- package/internals/mixins/combo-box.js.map +1 -0
- package/internals/mixins/constructor.js.map +1 -0
- package/internals/mixins/event-emitter.js.map +1 -0
- package/{components/common → internals}/mixins/forms/associated-required.js +10 -19
- package/internals/mixins/forms/associated-required.js.map +1 -0
- package/{components/common → internals}/mixins/forms/associated.js +63 -38
- package/internals/mixins/forms/associated.js.map +1 -0
- package/{components/common → internals}/mixins/forms/form-transformers.d.ts +1 -1
- package/{components/common → internals}/mixins/forms/form-transformers.js +2 -2
- package/internals/mixins/forms/form-transformers.js.map +1 -0
- package/internals/mixins/forms/form-value.js.map +1 -0
- package/{components/common → internals}/mixins/forms/types.d.ts +25 -7
- package/internals/mixins/forms/types.js.map +1 -0
- package/internals/mixins/i18n.d.ts +31 -0
- package/internals/mixins/i18n.js +36 -0
- package/internals/mixins/i18n.js.map +1 -0
- package/{components/common → internals}/mixins/mask-behavior.d.ts +17 -8
- package/{components/common → internals}/mixins/mask-behavior.js +118 -31
- package/internals/mixins/mask-behavior.js.map +1 -0
- package/{components/common → internals}/mixins/option.d.ts +0 -2
- package/{components/common → internals}/mixins/option.js +5 -6
- package/internals/mixins/option.js.map +1 -0
- package/internals/part-map.js.map +1 -0
- package/{components/common → internals}/templates/input-shell.d.ts +8 -1
- package/{components/common → internals}/templates/input-shell.js +14 -4
- package/internals/templates/input-shell.js.map +1 -0
- package/{components/common → internals}/templates/masked-input.d.ts +8 -4
- package/{components/common → internals}/templates/masked-input.js +4 -3
- package/internals/templates/masked-input.js.map +1 -0
- package/internals/templates/slotted-icon.d.ts +32 -0
- package/internals/templates/slotted-icon.js +19 -0
- package/internals/templates/slotted-icon.js.map +1 -0
- package/internals/templates/toggle-shell.d.ts +46 -0
- package/internals/templates/toggle-shell.js +38 -0
- package/internals/templates/toggle-shell.js.map +1 -0
- package/internals/timing.d.ts +32 -0
- package/internals/timing.js +20 -0
- package/internals/timing.js.map +1 -0
- package/internals/utils/arrays.d.ts +53 -0
- package/internals/utils/arrays.js +31 -0
- package/internals/utils/arrays.js.map +1 -0
- package/internals/utils/dom.d.ts +114 -0
- package/internals/utils/dom.js +157 -0
- package/internals/utils/dom.js.map +1 -0
- package/internals/utils/events.d.ts +41 -0
- package/internals/utils/events.js +37 -0
- package/internals/utils/events.js.map +1 -0
- package/internals/utils/lit.d.ts +8 -0
- package/internals/utils/lit.js +15 -0
- package/internals/utils/lit.js.map +1 -0
- package/internals/utils/math.d.ts +50 -0
- package/internals/utils/math.js +38 -0
- package/internals/utils/math.js.map +1 -0
- package/internals/utils/objects.d.ts +25 -0
- package/internals/utils/objects.js +125 -0
- package/internals/utils/objects.js.map +1 -0
- package/internals/utils/strings.d.ts +44 -0
- package/internals/utils/strings.js +46 -0
- package/internals/utils/strings.js.map +1 -0
- package/internals/utils/types.d.ts +13 -0
- package/internals/utils/types.js +31 -0
- package/internals/utils/types.js.map +1 -0
- package/{components/common → internals}/validators.d.ts +24 -1
- package/{components/common → internals}/validators.js +25 -2
- package/internals/validators.js.map +1 -0
- package/package.json +15 -7
- package/themes/dark/bootstrap.css +1 -1
- package/themes/dark/fluent.css +1 -1
- package/themes/dark/indigo.css +1 -1
- package/themes/dark/material.css +1 -1
- package/themes/light/bootstrap.css +1 -1
- package/themes/light/fluent.css +1 -1
- package/themes/light/indigo.css +1 -1
- package/themes/light/material.css +1 -1
- package/theming/theming-controller.d.ts +5 -5
- package/theming/theming-controller.js.map +1 -1
- package/web-types.json +3 -3
- package/components/calendar/model.js.map +0 -1
- package/components/combo/combo-list.d.ts +0 -11
- package/components/combo/combo-list.js +0 -13
- package/components/combo/combo-list.js.map +0 -1
- package/components/common/abort-handler.js.map +0 -1
- package/components/common/context.d.ts +0 -25
- package/components/common/context.js.map +0 -1
- package/components/common/controllers/adopt-styles.d.ts +0 -124
- package/components/common/controllers/adopt-styles.js +0 -75
- package/components/common/controllers/adopt-styles.js.map +0 -1
- package/components/common/controllers/async-consumer.js.map +0 -1
- package/components/common/controllers/command.js.map +0 -1
- package/components/common/controllers/drag.js.map +0 -1
- package/components/common/controllers/focus-ring.js.map +0 -1
- package/components/common/controllers/fullscreen.js.map +0 -1
- package/components/common/controllers/gestures.js.map +0 -1
- package/components/common/controllers/id-resolver.js.map +0 -1
- package/components/common/controllers/internals.js.map +0 -1
- package/components/common/controllers/key-bindings.js.map +0 -1
- package/components/common/controllers/mutation-observer.js.map +0 -1
- package/components/common/controllers/resize-observer.js.map +0 -1
- package/components/common/controllers/root-click.js.map +0 -1
- package/components/common/controllers/root-scroll.js +0 -63
- package/components/common/controllers/root-scroll.js.map +0 -1
- package/components/common/controllers/slot.js.map +0 -1
- package/components/common/decorators/blazorAdditionalDependencies.js.map +0 -1
- package/components/common/decorators/blazorDeepImport.js.map +0 -1
- package/components/common/decorators/blazorInclude.js.map +0 -1
- package/components/common/decorators/blazorIndirectRender.js.map +0 -1
- package/components/common/decorators/blazorSuppressComponent.js.map +0 -1
- package/components/common/decorators/shadow-options.js.map +0 -1
- package/components/common/decorators/watch.d.ts +0 -5
- package/components/common/decorators/watch.js +0 -19
- package/components/common/decorators/watch.js.map +0 -1
- package/components/common/definitions/defineAllComponents.js +0 -151
- package/components/common/definitions/defineAllComponents.js.map +0 -1
- package/components/common/definitions/defineComponents.js.map +0 -1
- package/components/common/definitions/register.js.map +0 -1
- package/components/common/i18n/EN/calendar.resources.js.map +0 -1
- package/components/common/i18n/EN/chat.resources.js.map +0 -1
- package/components/common/i18n/EN/date-picker.resources.js.map +0 -1
- package/components/common/i18n/EN/date-range-picker.resources.js.map +0 -1
- package/components/common/i18n/i18n-controller.js.map +0 -1
- package/components/common/i18n/utils.js.map +0 -1
- package/components/common/mixins/alert.js.map +0 -1
- package/components/common/mixins/combo-box.js.map +0 -1
- package/components/common/mixins/constructor.js.map +0 -1
- package/components/common/mixins/event-emitter.js.map +0 -1
- package/components/common/mixins/forms/associated-required.js.map +0 -1
- package/components/common/mixins/forms/associated.js.map +0 -1
- package/components/common/mixins/forms/form-transformers.js.map +0 -1
- package/components/common/mixins/forms/form-value.js.map +0 -1
- package/components/common/mixins/forms/types.js.map +0 -1
- package/components/common/mixins/mask-behavior.js.map +0 -1
- package/components/common/mixins/option.js.map +0 -1
- package/components/common/part-map.js.map +0 -1
- package/components/common/templates/input-shell.js.map +0 -1
- package/components/common/templates/masked-input.js.map +0 -1
- package/components/common/util.d.ts +0 -196
- package/components/common/util.js +0 -390
- package/components/common/util.js.map +0 -1
- package/components/common/validators.js.map +0 -1
- package/components/icon/registry/default-map.d.ts +0 -107
- package/components/icon/registry/default-map.js +0 -25
- package/components/icon/registry/default-map.js.map +0 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js +0 -3
- package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js.map +0 -1
- package/components/radio/utils.d.ts +0 -13
- package/components/radio/utils.js +0 -37
- package/components/radio/utils.js.map +0 -1
- /package/components/{nav-drawer/themes/shared/container/nav-drawer.fluent.css.d.ts → qr-code/themes/dark/qr-code.bootstrap.css.d.ts} +0 -0
- /package/{components/common → internals}/abort-handler.d.ts +0 -0
- /package/{components/common → internals}/abort-handler.js +0 -0
- /package/{components/common → internals}/controllers/async-consumer.d.ts +0 -0
- /package/{components/common → internals}/controllers/command.d.ts +0 -0
- /package/{components/common → internals}/controllers/command.js +0 -0
- /package/{components/common → internals}/controllers/drag.d.ts +0 -0
- /package/{components/common → internals}/controllers/focus-ring.d.ts +0 -0
- /package/{components/common → internals}/controllers/fullscreen.d.ts +0 -0
- /package/{components/common → internals}/controllers/id-resolver.d.ts +0 -0
- /package/{components/common → internals}/controllers/root-click.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorAdditionalDependencies.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorAdditionalDependencies.js +0 -0
- /package/{components/common → internals}/decorators/blazorDeepImport.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorDeepImport.js +0 -0
- /package/{components/common → internals}/decorators/blazorInclude.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorInclude.js +0 -0
- /package/{components/common → internals}/decorators/blazorIndirectRender.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorIndirectRender.js +0 -0
- /package/{components/common → internals}/decorators/blazorSuppressComponent.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorSuppressComponent.js +0 -0
- /package/{components/common → internals}/decorators/shadow-options.d.ts +0 -0
- /package/{components/common → internals}/decorators/shadow-options.js +0 -0
- /package/{components/common → internals}/definitions/defineAllComponents.d.ts +0 -0
- /package/{components/common → internals}/definitions/defineComponents.d.ts +0 -0
- /package/{components/common → internals}/definitions/defineComponents.js +0 -0
- /package/{components/common → internals}/definitions/register.d.ts +0 -0
- /package/{components/common → internals}/definitions/register.js +0 -0
- /package/{components/common → internals}/i18n/EN/calendar.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/chat.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/chat.resources.js +0 -0
- /package/{components/common → internals}/i18n/EN/date-picker.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/date-picker.resources.js +0 -0
- /package/{components/common → internals}/i18n/EN/date-range-picker.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/date-range-picker.resources.js +0 -0
- /package/{components/common → internals}/i18n/utils.d.ts +0 -0
- /package/{components/common → internals}/mixins/constructor.d.ts +0 -0
- /package/{components/common → internals}/mixins/constructor.js +0 -0
- /package/{components/common → internals}/mixins/event-emitter.d.ts +0 -0
- /package/{components/common → internals}/mixins/event-emitter.js +0 -0
- /package/{components/common → internals}/mixins/forms/associated-required.d.ts +0 -0
- /package/{components/common → internals}/mixins/forms/associated.d.ts +0 -0
- /package/{components/common → internals}/mixins/forms/form-value.d.ts +0 -0
- /package/{components/common → internals}/mixins/forms/form-value.js +0 -0
- /package/{components/common → internals}/mixins/forms/types.js +0 -0
- /package/{components/common → internals}/part-map.d.ts +0 -0
- /package/{components/common → internals}/part-map.js +0 -0
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, isServer, LitElement, nothing, } from 'lit';
|
|
8
|
+
import { property, state } from 'lit/decorators.js';
|
|
9
|
+
import { createRef, ref } from 'lit/directives/ref.js';
|
|
10
|
+
import { styleMap } from 'lit/directives/style-map.js';
|
|
11
|
+
import { createResizeObserverController } from '#internals/controllers/resize-observer.js';
|
|
12
|
+
import { registerComponent } from '#internals/definitions/register.js';
|
|
13
|
+
import { EventEmitterMixin } from '#internals/mixins/event-emitter.js';
|
|
14
|
+
import { isLTR } from '#internals/utils/dom.js';
|
|
15
|
+
import { asNumber, clamp } from '#internals/utils/math.js';
|
|
16
|
+
import { VirtualScrollEngine } from './engine.js';
|
|
17
|
+
import { VirtualScrollItemContext, } from './types.js';
|
|
18
|
+
const REMOTE_SCROLLING_THRESHOLD = 5;
|
|
19
|
+
const MAX_LAYOUT_SETTLE_PASSES = 20;
|
|
20
|
+
const MAX_SCROLL_CORRECTION_PASSES = 5;
|
|
21
|
+
const SCROLL_END_TIMEOUT_MS = 2000;
|
|
22
|
+
const SCROLL_OFFSET_EPSILON_PX = 1;
|
|
23
|
+
const DEFAULT_ESTIMATED_ITEM_SIZE = 50;
|
|
24
|
+
const SCROLL_IDLE_MS = 100;
|
|
25
|
+
const LAYOUT_FRAME_TIMEOUT_MS = 100;
|
|
26
|
+
const SUPPORTS_SCROLL_END = !isServer && 'onscrollend' in window;
|
|
27
|
+
const EMPTY_RANGE = Object.freeze({
|
|
28
|
+
startIndex: 0,
|
|
29
|
+
endIndex: -1,
|
|
30
|
+
});
|
|
31
|
+
export default class IgcVirtualScrollComponent extends EventEmitterMixin(LitElement) {
|
|
32
|
+
static { this.tagName = 'igc-virtual-scroll'; }
|
|
33
|
+
static register() {
|
|
34
|
+
registerComponent(IgcVirtualScrollComponent);
|
|
35
|
+
}
|
|
36
|
+
static { this._styleSheet = null; }
|
|
37
|
+
static _getStyleSheet() {
|
|
38
|
+
if (!IgcVirtualScrollComponent._styleSheet) {
|
|
39
|
+
const sheet = new CSSStyleSheet();
|
|
40
|
+
sheet.replaceSync(`
|
|
41
|
+
:where(igc-virtual-scroll) {
|
|
42
|
+
display: block;
|
|
43
|
+
position: relative;
|
|
44
|
+
overflow: auto;
|
|
45
|
+
height: 18.75rem;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
:where(igc-virtual-scroll[orientation='vertical']) {
|
|
49
|
+
overflow-y: auto;
|
|
50
|
+
overflow-x: hidden;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:where(igc-virtual-scroll[orientation='horizontal']) {
|
|
54
|
+
overflow-x: auto;
|
|
55
|
+
overflow-y: hidden;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:where(igc-virtual-scroll) [part="virtualization-track"] {
|
|
59
|
+
position: relative;
|
|
60
|
+
width: 100%;
|
|
61
|
+
min-height: 100%;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:where(igc-virtual-scroll) [part="virtualization-content"] {
|
|
65
|
+
position: absolute;
|
|
66
|
+
top: 0;
|
|
67
|
+
left: 0;
|
|
68
|
+
width: 100%;
|
|
69
|
+
will-change: transform;
|
|
70
|
+
contain: layout style paint;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:where(igc-virtual-scroll[orientation='horizontal']) [part="virtualization-track"] {
|
|
74
|
+
height: 100%;
|
|
75
|
+
width: auto;
|
|
76
|
+
min-height: unset;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
:where(igc-virtual-scroll[orientation='horizontal']) [part="virtualization-content"] {
|
|
80
|
+
display: flex;
|
|
81
|
+
flex-direction: row;
|
|
82
|
+
height: 100%;
|
|
83
|
+
width: auto;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
:where(igc-virtual-scroll[orientation='horizontal']) [part="virtualization-content"] > [data-vs-index] {
|
|
87
|
+
flex-shrink: 0;
|
|
88
|
+
height: 100%;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
:where(igc-virtual-scroll[orientation='horizontal']):dir(rtl) [part="virtualization-content"] {
|
|
92
|
+
left: auto;
|
|
93
|
+
right: 0;
|
|
94
|
+
}
|
|
95
|
+
`);
|
|
96
|
+
IgcVirtualScrollComponent._styleSheet = sheet;
|
|
97
|
+
}
|
|
98
|
+
return IgcVirtualScrollComponent._styleSheet;
|
|
99
|
+
}
|
|
100
|
+
_adoptStyles() {
|
|
101
|
+
if (isServer) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const root = this.getRootNode();
|
|
105
|
+
const sheet = IgcVirtualScrollComponent._getStyleSheet();
|
|
106
|
+
if (!root.adoptedStyleSheets.includes(sheet)) {
|
|
107
|
+
root.adoptedStyleSheets = [...root.adoptedStyleSheets, sheet];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
constructor() {
|
|
111
|
+
super();
|
|
112
|
+
this._engine = new VirtualScrollEngine();
|
|
113
|
+
this._contentRef = createRef();
|
|
114
|
+
this._itemResizeController = createResizeObserverController(this, {
|
|
115
|
+
callback: this._handleItemResize,
|
|
116
|
+
target: null,
|
|
117
|
+
requestUpdate: false,
|
|
118
|
+
});
|
|
119
|
+
this._currentRange = EMPTY_RANGE;
|
|
120
|
+
this._observedItemIndexes = new WeakMap();
|
|
121
|
+
this._lastEmittedState = null;
|
|
122
|
+
this._hasPendingDataRequest = false;
|
|
123
|
+
this._layoutCompletePromise = null;
|
|
124
|
+
this._scrollRequestId = 0;
|
|
125
|
+
this._lastDataRequestIndex = -1;
|
|
126
|
+
this._scrollPosition = 0;
|
|
127
|
+
this._viewportSize = 0;
|
|
128
|
+
this.data = [];
|
|
129
|
+
this.orientation = 'vertical';
|
|
130
|
+
this.overScan = 2;
|
|
131
|
+
this.estimatedItemSize = DEFAULT_ESTIMATED_ITEM_SIZE;
|
|
132
|
+
this.itemTemplate = null;
|
|
133
|
+
this._engine.onSizeChange = () => this.requestUpdate();
|
|
134
|
+
this._handleScroll = this._handleScroll.bind(this);
|
|
135
|
+
createResizeObserverController(this, {
|
|
136
|
+
callback: this._measureViewport,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
createRenderRoot() {
|
|
140
|
+
return this;
|
|
141
|
+
}
|
|
142
|
+
connectedCallback() {
|
|
143
|
+
super.connectedCallback();
|
|
144
|
+
this._adoptStyles();
|
|
145
|
+
this._engine.initMaxBrowserSize(this.ownerDocument);
|
|
146
|
+
this._measureViewport();
|
|
147
|
+
this.addEventListener('scroll', this._handleScroll, { passive: true });
|
|
148
|
+
}
|
|
149
|
+
disconnectedCallback() {
|
|
150
|
+
super.disconnectedCallback();
|
|
151
|
+
this.removeEventListener('scroll', this._handleScroll);
|
|
152
|
+
}
|
|
153
|
+
willUpdate(changed) {
|
|
154
|
+
this._adoptStyles();
|
|
155
|
+
if (changed.has('data')) {
|
|
156
|
+
this._engine.resize(this._items.length, this._normalizedItemSize, this._firstChangedIndex(changed.get('data')));
|
|
157
|
+
this._hasPendingDataRequest = false;
|
|
158
|
+
}
|
|
159
|
+
if (changed.has('estimatedItemSize')) {
|
|
160
|
+
this._engine.updateEstimatedSize(this._normalizedItemSize);
|
|
161
|
+
}
|
|
162
|
+
if (changed.has('orientation')) {
|
|
163
|
+
this._measureViewport();
|
|
164
|
+
this._scrollPosition = this._currentAxisScroll();
|
|
165
|
+
}
|
|
166
|
+
this._currentRange = this._computeRange();
|
|
167
|
+
}
|
|
168
|
+
updated(_changed) {
|
|
169
|
+
this._scheduleItemMeasurement();
|
|
170
|
+
this._checkDataRequest();
|
|
171
|
+
this._emitStateChange();
|
|
172
|
+
}
|
|
173
|
+
render() {
|
|
174
|
+
if (!this.itemTemplate) {
|
|
175
|
+
return html `${nothing}`;
|
|
176
|
+
}
|
|
177
|
+
const items = this._items;
|
|
178
|
+
const range = this._currentRange;
|
|
179
|
+
const count = items.length;
|
|
180
|
+
const isVertical = this._isVertical;
|
|
181
|
+
const trackStyle = isVertical
|
|
182
|
+
? { height: `${this._engine.domSize}px` }
|
|
183
|
+
: { width: `${this._engine.domSize}px` };
|
|
184
|
+
let contentPosition = this._engine.getScrollOffsetForIndex(range.startIndex);
|
|
185
|
+
const physicalRangeSize = this._engine.getPhysicalRangeSize(range.startIndex, range.endIndex);
|
|
186
|
+
contentPosition = clamp(contentPosition, 0, this._engine.domSize - physicalRangeSize);
|
|
187
|
+
const isRTL = !isVertical && !isLTR(this);
|
|
188
|
+
const contentStyle = {
|
|
189
|
+
transform: isVertical
|
|
190
|
+
? `translateY(${contentPosition}px)`
|
|
191
|
+
: `translateX(${isRTL ? -contentPosition : contentPosition}px)`,
|
|
192
|
+
};
|
|
193
|
+
const visibleItems = range.endIndex >= range.startIndex
|
|
194
|
+
? items.slice(range.startIndex, range.endIndex + 1)
|
|
195
|
+
: [];
|
|
196
|
+
return html `
|
|
197
|
+
<div
|
|
198
|
+
part="virtualization-track"
|
|
199
|
+
role="presentation"
|
|
200
|
+
style=${styleMap(trackStyle)}
|
|
201
|
+
>
|
|
202
|
+
<div
|
|
203
|
+
${ref(this._contentRef)}
|
|
204
|
+
part="virtualization-content"
|
|
205
|
+
role="presentation"
|
|
206
|
+
style=${styleMap(contentStyle)}
|
|
207
|
+
>
|
|
208
|
+
${visibleItems.map((item, i) => {
|
|
209
|
+
const itemIndex = range.startIndex + i;
|
|
210
|
+
const ctx = new VirtualScrollItemContext(item, itemIndex, count);
|
|
211
|
+
return html `<div role="presentation" data-vs-index=${itemIndex}>
|
|
212
|
+
${this.itemTemplate(ctx)}
|
|
213
|
+
</div>`;
|
|
214
|
+
})}
|
|
215
|
+
</div>
|
|
216
|
+
</div>
|
|
217
|
+
`;
|
|
218
|
+
}
|
|
219
|
+
get _isVertical() {
|
|
220
|
+
return this.orientation === 'vertical';
|
|
221
|
+
}
|
|
222
|
+
get _normalizedOverScan() {
|
|
223
|
+
return Math.max(0, Math.floor(asNumber(this.overScan, 2)));
|
|
224
|
+
}
|
|
225
|
+
get _normalizedItemSize() {
|
|
226
|
+
const size = asNumber(this.estimatedItemSize);
|
|
227
|
+
return size > 0 ? size : DEFAULT_ESTIMATED_ITEM_SIZE;
|
|
228
|
+
}
|
|
229
|
+
get _items() {
|
|
230
|
+
return this.data ?? [];
|
|
231
|
+
}
|
|
232
|
+
_computeRange() {
|
|
233
|
+
return this.itemTemplate
|
|
234
|
+
? this._engine.getVisibleRange(this._scrollPosition, this._viewportSize, this._normalizedOverScan)
|
|
235
|
+
: EMPTY_RANGE;
|
|
236
|
+
}
|
|
237
|
+
_getAlignedScrollOffset(index, options) {
|
|
238
|
+
const requested = this._isVertical
|
|
239
|
+
? (options?.block ?? 'start')
|
|
240
|
+
: (options?.inline ?? options?.block ?? 'start');
|
|
241
|
+
const current = this._currentAxisScroll();
|
|
242
|
+
if (requested === 'nearest' &&
|
|
243
|
+
this._engine.isIndexInView(index, current, this._viewportSize)) {
|
|
244
|
+
return current;
|
|
245
|
+
}
|
|
246
|
+
const align = requested === 'center' || requested === 'end' ? requested : 'start';
|
|
247
|
+
return this._engine.getAlignedScrollOffset(index, this._viewportSize, align);
|
|
248
|
+
}
|
|
249
|
+
_applyScroll(offset, behavior) {
|
|
250
|
+
if (this._isVertical) {
|
|
251
|
+
this.scrollTo({ top: offset, behavior });
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
this.scrollTo({ left: isLTR(this) ? offset : -offset, behavior });
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
_currentAxisScroll() {
|
|
258
|
+
return this._isVertical
|
|
259
|
+
? this.scrollTop
|
|
260
|
+
: isLTR(this)
|
|
261
|
+
? this.scrollLeft
|
|
262
|
+
: -this.scrollLeft;
|
|
263
|
+
}
|
|
264
|
+
_scrollAndWaitForEnd(offset, behavior) {
|
|
265
|
+
if (Math.abs(this._currentAxisScroll() - offset) < SCROLL_OFFSET_EPSILON_PX) {
|
|
266
|
+
return Promise.resolve();
|
|
267
|
+
}
|
|
268
|
+
return this._withDeadline(SCROLL_END_TIMEOUT_MS, (signal) => {
|
|
269
|
+
const settled = SUPPORTS_SCROLL_END
|
|
270
|
+
? this._waitForScrollEnd(signal)
|
|
271
|
+
: this._waitForScrollIdle(signal);
|
|
272
|
+
this._applyScroll(offset, behavior);
|
|
273
|
+
return settled;
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
_withDeadline(ms, task) {
|
|
277
|
+
const controller = new AbortController();
|
|
278
|
+
return Promise.race([
|
|
279
|
+
task(controller.signal),
|
|
280
|
+
this._timeout(ms, controller.signal),
|
|
281
|
+
]).finally(() => controller.abort());
|
|
282
|
+
}
|
|
283
|
+
_waitForScrollEnd(signal) {
|
|
284
|
+
return new Promise((resolve) => {
|
|
285
|
+
this.addEventListener('scrollend', () => resolve(), {
|
|
286
|
+
once: true,
|
|
287
|
+
signal,
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
_waitForScrollIdle(signal) {
|
|
292
|
+
return new Promise((resolve) => {
|
|
293
|
+
let id = setTimeout(resolve, SCROLL_IDLE_MS);
|
|
294
|
+
this.addEventListener('scroll', () => {
|
|
295
|
+
clearTimeout(id);
|
|
296
|
+
id = setTimeout(resolve, SCROLL_IDLE_MS);
|
|
297
|
+
}, { passive: true, signal });
|
|
298
|
+
signal.addEventListener('abort', () => clearTimeout(id), { once: true });
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
_timeout(ms, signal) {
|
|
302
|
+
return new Promise((resolve) => {
|
|
303
|
+
const id = setTimeout(resolve, ms);
|
|
304
|
+
signal.addEventListener('abort', () => clearTimeout(id), { once: true });
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
_measureViewport() {
|
|
308
|
+
this._viewportSize = this._isVertical
|
|
309
|
+
? this.clientHeight
|
|
310
|
+
: this.clientWidth;
|
|
311
|
+
}
|
|
312
|
+
_handleScroll() {
|
|
313
|
+
this._scrollPosition = this._currentAxisScroll();
|
|
314
|
+
const { startIndex, endIndex } = this._computeRange();
|
|
315
|
+
if (startIndex !== this._currentRange.startIndex ||
|
|
316
|
+
endIndex !== this._currentRange.endIndex) {
|
|
317
|
+
this.requestUpdate();
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
_firstChangedIndex(previous) {
|
|
321
|
+
if (!previous) {
|
|
322
|
+
return 0;
|
|
323
|
+
}
|
|
324
|
+
const items = this._items;
|
|
325
|
+
const shared = Math.min(previous.length, items.length);
|
|
326
|
+
for (let i = 0; i < shared; i++) {
|
|
327
|
+
if (previous[i] !== items[i]) {
|
|
328
|
+
return i;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return shared;
|
|
332
|
+
}
|
|
333
|
+
_handleItemResize(entries) {
|
|
334
|
+
for (const entry of entries) {
|
|
335
|
+
const el = entry.target;
|
|
336
|
+
const index = asNumber(el.dataset.vsIndex, -1);
|
|
337
|
+
if (index < 0)
|
|
338
|
+
continue;
|
|
339
|
+
const measured = this._isVertical
|
|
340
|
+
? (entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height)
|
|
341
|
+
: (entry.borderBoxSize?.[0]?.inlineSize ?? entry.contentRect.width);
|
|
342
|
+
if (measured > 0) {
|
|
343
|
+
this._engine.measureItem(index, measured);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
_scheduleItemMeasurement() {
|
|
348
|
+
const content = this._contentRef.value;
|
|
349
|
+
if (!content)
|
|
350
|
+
return;
|
|
351
|
+
const observed = this._itemResizeController.targets;
|
|
352
|
+
for (const element of observed) {
|
|
353
|
+
if (element.parentNode !== content) {
|
|
354
|
+
this._itemResizeController.unobserve(element);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
for (const element of content.children) {
|
|
358
|
+
const index = asNumber(element.dataset.vsIndex, -1);
|
|
359
|
+
const isObserved = observed.has(element);
|
|
360
|
+
if (isObserved && this._observedItemIndexes.get(element) === index) {
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
if (isObserved) {
|
|
364
|
+
this._itemResizeController.unobserve(element);
|
|
365
|
+
}
|
|
366
|
+
this._itemResizeController.observe(element);
|
|
367
|
+
this._observedItemIndexes.set(element, index);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
_emitStateChange() {
|
|
371
|
+
const { startIndex, endIndex } = this._currentRange;
|
|
372
|
+
if (endIndex < startIndex)
|
|
373
|
+
return;
|
|
374
|
+
const previous = this._lastEmittedState;
|
|
375
|
+
const detail = {
|
|
376
|
+
startIndex,
|
|
377
|
+
endIndex,
|
|
378
|
+
viewportSize: this._viewportSize,
|
|
379
|
+
totalSize: this._engine.totalSize,
|
|
380
|
+
};
|
|
381
|
+
if (previous &&
|
|
382
|
+
previous.startIndex === detail.startIndex &&
|
|
383
|
+
previous.endIndex === detail.endIndex &&
|
|
384
|
+
previous.viewportSize === detail.viewportSize &&
|
|
385
|
+
previous.totalSize === detail.totalSize) {
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
this._lastEmittedState = { ...detail };
|
|
389
|
+
this.emitEvent('igcStateChange', { detail });
|
|
390
|
+
}
|
|
391
|
+
_checkDataRequest() {
|
|
392
|
+
if (this._hasPendingDataRequest)
|
|
393
|
+
return;
|
|
394
|
+
const range = this._currentRange;
|
|
395
|
+
const total = this._items.length;
|
|
396
|
+
if (total === 0 || range.endIndex < total - REMOTE_SCROLLING_THRESHOLD) {
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
if (this._lastDataRequestIndex === total) {
|
|
400
|
+
return;
|
|
401
|
+
}
|
|
402
|
+
this._hasPendingDataRequest = true;
|
|
403
|
+
this._lastDataRequestIndex = total;
|
|
404
|
+
this.emitEvent('igcDataRequest', {
|
|
405
|
+
detail: {
|
|
406
|
+
startIndex: total,
|
|
407
|
+
count: Math.max(this._normalizedOverScan * 4, 20),
|
|
408
|
+
},
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
_nextFrame() {
|
|
412
|
+
return this._withDeadline(LAYOUT_FRAME_TIMEOUT_MS, (signal) => new Promise((resolve) => {
|
|
413
|
+
const id = requestAnimationFrame(() => resolve());
|
|
414
|
+
signal.addEventListener('abort', () => cancelAnimationFrame(id), {
|
|
415
|
+
once: true,
|
|
416
|
+
});
|
|
417
|
+
}));
|
|
418
|
+
}
|
|
419
|
+
async _resolveLayoutComplete() {
|
|
420
|
+
try {
|
|
421
|
+
await this.updateComplete;
|
|
422
|
+
for (let i = 0; i < MAX_LAYOUT_SETTLE_PASSES; i++) {
|
|
423
|
+
await this._nextFrame();
|
|
424
|
+
if (!this.isUpdatePending) {
|
|
425
|
+
break;
|
|
426
|
+
}
|
|
427
|
+
await this.updateComplete;
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
finally {
|
|
431
|
+
this._layoutCompletePromise = null;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
get layoutComplete() {
|
|
435
|
+
if (!this._layoutCompletePromise) {
|
|
436
|
+
this._layoutCompletePromise = this._resolveLayoutComplete();
|
|
437
|
+
}
|
|
438
|
+
return this._layoutCompletePromise;
|
|
439
|
+
}
|
|
440
|
+
async scrollToIndex(index, options) {
|
|
441
|
+
const maxIndex = Math.max(0, this._items.length - 1);
|
|
442
|
+
const clampedIndex = clamp(index, 0, maxIndex);
|
|
443
|
+
const behavior = options?.behavior ?? 'auto';
|
|
444
|
+
const requestId = ++this._scrollRequestId;
|
|
445
|
+
let offset = this._getAlignedScrollOffset(clampedIndex, options);
|
|
446
|
+
await this._scrollAndWaitForEnd(offset, behavior);
|
|
447
|
+
for (let i = 0; i < MAX_SCROLL_CORRECTION_PASSES; i++) {
|
|
448
|
+
await this.layoutComplete;
|
|
449
|
+
if (requestId !== this._scrollRequestId) {
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
const corrected = this._getAlignedScrollOffset(clampedIndex, options);
|
|
453
|
+
if (Math.abs(corrected - offset) < SCROLL_OFFSET_EPSILON_PX) {
|
|
454
|
+
break;
|
|
455
|
+
}
|
|
456
|
+
offset = corrected;
|
|
457
|
+
await this._scrollAndWaitForEnd(offset, 'auto');
|
|
458
|
+
if (requestId !== this._scrollRequestId) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
__decorate([
|
|
465
|
+
state()
|
|
466
|
+
], IgcVirtualScrollComponent.prototype, "_viewportSize", void 0);
|
|
467
|
+
__decorate([
|
|
468
|
+
property({ attribute: false })
|
|
469
|
+
], IgcVirtualScrollComponent.prototype, "data", void 0);
|
|
470
|
+
__decorate([
|
|
471
|
+
property({ reflect: true })
|
|
472
|
+
], IgcVirtualScrollComponent.prototype, "orientation", void 0);
|
|
473
|
+
__decorate([
|
|
474
|
+
property({ type: Number, attribute: 'over-scan' })
|
|
475
|
+
], IgcVirtualScrollComponent.prototype, "overScan", void 0);
|
|
476
|
+
__decorate([
|
|
477
|
+
property({ type: Number, attribute: 'estimated-item-size' })
|
|
478
|
+
], IgcVirtualScrollComponent.prototype, "estimatedItemSize", void 0);
|
|
479
|
+
__decorate([
|
|
480
|
+
property({ attribute: false })
|
|
481
|
+
], IgcVirtualScrollComponent.prototype, "itemTemplate", void 0);
|
|
482
|
+
//# sourceMappingURL=virtualization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtualization.js","sourceRoot":"","sources":["../../../src/components/virtualization/virtualization.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n isServer,\n LitElement,\n nothing,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { createResizeObserverController } from '#internals/controllers/resize-observer.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { isLTR } from '#internals/utils/dom.js';\nimport { asNumber, clamp } from '#internals/utils/math.js';\nimport { VirtualScrollEngine } from './engine.js';\nimport {\n type ScrollAlignment,\n type VirtualScrollDataRequest,\n VirtualScrollItemContext,\n type VirtualScrollState,\n type VisibleRange,\n} from './types.js';\n\nexport type VirtualScrollItemTemplate<T> = (\n context: VirtualScrollItemContext<T>\n) => TemplateResult | typeof nothing;\n\nexport interface IgcVirtualScrollComponentEventMap {\n igcStateChange: CustomEvent<VirtualScrollState>;\n igcDataRequest: CustomEvent<VirtualScrollDataRequest>;\n}\n\nconst REMOTE_SCROLLING_THRESHOLD = 5;\nconst MAX_LAYOUT_SETTLE_PASSES = 20;\nconst MAX_SCROLL_CORRECTION_PASSES = 5;\nconst SCROLL_END_TIMEOUT_MS = 2000;\nconst SCROLL_OFFSET_EPSILON_PX = 1;\n/** Fallback for a non-positive `estimatedItemSize`. Equal to its default. */\nconst DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n/** How long the scroll position must stay unchanged to count as settled. */\nconst SCROLL_IDLE_MS = 100;\n/**\n * Upper limit on one `requestAnimationFrame` wait. A hidden tab or a\n * disconnected element gets no frames, and `layoutComplete` must still\n * resolve there.\n */\nconst LAYOUT_FRAME_TIMEOUT_MS = 100;\n\n/**\n * `scrollend` reports exactly when a scroll has settled. Safari before 18.2\n * does not have it, and `_scrollAndWaitForEnd` falls back to a scroll-idle\n * timer there.\n */\nconst SUPPORTS_SCROLL_END = !isServer && 'onscrollend' in window;\n\nconst EMPTY_RANGE: VisibleRange = Object.freeze({\n startIndex: 0,\n endIndex: -1,\n});\n\n/**\n * A virtual scroll component for large lists. Only the items visible in the\n * viewport are rendered.\n *\n * @element igc-virtual-scroll\n *\n * @fires igcStateChange - Emitted when the rendered virtual window changes.\n * @fires igcDataRequest - Emitted when the rendered window comes within a few items of the end\n * of `data`. Also emitted on the first render, when the loaded items do not fill the viewport.\n *\n * @csspart virtualization-track - The full-size element that gives the host its scrollable extent.\n * @csspart virtualization-content - The wrapper that holds the rendered items, translated into\n * position within the track.\n */\nexport default class IgcVirtualScrollComponent<\n T = any,\n> extends EventEmitterMixin<\n IgcVirtualScrollComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-virtual-scroll';\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcVirtualScrollComponent);\n }\n\n private static _styleSheet: CSSStyleSheet | null = null;\n\n private static _getStyleSheet(): CSSStyleSheet {\n if (!IgcVirtualScrollComponent._styleSheet) {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(`\n :where(igc-virtual-scroll) {\n display: block;\n position: relative;\n overflow: auto;\n height: 18.75rem;\n }\n\n :where(igc-virtual-scroll[orientation='vertical']) {\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n :where(igc-virtual-scroll[orientation='horizontal']) {\n overflow-x: auto;\n overflow-y: hidden;\n }\n\n :where(igc-virtual-scroll) [part=\"virtualization-track\"] {\n position: relative;\n width: 100%;\n min-height: 100%;\n }\n\n :where(igc-virtual-scroll) [part=\"virtualization-content\"] {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n will-change: transform;\n contain: layout style paint;\n }\n\n :where(igc-virtual-scroll[orientation='horizontal']) [part=\"virtualization-track\"] {\n height: 100%;\n width: auto;\n min-height: unset;\n }\n\n :where(igc-virtual-scroll[orientation='horizontal']) [part=\"virtualization-content\"] {\n display: flex;\n flex-direction: row;\n height: 100%;\n width: auto;\n }\n\n :where(igc-virtual-scroll[orientation='horizontal']) [part=\"virtualization-content\"] > [data-vs-index] {\n flex-shrink: 0;\n height: 100%;\n }\n\n :where(igc-virtual-scroll[orientation='horizontal']):dir(rtl) [part=\"virtualization-content\"] {\n left: auto;\n right: 0;\n }\n `);\n IgcVirtualScrollComponent._styleSheet = sheet;\n }\n return IgcVirtualScrollComponent._styleSheet;\n }\n\n //#region Internal state\n\n protected readonly _engine = new VirtualScrollEngine();\n private readonly _contentRef = createRef<HTMLDivElement>();\n private readonly _itemResizeController = createResizeObserverController(\n this,\n {\n callback: this._handleItemResize,\n target: null,\n requestUpdate: false,\n }\n );\n\n private _currentRange: VisibleRange = EMPTY_RANGE;\n\n /**\n * The item index each wrapper element was last observed under. Lit reuses\n * the wrapper elements across renders. After a scroll, the same element\n * can host a different item at an identical size, and a ResizeObserver\n * does not report that. See `_scheduleItemMeasurement`.\n */\n private readonly _observedItemIndexes = new WeakMap<Element, number>();\n private _lastEmittedState: VirtualScrollState | null = null;\n private _hasPendingDataRequest = false;\n private _layoutCompletePromise: Promise<void> | null = null;\n private _scrollRequestId = 0;\n\n /**\n * The `startIndex` of the last emitted `igcDataRequest`, which is also the\n * item count at that emit. See `_checkDataRequest`.\n *\n * Kept across a disconnect, like `_hasPendingDataRequest`: a move in the\n * DOM does not undo what the consumer was already asked for. If only one\n * of the two were cleared, the request loop would reopen on reconnect.\n */\n private _lastDataRequestIndex = -1;\n\n /**\n * The live scroll offset on the active axis. Not reactive by design:\n * `render` reads it only through `_currentRange`, so `_handleScroll`\n * schedules an update only when the window moves.\n */\n private _scrollPosition = 0;\n\n @state()\n private _viewportSize = 0;\n\n //#endregion\n\n //#region Public properties\n\n /**\n * The array of items to virtualize.\n *\n * Compared by reference: a mutation in place (`data.push(...)`) causes no\n * update. Assign a new array instead. The `igcDataRequest` flow also\n * expects a new array.\n */\n @property({ attribute: false })\n public data: T[] = [];\n\n /**\n * Scroll orientation of the virtual scroll.\n * @attr orientation\n * @default 'vertical'\n */\n @property({ reflect: true })\n public orientation: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * Number of extra items to render beyond the visible area of the viewport.\n * Higher values reduce blank flashes during fast scrolling but can lower performance.\n * @attr over-scan\n * @default 2\n */\n @property({ type: Number, attribute: 'over-scan' })\n public overScan = 2;\n\n /**\n * Estimated item size in pixels, used before an item is measured in the DOM.\n * After the first render of an item, the engine replaces the estimate with the measured size.\n * @attr estimated-item-size\n * @default 50\n */\n @property({ type: Number, attribute: 'estimated-item-size' })\n public estimatedItemSize = DEFAULT_ESTIMATED_ITEM_SIZE;\n\n /**\n * A function that renders each item in the virtual scroll list.\n * Receives a VirtualScrollItemContext<T> with the item data, its index, and the total count.\n * Without it, nothing is rendered.\n *\n * Items are measured by their border box, so margins accumulate as drift\n * down the list. Use padding on the item, or a gap on a wrapper, instead.\n *\n * Only the current window is in the DOM, so assistive technology cannot\n * infer an item's position from the markup. Templates that render a role\n * with set semantics (`option`, `listitem`, `row`, ...) should map the\n * context's `index` and `count` onto `aria-posinset` and `aria-setsize`.\n */\n @property({ attribute: false })\n public itemTemplate: VirtualScrollItemTemplate<T> | null = null;\n\n //#endregion\n\n private _adoptStyles(): void {\n /* c8 ignore next 3 */\n if (isServer) {\n return;\n }\n\n const root = this.getRootNode() as Document | ShadowRoot;\n const sheet = IgcVirtualScrollComponent._getStyleSheet();\n if (!root.adoptedStyleSheets.includes(sheet)) {\n root.adoptedStyleSheets = [...root.adoptedStyleSheets, sheet];\n }\n }\n\n constructor() {\n super();\n this._engine.onSizeChange = () => this.requestUpdate();\n this._handleScroll = this._handleScroll.bind(this);\n\n // Viewport resize observer\n createResizeObserverController(this, {\n callback: this._measureViewport,\n });\n }\n\n //#region Lit lifecycle\n\n /** @internal */\n public override createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this._adoptStyles();\n this._engine.initMaxBrowserSize(this.ownerDocument);\n this._measureViewport();\n this.addEventListener('scroll', this._handleScroll, { passive: true });\n }\n\n /** @internal */\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('scroll', this._handleScroll);\n }\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n // TODO: Either fix this in the theming controller or come up with some other solution.\n\n // Verified on every update, not only in `connectedCallback`; a no-op\n // when the sheet is already present. A host that renders this component\n // in its own shadow root (for example, combo) can have that root's\n // `adoptedStyleSheets` replaced by its theming logic. That drops this\n // sheet without this element reconnecting.\n this._adoptStyles();\n\n if (changed.has('data')) {\n this._engine.resize(\n this._items.length,\n this._normalizedItemSize,\n this._firstChangedIndex(changed.get('data'))\n );\n this._hasPendingDataRequest = false;\n }\n\n if (changed.has('estimatedItemSize')) {\n this._engine.updateEstimatedSize(this._normalizedItemSize);\n }\n\n if (changed.has('orientation')) {\n this._measureViewport();\n this._scrollPosition = this._currentAxisScroll();\n }\n\n this._currentRange = this._computeRange();\n }\n\n protected override updated(_changed: PropertyValues<this>): void {\n this._scheduleItemMeasurement();\n this._checkDataRequest();\n this._emitStateChange();\n }\n\n protected override render(): TemplateResult {\n if (!this.itemTemplate) {\n return html`${nothing}`;\n }\n\n const items = this._items;\n const range = this._currentRange;\n const count = items.length;\n const isVertical = this._isVertical;\n\n const trackStyle = isVertical\n ? { height: `${this._engine.domSize}px` }\n : { width: `${this._engine.domSize}px` };\n\n // The content wrapper is absolutely positioned at the origin of a track\n // that is `domSize` px tall or wide. A translation to the first rendered\n // item's scroll offset puts that item at its virtual position.\n let contentPosition = this._engine.getScrollOffsetForIndex(\n range.startIndex\n );\n const physicalRangeSize = this._engine.getPhysicalRangeSize(\n range.startIndex,\n range.endIndex\n );\n contentPosition = clamp(\n contentPosition,\n 0,\n this._engine.domSize - physicalRangeSize\n );\n const isRTL = !isVertical && !isLTR(this);\n const contentStyle = {\n transform: isVertical\n ? `translateY(${contentPosition}px)`\n : `translateX(${isRTL ? -contentPosition : contentPosition}px)`,\n };\n\n const visibleItems =\n range.endIndex >= range.startIndex\n ? items.slice(range.startIndex, range.endIndex + 1)\n : [];\n\n return html`\n <div\n part=\"virtualization-track\"\n role=\"presentation\"\n style=${styleMap(trackStyle)}\n >\n <div\n ${ref(this._contentRef)}\n part=\"virtualization-content\"\n role=\"presentation\"\n style=${styleMap(contentStyle)}\n >\n ${visibleItems.map((item, i) => {\n const itemIndex = range.startIndex + i;\n const ctx = new VirtualScrollItemContext(item, itemIndex, count);\n return html`<div role=\"presentation\" data-vs-index=${itemIndex}>\n ${this.itemTemplate!(ctx)}\n </div>`;\n })}\n </div>\n </div>\n `;\n }\n\n //#endregion\n\n //#region Internal API\n\n private get _isVertical(): boolean {\n return this.orientation === 'vertical';\n }\n\n /** The configured `overScan`, normalized to a non-negative integer. */\n private get _normalizedOverScan(): number {\n return Math.max(0, Math.floor(asNumber(this.overScan, 2)));\n }\n\n /** The configured `estimatedItemSize`, normalized to a positive number. */\n private get _normalizedItemSize(): number {\n const size = asNumber(this.estimatedItemSize);\n return size > 0 ? size : DEFAULT_ESTIMATED_ITEM_SIZE;\n }\n\n /** `data`, guarded against a nullish value set by the consumer. */\n private get _items(): T[] {\n return this.data ?? [];\n }\n\n /**\n * The window to render for the current scroll position and viewport. Empty\n * until an `itemTemplate` is set, because nothing renders without one.\n */\n private _computeRange(): VisibleRange {\n return this.itemTemplate\n ? this._engine.getVisibleRange(\n this._scrollPosition,\n this._viewportSize,\n this._normalizedOverScan\n )\n : EMPTY_RANGE;\n }\n\n /**\n * The scroll offset that aligns `index` in the viewport according to\n * `options`, from the engine's current size data. As more items are\n * measured, the same input can give a different, more accurate result.\n *\n * For `block: 'nearest'` on an item already in view, returns the current\n * offset, so no scroll occurs.\n */\n private _getAlignedScrollOffset(\n index: number,\n options?: ScrollIntoViewOptions\n ): number {\n const requested = this._isVertical\n ? (options?.block ?? 'start')\n : (options?.inline ?? options?.block ?? 'start');\n const current = this._currentAxisScroll();\n\n if (\n requested === 'nearest' &&\n this._engine.isIndexInView(index, current, this._viewportSize)\n ) {\n return current;\n }\n\n const align: ScrollAlignment =\n requested === 'center' || requested === 'end' ? requested : 'start';\n\n return this._engine.getAlignedScrollOffset(\n index,\n this._viewportSize,\n align\n );\n }\n\n /** Applies a scroll offset to the correct axis, accounting for RTL. */\n private _applyScroll(offset: number, behavior: ScrollBehavior): void {\n if (this._isVertical) {\n this.scrollTo({ top: offset, behavior });\n } else {\n this.scrollTo({ left: isLTR(this) ? offset : -offset, behavior });\n }\n }\n\n /** The current real scroll position on the active axis, normalized for RTL. */\n private _currentAxisScroll(): number {\n return this._isVertical\n ? this.scrollTop\n : isLTR(this)\n ? this.scrollLeft\n : -this.scrollLeft;\n }\n\n /**\n * Applies a scroll offset to the active axis and waits for the scroll,\n * instant or smooth, to settle.\n *\n * `scrollend` does not fire when the requested offset does not move the\n * scroll position, so that case resolves immediately. The timeout covers\n * an event that never arrives, for example when the element disconnects\n * mid-scroll.\n */\n private _scrollAndWaitForEnd(\n offset: number,\n behavior: ScrollBehavior\n ): Promise<void> {\n if (\n Math.abs(this._currentAxisScroll() - offset) < SCROLL_OFFSET_EPSILON_PX\n ) {\n return Promise.resolve();\n }\n\n return this._withDeadline(SCROLL_END_TIMEOUT_MS, (signal) => {\n const settled = SUPPORTS_SCROLL_END\n ? this._waitForScrollEnd(signal)\n : this._waitForScrollIdle(signal);\n\n // Applied only after the listener is attached, so an instant scroll\n // cannot settle before something watches for it.\n this._applyScroll(offset, behavior);\n return settled;\n });\n }\n\n /**\n * Resolves with `task` or with a deadline of `ms`, whichever comes first.\n * The signal then tears down the other, so no live timer or dangling\n * listener remains.\n */\n private _withDeadline(\n ms: number,\n task: (signal: AbortSignal) => Promise<void>\n ): Promise<void> {\n const controller = new AbortController();\n\n return Promise.race([\n task(controller.signal),\n this._timeout(ms, controller.signal),\n ]).finally(() => controller.abort());\n }\n\n private _waitForScrollEnd(signal: AbortSignal): Promise<void> {\n return new Promise((resolve) => {\n this.addEventListener('scrollend', () => resolve(), {\n once: true,\n signal,\n });\n });\n }\n\n /**\n * Resolves when no `scroll` event arrives for `SCROLL_IDLE_MS`: the\n * closest replacement for `scrollend`. The first timer starts immediately,\n * so a scroll that does not move still settles.\n */\n private _waitForScrollIdle(signal: AbortSignal): Promise<void> {\n return new Promise((resolve) => {\n let id = setTimeout(resolve, SCROLL_IDLE_MS);\n\n this.addEventListener(\n 'scroll',\n () => {\n clearTimeout(id);\n id = setTimeout(resolve, SCROLL_IDLE_MS);\n },\n { passive: true, signal }\n );\n\n signal.addEventListener('abort', () => clearTimeout(id), { once: true });\n });\n }\n\n private _timeout(ms: number, signal: AbortSignal): Promise<void> {\n return new Promise((resolve) => {\n const id = setTimeout(resolve, ms);\n signal.addEventListener('abort', () => clearTimeout(id), { once: true });\n });\n }\n\n private _measureViewport(): void {\n this._viewportSize = this._isVertical\n ? this.clientHeight\n : this.clientWidth;\n }\n\n /**\n * Records the new scroll offset. Schedules a render only when the rendered\n * window moves.\n *\n * `render` derives the track size, the content translate, and the item\n * slice from `_currentRange`, not from the scroll offset. Without the\n * guard, a scroll inside one item would re-run each item template for an\n * identical result. `willUpdate` still recomputes `_currentRange` for each\n * other trigger, so this suppresses only redundant passes, never a needed\n * one.\n */\n private _handleScroll(): void {\n this._scrollPosition = this._currentAxisScroll();\n\n const { startIndex, endIndex } = this._computeRange();\n if (\n startIndex !== this._currentRange.startIndex ||\n endIndex !== this._currentRange.endIndex\n ) {\n this.requestUpdate();\n }\n }\n\n /**\n * The number of leading items that kept their identity across a `data`\n * change: the index of the first item whose measured size no longer\n * matches its rendered content. An append (the `igcDataRequest` flow)\n * retains all items. A filter or a replacement retains only the unchanged\n * prefix.\n */\n private _firstChangedIndex(previous: T[] | undefined): number {\n if (!previous) {\n return 0;\n }\n\n const items = this._items;\n const shared = Math.min(previous.length, items.length);\n for (let i = 0; i < shared; i++) {\n if (previous[i] !== items[i]) {\n return i;\n }\n }\n return shared;\n }\n\n private _handleItemResize(entries: ResizeObserverEntry[]): void {\n for (const entry of entries) {\n const el = entry.target as HTMLElement;\n const index = asNumber(el.dataset.vsIndex, -1);\n if (index < 0) continue;\n\n const measured = this._isVertical\n ? (entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height)\n : (entry.borderBoxSize?.[0]?.inlineSize ?? entry.contentRect.width);\n\n if (measured > 0) {\n this._engine.measureItem(index, measured);\n }\n }\n }\n\n /**\n * Synchronizes the item observer with the rendered window and applies only\n * the difference. A newly observed element gets one initial measurement.\n * An `observe` call on an already observed element is a no-op, so a\n * re-measurement on demand requires re-registration: unobserve, then\n * observe.\n *\n * Re-registration is applied to each element whose `data-vs-index`\n * changed. Lit reuses the wrapper elements across renders, so after a\n * scroll the same element can host a different item at an identical size.\n * The observer does not report that, and the new index would keep its\n * estimated size.\n */\n private _scheduleItemMeasurement(): void {\n const content = this._contentRef.value;\n if (!content) return;\n\n const observed = this._itemResizeController.targets;\n\n for (const element of observed) {\n if (element.parentNode !== content) {\n this._itemResizeController.unobserve(element);\n }\n }\n\n for (const element of content.children) {\n const index = asNumber((element as HTMLElement).dataset.vsIndex, -1);\n const isObserved = observed.has(element);\n\n if (isObserved && this._observedItemIndexes.get(element) === index) {\n continue;\n }\n\n if (isObserved) {\n this._itemResizeController.unobserve(element);\n }\n this._itemResizeController.observe(element);\n this._observedItemIndexes.set(element, index);\n }\n }\n\n /**\n * Emits `igcStateChange`. Skipped when the window is empty or equal to the\n * last reported one, because measurement passes re-render without a window\n * change.\n */\n private _emitStateChange(): void {\n const { startIndex, endIndex } = this._currentRange;\n if (endIndex < startIndex) return;\n\n const previous = this._lastEmittedState;\n const detail: VirtualScrollState = {\n startIndex,\n endIndex,\n viewportSize: this._viewportSize,\n totalSize: this._engine.totalSize,\n };\n\n if (\n previous &&\n previous.startIndex === detail.startIndex &&\n previous.endIndex === detail.endIndex &&\n previous.viewportSize === detail.viewportSize &&\n previous.totalSize === detail.totalSize\n ) {\n return;\n }\n\n this._lastEmittedState = { ...detail };\n this.emitEvent('igcStateChange', { detail });\n }\n\n private _checkDataRequest(): void {\n if (this._hasPendingDataRequest) return;\n\n const range = this._currentRange;\n const total = this._items.length;\n\n if (total === 0 || range.endIndex < total - REMOTE_SCROLLING_THRESHOLD) {\n return;\n }\n\n // Each `data` change clears `_hasPendingDataRequest`, including one that\n // appends nothing. Without this second guard, a consumer whose source is\n // exhausted, and that reassigns `data` in response to a request, would\n // receive the same request on each reassignment.\n if (this._lastDataRequestIndex === total) {\n return;\n }\n\n this._hasPendingDataRequest = true;\n this._lastDataRequestIndex = total;\n\n this.emitEvent('igcDataRequest', {\n detail: {\n startIndex: total,\n count: Math.max(this._normalizedOverScan * 4, 20),\n },\n });\n }\n\n /**\n * Resolves on the next animation frame, or after `LAYOUT_FRAME_TIMEOUT_MS`\n * when no frame arrives. A hidden tab or a disconnected element gets no\n * frames, and `layoutComplete` must still settle there. That state has no\n * layout to wait for, so an early resolve is safe.\n */\n private _nextFrame(): Promise<void> {\n return this._withDeadline(\n LAYOUT_FRAME_TIMEOUT_MS,\n (signal) =>\n new Promise((resolve) => {\n const id = requestAnimationFrame(() => resolve());\n signal.addEventListener('abort', () => cancelAnimationFrame(id), {\n once: true,\n });\n })\n );\n }\n\n /**\n * Waits for the current update, then lets ResizeObserver item measurements\n * run. When those schedule a follow-up render, for example an estimate\n * replaced by a measured size, the wait repeats until nothing is pending,\n * up to a safety cap.\n */\n private async _resolveLayoutComplete(): Promise<void> {\n try {\n await this.updateComplete;\n\n for (let i = 0; i < MAX_LAYOUT_SETTLE_PASSES; i++) {\n await this._nextFrame();\n\n if (!this.isUpdatePending) {\n break;\n }\n\n await this.updateComplete;\n }\n } finally {\n // Cleared here, not after the loop, so a run that throws cannot leave\n // the getter with a permanently rejected promise.\n this._layoutCompletePromise = null;\n }\n }\n\n //#endregion\n\n //#region Public API\n\n /* blazorSuppress */\n /**\n * Resolves when the virtual scroll has settled: the current render pass is\n * complete, the item-size measurements it triggers are complete, and so\n * are the renders those measurements schedule.\n *\n * `updateComplete` covers one Lit render pass. This covers `data` changes,\n * scrolls, and viewport resizes, where the stable DOM state comes after\n * one or more follow-up renders.\n */\n public get layoutComplete(): Promise<void> {\n if (!this._layoutCompletePromise) {\n this._layoutCompletePromise = this._resolveLayoutComplete();\n }\n return this._layoutCompletePromise;\n }\n\n /**\n * Scrolls to the specified item index.\n *\n * Items outside the rendered window have only an estimated size, so the\n * first jump can miss the target. The items at the landing point are then\n * measured, and the scroll position is corrected. This repeats until the\n * offset is stable.\n *\n * The returned promise resolves when the scroll settles on the final,\n * corrected offset. Callers that need only the first, approximate scroll\n * can ignore it.\n */\n public async scrollToIndex(\n index: number,\n options?: ScrollIntoViewOptions\n ): Promise<void> {\n const maxIndex = Math.max(0, this._items.length - 1);\n const clampedIndex = clamp(index, 0, maxIndex);\n const behavior = options?.behavior ?? 'auto';\n\n // A newer call supersedes a correction loop that still runs for a\n // previous call, for example under rapid, repeated calls.\n const requestId = ++this._scrollRequestId;\n\n let offset = this._getAlignedScrollOffset(clampedIndex, options);\n await this._scrollAndWaitForEnd(offset, behavior);\n\n for (let i = 0; i < MAX_SCROLL_CORRECTION_PASSES; i++) {\n await this.layoutComplete;\n\n if (requestId !== this._scrollRequestId) {\n return;\n }\n\n const corrected = this._getAlignedScrollOffset(clampedIndex, options);\n if (Math.abs(corrected - offset) < SCROLL_OFFSET_EPSILON_PX) {\n break;\n }\n\n offset = corrected;\n await this._scrollAndWaitForEnd(offset, 'auto');\n\n if (requestId !== this._scrollRequestId) {\n return;\n }\n }\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-virtual-scroll': IgcVirtualScrollComponent;\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { css, html, LitElement } from 'lit';
|
|
2
|
-
import { registerComponent } from '
|
|
2
|
+
import { registerComponent } from '#internals/definitions/register.js';
|
|
3
3
|
export default class IgcVisuallyHiddenComponent extends LitElement {
|
|
4
4
|
static { this.tagName = 'igc-visually-hidden'; }
|
|
5
5
|
static { this.styles = css `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visually-hidden.js","sourceRoot":"","sources":["../../../src/components/visually-hidden/visually-hidden.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"visually-hidden.js","sourceRoot":"","sources":["../../../src/components/visually-hidden/visually-hidden.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAwCvE,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,UAAU;aACzC,YAAO,GAAG,qBAAqB,CAAC;aAEhC,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;GAalC,CAAC;IAGK,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { registerComponent } from '#internals/definitions/register.js';\n\n/* blazorSuppress */\n/**\n * A utility component that visually hides its content while keeping it\n * accessible to screen readers and other assistive technologies.\n *\n * The content is only visible when it receives focus, making it ideal for\n * skip navigation links and other focus-based accessibility patterns.\n *\n * @element igc-visually-hidden\n *\n * @slot - Default slot for the visually hidden content.\n *\n * @example\n * ```html\n * <!-- Hide a label visually while keeping it accessible -->\n * <igc-visually-hidden>\n * <label for=\"search\">Search</label>\n * </igc-visually-hidden>\n * <input id=\"search\" type=\"search\" placeholder=\"Search...\" />\n * ```\n *\n * @example\n * ```html\n * <!-- Skip navigation link that becomes visible on focus -->\n * <igc-visually-hidden>\n * <a href=\"#main-content\">Skip to main content</a>\n * </igc-visually-hidden>\n * ```\n *\n * @example\n * ```html\n * <!-- Provide additional context for icon-only buttons -->\n * <button>\n * <igc-icon name=\"close\"></igc-icon>\n * <igc-visually-hidden>Close dialog</igc-visually-hidden>\n * </button>\n * ```\n */\nexport default class IgcVisuallyHiddenComponent extends LitElement {\n public static readonly tagName = 'igc-visually-hidden';\n\n public static override styles = css`\n :host(:not(:focus-within)) {\n position: absolute;\n width: 1px;\n height: 1px;\n border: 0;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n white-space: nowrap;\n clip: rect(0, 0, 0, 0);\n clip-path: inset(50%);\n }\n `;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcVisuallyHiddenComponent);\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-visually-hidden': IgcVisuallyHiddenComponent;\n }\n}\n"]}
|