igniteui-webcomponents 7.2.3 → 7.3.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +156 -0
- package/animations/player.d.ts +4 -11
- package/animations/player.js +4 -10
- package/animations/player.js.map +1 -1
- package/animations/view-transition.d.ts +44 -0
- package/animations/view-transition.js +81 -0
- package/animations/view-transition.js.map +1 -0
- package/components/accordion/accordion.d.ts +1 -1
- package/components/accordion/accordion.js +7 -6
- package/components/accordion/accordion.js.map +1 -1
- package/components/avatar/avatar.js +10 -10
- 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 +1 -1
- package/components/badge/badge.js +5 -5
- 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 +2 -2
- package/components/banner/banner.js +8 -8
- 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 +2 -2
- package/components/button/button-base.js +15 -12
- 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 +12 -12
- 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 +42 -21
- package/components/button-group/button-group.js +101 -106
- 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 +29 -10
- package/components/calendar/base.js +12 -15
- package/components/calendar/base.js.map +1 -1
- package/components/calendar/calendar.d.ts +39 -8
- 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 +7 -21
- 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 +1 -1
- package/components/carousel/carousel-indicator.js +5 -5
- package/components/carousel/carousel-indicator.js.map +1 -1
- package/components/carousel/carousel-slide.d.ts +1 -1
- package/components/carousel/carousel-slide.js +9 -9
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.d.ts +7 -7
- package/components/carousel/carousel.js +40 -30
- package/components/carousel/carousel.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 +13 -12
- 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 -4
- package/components/chat/chat.js +13 -13
- 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.js +7 -6
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.js +7 -6
- 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 -3
- package/components/chip/chip.js +10 -6
- 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 +0 -2
- package/components/combo/combo-item.js +4 -7
- package/components/combo/combo-item.js.map +1 -1
- package/components/combo/combo.d.ts +84 -26
- package/components/combo/combo.js +197 -152
- 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 +294 -0
- package/components/date-picker/date-picker.base.js +480 -0
- package/components/date-picker/date-picker.base.js.map +1 -0
- package/components/date-picker/date-picker.d.ts +52 -172
- package/components/date-picker/date-picker.js +88 -393
- 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 +12 -14
- package/components/date-range-picker/date-range-input.js +42 -98
- 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 +98 -191
- package/components/date-range-picker/date-range-picker.js +210 -530
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.d.ts +2 -2
- package/components/date-range-picker/predefined-ranges-area.js +5 -5
- 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 +15 -22
- package/components/date-range-picker/validators.js.map +1 -1
- package/components/date-time-input/date-part.d.ts +18 -1
- package/components/date-time-input/date-part.js +10 -0
- package/components/date-time-input/date-part.js.map +1 -1
- package/components/date-time-input/date-time-input.base.d.ts +74 -12
- package/components/date-time-input/date-time-input.base.js +99 -27
- package/components/date-time-input/date-time-input.base.js.map +1 -1
- package/components/date-time-input/date-time-input.d.ts +13 -23
- package/components/date-time-input/date-time-input.js +45 -65
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/datetime-mask-parser.d.ts +45 -109
- package/components/date-time-input/datetime-mask-parser.js +88 -139
- 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 +2 -2
- package/components/date-time-input/validators.js.map +1 -1
- package/components/dialog/dialog.d.ts +2 -2
- package/components/dialog/dialog.js +21 -22
- 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 +2 -1
- package/components/divider/divider.js +3 -3
- 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 +21 -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 +14 -5
- package/components/expansion-panel/expansion-panel.js +10 -9
- 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 +20 -12
- package/components/file-input/file-input.js +17 -12
- 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.js +2 -2
- 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 +14 -25
- package/components/icon/icon.js +37 -24
- 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 +12 -12
- package/components/input/input-base.js +13 -15
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +15 -12
- package/components/input/input.js +8 -8
- 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 -23
- 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 +3 -3
- package/components/nav-drawer/nav-drawer.js +11 -14
- 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 +1 -1
- package/components/progress/base.js +5 -4
- 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 +221 -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 +35 -0
- package/components/radio/controller.js +100 -0
- package/components/radio/controller.js.map +1 -0
- package/components/radio/radio.d.ts +26 -14
- package/components/radio/radio.js +47 -36
- 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 +19 -10
- package/components/radio-group/radio-group.js +50 -41
- 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 +6 -6
- package/components/rating/rating.js +12 -9
- 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/resize-container.d.ts +4 -4
- package/components/resize-container/resize-container.js +4 -4
- package/components/resize-container/resize-container.js.map +1 -1
- package/components/resize-container/resize-controller.js +2 -2
- 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 +9 -2
- package/components/select/select-group.js +21 -5
- 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 +49 -22
- package/components/select/select.js +132 -67
- 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 +2 -2
- package/components/slider/range-slider.js +8 -8
- package/components/slider/range-slider.js.map +1 -1
- package/components/slider/slider-base.js +18 -14
- 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 +6 -6
- 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 +8 -8
- 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 +106 -23
- 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 +1 -1
- package/components/stepper/step.js +7 -7
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/stepper.d.ts +5 -5
- package/components/stepper/stepper.js +12 -9
- 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 +34 -13
- package/components/tabs/tab.js.map +1 -1
- package/components/tabs/tabs.d.ts +36 -22
- package/components/tabs/tabs.js +118 -88
- 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 +19 -14
- package/components/textarea/textarea.js +22 -16
- 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 +1 -1
- package/components/theme-provider/theme-provider.js +2 -2
- 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 +1 -1
- package/components/tile-manager/tile-manager.js +7 -7
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.d.ts +4 -4
- package/components/tile-manager/tile.js +29 -25
- 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 +64 -18
- package/components/tooltip/tooltip.js +112 -62
- 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 +223 -233
- 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 +21 -14
- package/components/tree/tree.js +64 -72
- 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 +33 -6
- package/components/validation-container/validation-container.js +81 -70
- package/components/validation-container/validation-container.js.map +1 -1
- package/components/virtualization/engine.d.ts +92 -0
- package/components/virtualization/engine.js +217 -0
- package/components/virtualization/engine.js.map +1 -0
- package/components/virtualization/types.d.ts +53 -0
- package/components/virtualization/types.js +14 -0
- package/components/virtualization/types.js.map +1 -0
- package/components/virtualization/virtualization.d.ts +235 -0
- package/components/virtualization/virtualization.js +474 -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 +57500 -47242
- 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 +20 -15
- 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/{components/common → internals}/controllers/drag.js +3 -2
- 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 +4 -4
- package/internals/controllers/gestures.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 +48 -3
- package/{components/common → internals}/controllers/internals.js +32 -0
- package/internals/controllers/internals.js.map +1 -0
- package/{components/common → internals}/controllers/key-bindings.d.ts +3 -6
- package/{components/common → internals}/controllers/key-bindings.js +43 -29
- package/internals/controllers/key-bindings.js.map +1 -0
- package/{components/common → internals}/controllers/mutation-observer.d.ts +5 -4
- package/internals/controllers/mutation-observer.js +74 -0
- 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/{components/common → internals}/controllers/slot.d.ts +18 -2
- package/{components/common → internals}/controllers/slot.js +21 -6
- package/internals/controllers/slot.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 +73 -0
- package/internals/date/converters.js.map +1 -0
- package/{components/calendar → internals/date}/model.d.ts +6 -3
- package/{components/calendar → internals/date}/model.js +23 -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/shadow-options.js.map +1 -0
- package/internals/decorators/watch.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/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 +2 -2
- package/{components/common → internals}/mixins/alert.js +3 -3
- package/internals/mixins/alert.js.map +1 -0
- package/{components/common → internals}/mixins/combo-box.d.ts +10 -2
- package/{components/common → internals}/mixins/combo-box.js +9 -4
- 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.d.ts +1 -1
- package/{components/common → internals}/mixins/forms/associated.js +66 -51
- 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 +7 -7
- package/internals/mixins/forms/types.js.map +1 -0
- package/{components/common → internals}/mixins/mask-behavior.d.ts +11 -3
- package/{components/common → internals}/mixins/mask-behavior.js +117 -29
- 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 +1 -4
- 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 -2
- package/{components/common → internals}/templates/masked-input.js +5 -3
- package/internals/templates/masked-input.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 +92 -0
- package/internals/utils/dom.js +143 -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 +1 -1
- package/{components/common → internals}/validators.js +4 -2
- package/internals/validators.js.map +1 -0
- package/package.json +15 -7
- package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +15 -1
- 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 +2 -2
- 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 +0 -69
- 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.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}/decorators/watch.d.ts +0 -0
- /package/{components/common → internals}/decorators/watch.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/i18n-controller.d.ts +0 -0
- /package/{components/common → internals}/i18n/i18n-controller.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/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,474 @@
|
|
|
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._lastEmittedState = null;
|
|
121
|
+
this._hasPendingDataRequest = false;
|
|
122
|
+
this._layoutCompletePromise = null;
|
|
123
|
+
this._scrollRequestId = 0;
|
|
124
|
+
this._lastDataRequestIndex = -1;
|
|
125
|
+
this._scrollPosition = 0;
|
|
126
|
+
this._viewportSize = 0;
|
|
127
|
+
this.data = [];
|
|
128
|
+
this.orientation = 'vertical';
|
|
129
|
+
this.overScan = 2;
|
|
130
|
+
this.estimatedItemSize = DEFAULT_ESTIMATED_ITEM_SIZE;
|
|
131
|
+
this.itemTemplate = null;
|
|
132
|
+
this._engine.onSizeChange = () => this.requestUpdate();
|
|
133
|
+
this._handleScroll = this._handleScroll.bind(this);
|
|
134
|
+
createResizeObserverController(this, {
|
|
135
|
+
callback: this._measureViewport,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
createRenderRoot() {
|
|
139
|
+
return this;
|
|
140
|
+
}
|
|
141
|
+
connectedCallback() {
|
|
142
|
+
super.connectedCallback();
|
|
143
|
+
this._adoptStyles();
|
|
144
|
+
this._engine.initMaxBrowserSize(this.ownerDocument);
|
|
145
|
+
this._measureViewport();
|
|
146
|
+
this.addEventListener('scroll', this._handleScroll, { passive: true });
|
|
147
|
+
}
|
|
148
|
+
disconnectedCallback() {
|
|
149
|
+
super.disconnectedCallback();
|
|
150
|
+
this.removeEventListener('scroll', this._handleScroll);
|
|
151
|
+
}
|
|
152
|
+
willUpdate(changed) {
|
|
153
|
+
this._adoptStyles();
|
|
154
|
+
if (changed.has('data')) {
|
|
155
|
+
this._engine.resize(this._items.length, this._normalizedItemSize, this._firstChangedIndex(changed.get('data')));
|
|
156
|
+
this._hasPendingDataRequest = false;
|
|
157
|
+
}
|
|
158
|
+
if (changed.has('estimatedItemSize')) {
|
|
159
|
+
this._engine.updateEstimatedSize(this._normalizedItemSize);
|
|
160
|
+
}
|
|
161
|
+
if (changed.has('orientation')) {
|
|
162
|
+
this._measureViewport();
|
|
163
|
+
this._scrollPosition = this._currentAxisScroll();
|
|
164
|
+
}
|
|
165
|
+
this._currentRange = this._computeRange();
|
|
166
|
+
}
|
|
167
|
+
updated(_changed) {
|
|
168
|
+
this._scheduleItemMeasurement();
|
|
169
|
+
this._checkDataRequest();
|
|
170
|
+
this._emitStateChange();
|
|
171
|
+
}
|
|
172
|
+
render() {
|
|
173
|
+
if (!this.itemTemplate) {
|
|
174
|
+
return html `${nothing}`;
|
|
175
|
+
}
|
|
176
|
+
const items = this._items;
|
|
177
|
+
const range = this._currentRange;
|
|
178
|
+
const count = items.length;
|
|
179
|
+
const isVertical = this._isVertical;
|
|
180
|
+
const trackStyle = isVertical
|
|
181
|
+
? { height: `${this._engine.domSize}px` }
|
|
182
|
+
: { width: `${this._engine.domSize}px` };
|
|
183
|
+
let contentPosition = this._engine.getScrollOffsetForIndex(range.startIndex);
|
|
184
|
+
const physicalRangeSize = this._engine.getPhysicalRangeSize(range.startIndex, range.endIndex);
|
|
185
|
+
contentPosition = clamp(contentPosition, 0, this._engine.domSize - physicalRangeSize);
|
|
186
|
+
const isRTL = !isVertical && !isLTR(this);
|
|
187
|
+
const contentStyle = {
|
|
188
|
+
transform: isVertical
|
|
189
|
+
? `translateY(${contentPosition}px)`
|
|
190
|
+
: `translateX(${isRTL ? -contentPosition : contentPosition}px)`,
|
|
191
|
+
};
|
|
192
|
+
const visibleItems = range.endIndex >= range.startIndex
|
|
193
|
+
? items.slice(range.startIndex, range.endIndex + 1)
|
|
194
|
+
: [];
|
|
195
|
+
return html `
|
|
196
|
+
<div
|
|
197
|
+
part="virtualization-track"
|
|
198
|
+
role="presentation"
|
|
199
|
+
style=${styleMap(trackStyle)}
|
|
200
|
+
>
|
|
201
|
+
<div
|
|
202
|
+
${ref(this._contentRef)}
|
|
203
|
+
part="virtualization-content"
|
|
204
|
+
role="presentation"
|
|
205
|
+
style=${styleMap(contentStyle)}
|
|
206
|
+
>
|
|
207
|
+
${visibleItems.map((item, i) => {
|
|
208
|
+
const itemIndex = range.startIndex + i;
|
|
209
|
+
const ctx = new VirtualScrollItemContext(item, itemIndex, count);
|
|
210
|
+
return html `<div role="presentation" data-vs-index=${itemIndex}>
|
|
211
|
+
${this.itemTemplate(ctx)}
|
|
212
|
+
</div>`;
|
|
213
|
+
})}
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
216
|
+
`;
|
|
217
|
+
}
|
|
218
|
+
get _isVertical() {
|
|
219
|
+
return this.orientation === 'vertical';
|
|
220
|
+
}
|
|
221
|
+
get _normalizedOverScan() {
|
|
222
|
+
return Math.max(0, Math.floor(asNumber(this.overScan, 2)));
|
|
223
|
+
}
|
|
224
|
+
get _normalizedItemSize() {
|
|
225
|
+
const size = asNumber(this.estimatedItemSize);
|
|
226
|
+
return size > 0 ? size : DEFAULT_ESTIMATED_ITEM_SIZE;
|
|
227
|
+
}
|
|
228
|
+
get _items() {
|
|
229
|
+
return this.data ?? [];
|
|
230
|
+
}
|
|
231
|
+
_computeRange() {
|
|
232
|
+
return this.itemTemplate
|
|
233
|
+
? this._engine.getVisibleRange(this._scrollPosition, this._viewportSize, this._normalizedOverScan)
|
|
234
|
+
: EMPTY_RANGE;
|
|
235
|
+
}
|
|
236
|
+
_getAlignedScrollOffset(index, options) {
|
|
237
|
+
const requested = this._isVertical
|
|
238
|
+
? (options?.block ?? 'start')
|
|
239
|
+
: (options?.inline ?? options?.block ?? 'start');
|
|
240
|
+
const current = this._currentAxisScroll();
|
|
241
|
+
if (requested === 'nearest' &&
|
|
242
|
+
this._engine.isIndexInView(index, current, this._viewportSize)) {
|
|
243
|
+
return current;
|
|
244
|
+
}
|
|
245
|
+
const align = requested === 'center' || requested === 'end' ? requested : 'start';
|
|
246
|
+
return this._engine.getAlignedScrollOffset(index, this._viewportSize, align);
|
|
247
|
+
}
|
|
248
|
+
_applyScroll(offset, behavior) {
|
|
249
|
+
if (this._isVertical) {
|
|
250
|
+
this.scrollTo({ top: offset, behavior });
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
this.scrollTo({ left: isLTR(this) ? offset : -offset, behavior });
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
_currentAxisScroll() {
|
|
257
|
+
return this._isVertical
|
|
258
|
+
? this.scrollTop
|
|
259
|
+
: isLTR(this)
|
|
260
|
+
? this.scrollLeft
|
|
261
|
+
: -this.scrollLeft;
|
|
262
|
+
}
|
|
263
|
+
_scrollAndWaitForEnd(offset, behavior) {
|
|
264
|
+
if (Math.abs(this._currentAxisScroll() - offset) < SCROLL_OFFSET_EPSILON_PX) {
|
|
265
|
+
return Promise.resolve();
|
|
266
|
+
}
|
|
267
|
+
return this._withDeadline(SCROLL_END_TIMEOUT_MS, (signal) => {
|
|
268
|
+
const settled = SUPPORTS_SCROLL_END
|
|
269
|
+
? this._waitForScrollEnd(signal)
|
|
270
|
+
: this._waitForScrollIdle(signal);
|
|
271
|
+
this._applyScroll(offset, behavior);
|
|
272
|
+
return settled;
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
_withDeadline(ms, task) {
|
|
276
|
+
const controller = new AbortController();
|
|
277
|
+
return Promise.race([
|
|
278
|
+
task(controller.signal),
|
|
279
|
+
this._timeout(ms, controller.signal),
|
|
280
|
+
]).finally(() => controller.abort());
|
|
281
|
+
}
|
|
282
|
+
_waitForScrollEnd(signal) {
|
|
283
|
+
return new Promise((resolve) => {
|
|
284
|
+
this.addEventListener('scrollend', () => resolve(), {
|
|
285
|
+
once: true,
|
|
286
|
+
signal,
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
_waitForScrollIdle(signal) {
|
|
291
|
+
return new Promise((resolve) => {
|
|
292
|
+
let id = setTimeout(resolve, SCROLL_IDLE_MS);
|
|
293
|
+
this.addEventListener('scroll', () => {
|
|
294
|
+
clearTimeout(id);
|
|
295
|
+
id = setTimeout(resolve, SCROLL_IDLE_MS);
|
|
296
|
+
}, { passive: true, signal });
|
|
297
|
+
signal.addEventListener('abort', () => clearTimeout(id), { once: true });
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
_timeout(ms, signal) {
|
|
301
|
+
return new Promise((resolve) => {
|
|
302
|
+
const id = setTimeout(resolve, ms);
|
|
303
|
+
signal.addEventListener('abort', () => clearTimeout(id), { once: true });
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
_measureViewport() {
|
|
307
|
+
this._viewportSize = this._isVertical
|
|
308
|
+
? this.clientHeight
|
|
309
|
+
: this.clientWidth;
|
|
310
|
+
}
|
|
311
|
+
_handleScroll() {
|
|
312
|
+
this._scrollPosition = this._currentAxisScroll();
|
|
313
|
+
const { startIndex, endIndex } = this._computeRange();
|
|
314
|
+
if (startIndex !== this._currentRange.startIndex ||
|
|
315
|
+
endIndex !== this._currentRange.endIndex) {
|
|
316
|
+
this.requestUpdate();
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
_firstChangedIndex(previous) {
|
|
320
|
+
if (!previous) {
|
|
321
|
+
return 0;
|
|
322
|
+
}
|
|
323
|
+
const items = this._items;
|
|
324
|
+
const shared = Math.min(previous.length, items.length);
|
|
325
|
+
for (let i = 0; i < shared; i++) {
|
|
326
|
+
if (previous[i] !== items[i]) {
|
|
327
|
+
return i;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return shared;
|
|
331
|
+
}
|
|
332
|
+
_handleItemResize(entries) {
|
|
333
|
+
for (const entry of entries) {
|
|
334
|
+
const el = entry.target;
|
|
335
|
+
const index = asNumber(el.dataset.vsIndex, -1);
|
|
336
|
+
if (index < 0)
|
|
337
|
+
continue;
|
|
338
|
+
const measured = this._isVertical
|
|
339
|
+
? (entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height)
|
|
340
|
+
: (entry.borderBoxSize?.[0]?.inlineSize ?? entry.contentRect.width);
|
|
341
|
+
if (measured > 0) {
|
|
342
|
+
this._engine.measureItem(index, measured);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
_scheduleItemMeasurement() {
|
|
347
|
+
const content = this._contentRef.value;
|
|
348
|
+
if (!content)
|
|
349
|
+
return;
|
|
350
|
+
const observed = this._itemResizeController.targets;
|
|
351
|
+
for (const element of observed) {
|
|
352
|
+
if (element.parentNode !== content) {
|
|
353
|
+
this._itemResizeController.unobserve(element);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
for (const element of content.children) {
|
|
357
|
+
if (!observed.has(element)) {
|
|
358
|
+
this._itemResizeController.observe(element);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
_emitStateChange() {
|
|
363
|
+
const { startIndex, endIndex } = this._currentRange;
|
|
364
|
+
if (endIndex < startIndex)
|
|
365
|
+
return;
|
|
366
|
+
const previous = this._lastEmittedState;
|
|
367
|
+
const detail = {
|
|
368
|
+
startIndex,
|
|
369
|
+
endIndex,
|
|
370
|
+
viewportSize: this._viewportSize,
|
|
371
|
+
totalSize: this._engine.totalSize,
|
|
372
|
+
};
|
|
373
|
+
if (previous &&
|
|
374
|
+
previous.startIndex === detail.startIndex &&
|
|
375
|
+
previous.endIndex === detail.endIndex &&
|
|
376
|
+
previous.viewportSize === detail.viewportSize &&
|
|
377
|
+
previous.totalSize === detail.totalSize) {
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
this._lastEmittedState = { ...detail };
|
|
381
|
+
this.emitEvent('igcStateChange', { detail });
|
|
382
|
+
}
|
|
383
|
+
_checkDataRequest() {
|
|
384
|
+
if (this._hasPendingDataRequest)
|
|
385
|
+
return;
|
|
386
|
+
const range = this._currentRange;
|
|
387
|
+
const total = this._items.length;
|
|
388
|
+
if (total === 0 || range.endIndex < total - REMOTE_SCROLLING_THRESHOLD) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
if (this._lastDataRequestIndex === total) {
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
this._hasPendingDataRequest = true;
|
|
395
|
+
this._lastDataRequestIndex = total;
|
|
396
|
+
this.emitEvent('igcDataRequest', {
|
|
397
|
+
detail: {
|
|
398
|
+
startIndex: total,
|
|
399
|
+
count: Math.max(this._normalizedOverScan * 4, 20),
|
|
400
|
+
},
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
_nextFrame() {
|
|
404
|
+
return this._withDeadline(LAYOUT_FRAME_TIMEOUT_MS, (signal) => new Promise((resolve) => {
|
|
405
|
+
const id = requestAnimationFrame(() => resolve());
|
|
406
|
+
signal.addEventListener('abort', () => cancelAnimationFrame(id), {
|
|
407
|
+
once: true,
|
|
408
|
+
});
|
|
409
|
+
}));
|
|
410
|
+
}
|
|
411
|
+
async _resolveLayoutComplete() {
|
|
412
|
+
try {
|
|
413
|
+
await this.updateComplete;
|
|
414
|
+
for (let i = 0; i < MAX_LAYOUT_SETTLE_PASSES; i++) {
|
|
415
|
+
await this._nextFrame();
|
|
416
|
+
if (!this.isUpdatePending) {
|
|
417
|
+
break;
|
|
418
|
+
}
|
|
419
|
+
await this.updateComplete;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
finally {
|
|
423
|
+
this._layoutCompletePromise = null;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
get layoutComplete() {
|
|
427
|
+
if (!this._layoutCompletePromise) {
|
|
428
|
+
this._layoutCompletePromise = this._resolveLayoutComplete();
|
|
429
|
+
}
|
|
430
|
+
return this._layoutCompletePromise;
|
|
431
|
+
}
|
|
432
|
+
async scrollToIndex(index, options) {
|
|
433
|
+
const maxIndex = Math.max(0, this._items.length - 1);
|
|
434
|
+
const clampedIndex = clamp(index, 0, maxIndex);
|
|
435
|
+
const behavior = options?.behavior ?? 'auto';
|
|
436
|
+
const requestId = ++this._scrollRequestId;
|
|
437
|
+
let offset = this._getAlignedScrollOffset(clampedIndex, options);
|
|
438
|
+
await this._scrollAndWaitForEnd(offset, behavior);
|
|
439
|
+
for (let i = 0; i < MAX_SCROLL_CORRECTION_PASSES; i++) {
|
|
440
|
+
await this.layoutComplete;
|
|
441
|
+
if (requestId !== this._scrollRequestId) {
|
|
442
|
+
return;
|
|
443
|
+
}
|
|
444
|
+
const corrected = this._getAlignedScrollOffset(clampedIndex, options);
|
|
445
|
+
if (Math.abs(corrected - offset) < SCROLL_OFFSET_EPSILON_PX) {
|
|
446
|
+
break;
|
|
447
|
+
}
|
|
448
|
+
offset = corrected;
|
|
449
|
+
await this._scrollAndWaitForEnd(offset, 'auto');
|
|
450
|
+
if (requestId !== this._scrollRequestId) {
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
__decorate([
|
|
457
|
+
state()
|
|
458
|
+
], IgcVirtualScrollComponent.prototype, "_viewportSize", void 0);
|
|
459
|
+
__decorate([
|
|
460
|
+
property({ attribute: false })
|
|
461
|
+
], IgcVirtualScrollComponent.prototype, "data", void 0);
|
|
462
|
+
__decorate([
|
|
463
|
+
property({ reflect: true })
|
|
464
|
+
], IgcVirtualScrollComponent.prototype, "orientation", void 0);
|
|
465
|
+
__decorate([
|
|
466
|
+
property({ type: Number, attribute: 'over-scan' })
|
|
467
|
+
], IgcVirtualScrollComponent.prototype, "overScan", void 0);
|
|
468
|
+
__decorate([
|
|
469
|
+
property({ type: Number, attribute: 'estimated-item-size' })
|
|
470
|
+
], IgcVirtualScrollComponent.prototype, "estimatedItemSize", void 0);
|
|
471
|
+
__decorate([
|
|
472
|
+
property({ attribute: false })
|
|
473
|
+
], IgcVirtualScrollComponent.prototype, "itemTemplate", void 0);
|
|
474
|
+
//# 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`; mirrors its default. */\nconst DEFAULT_ESTIMATED_ITEM_SIZE = 50;\n/** How long the scroll position must stay put to count as settled. */\nconst SCROLL_IDLE_MS = 100;\n/**\n * Upper bound on a single `requestAnimationFrame` wait. Frames aren't served\n * to a hidden tab or a disconnected element, where `layoutComplete` must\n * still resolve.\n */\nconst LAYOUT_FRAME_TIMEOUT_MS = 100;\n\n/**\n * `scrollend` reports precisely when a scroll has settled, but is missing on\n * part of the supported browser matrix (Safari before 18.2), where\n * `_scrollAndWaitForEnd` falls back to a scroll-idle timer.\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 that efficiently renders large lists by only\n * rendering the items currently visible in the viewport.\n *\n * @element igc-virtual-scroll\n *\n * @fires igcStateChange - Emitted when the rendered virtual window changes.\n * @fires igcDataRequest - Emitted whenever the rendered window comes within a few items of the\n * end of `data` - including on the very first render, when the loaded items don't 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 holding the currently rendered items, translated\n * into 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 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 it was emitted at. See `_checkDataRequest`.\n *\n * Outlives a disconnect, like `_hasPendingDataRequest`: what the consumer has\n * already been asked for does not become untrue by moving the element, and\n * clearing only one of the two would re-open the request loop on reconnect.\n */\n private _lastDataRequestIndex = -1;\n\n /**\n * The live scroll offset on the active axis. Deliberately *not* reactive:\n * nothing in `render` reads it except through `_currentRange`, so\n * `_handleScroll` schedules an update only when the window actually 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: mutating the array\n * in place (`data.push(...)`) produces no update. Assign a new array\n * instead, which is also what the `igcDataRequest` flow expects.\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 may impact 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 * The engine replaces this with the actual measured size after the first render of each item.\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 * If not provided, 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 ever in the DOM, so assistive technology\n * cannot infer an item's position from the markup. Templates rendering a\n * role 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 // Re-verified on every update (an idempotent no-op when already present)\n // rather than only in `connectedCallback`. A host rendering this component\n // inside its own shadow root (e.g. combo) may have that root's\n // `adoptedStyleSheets` wholesale replaced by its theming logic, silently\n // dropping this sheet without this element ever 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/wide, so translating it to the first rendered\n // item's scroll offset places 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 consumer clearing it with a nullish value. */\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, since 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` within the viewport according to\n * `options`, from the engine's *current* size data. As more items get\n * measured, the same index/options can yield a different, more accurate\n * result.\n *\n * For `block: 'nearest'` on an item already in view, returns the current\n * offset, so that no scrolling takes place.\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 resulting\n * scroll - instant or smooth - to settle.\n *\n * `scrollend` never fires when the requested offset doesn't actually move\n * the scroll position, so that case is short-circuited rather than waiting\n * for it. The timeout covers the rare case of the event never arriving at\n * all, e.g. the element being disconnected 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 once the listener is attached, so an instant scroll\n // can't settle before anything is watching for it.\n this._applyScroll(offset, behavior);\n return settled;\n });\n }\n\n /**\n * Resolves with whichever comes first, `task` or a deadline of `ms`.\n * Whichever wins, the loser is torn down through the signal instead of\n * being left behind as a live timer or a dangling listener.\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 once no `scroll` event has arrived for `SCROLL_IDLE_MS`, the\n * closest approximation of `scrollend` without it. The first timer is armed\n * immediately, so a scroll that never moves 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 and schedules a render only if it moves the\n * rendered window.\n *\n * `render` derives the track size, the content translate and the item slice\n * from `_currentRange`, and nothing from the scroll offset itself, so\n * scrolling within a single item would otherwise re-run every item template\n * for a pixel-identical result. `willUpdate` still recomputes\n * `_currentRange` for every other trigger, so this can only suppress a\n * redundant pass, never a needed 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, i.e. the index of the first item whose measured size no longer\n * describes what is rendered there. Appending (the `igcDataRequest` flow)\n * retains everything; filtering or replacing retains only the untouched\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 * Brings the item observer in sync with the rendered window, applying only\n * the difference: re-observing an already observed element makes the browser\n * deliver another initial measurement for it, so blanket re-registration\n * would fire a callback for every rendered item on every update pass.\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 if (!observed.has(element)) {\n this._itemResizeController.observe(element);\n }\n }\n }\n\n /**\n * Emits `igcStateChange`, unless the window is empty or identical to the one\n * last reported: measurement passes re-render without moving the window.\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 // `_hasPendingDataRequest` is cleared by any `data` change, including one\n // that appends nothing. Without this second guard, a consumer that\n // reassigns `data` in response to a request it cannot fulfil - its source\n // being exhausted - would be asked for the same items on every\n // reassignment, indefinitely.\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 * if one never arrives. A hidden tab or a disconnected element is never\n * served frames, and `layoutComplete` must still settle there. There is no\n * layout to wait for in that state, so resolving early costs nothing.\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 to finish and then gives any\n * ResizeObserver-driven item measurements a chance to run. If those schedule\n * a follow-up render - an estimated size being replaced with a measured one\n * - the wait repeats until nothing is pending, 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 rather than after the loop, so a run that throws can't\n // leave the getter handing out the same rejected promise forever.\n this._layoutCompletePromise = null;\n }\n }\n\n //#endregion\n\n //#region Public API\n\n /* blazorSuppress */\n /**\n * Resolves once the virtual scroll has fully settled: the current render\n * pass has completed *and* so have any item-size measurements it triggers,\n * along with the renders those in turn schedule.\n *\n * Unlike `updateComplete`, which reflects a single Lit render pass, this\n * covers changing `data`, scrolling or resizing the viewport, where the\n * stable DOM state is only reached after 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 * Programmatically scrolls to the specified item index.\n *\n * Items outside the rendered window only have an *estimated* size, so the\n * first jump may land off target. The items around where it lands are then\n * measured and the scroll position corrected, repeating - each pass landing\n * closer to the true target - until the offset stabilizes.\n *\n * The returned promise resolves once the scroll has settled on that final,\n * corrected offset, and can be ignored by callers that only care about the\n * initial, approximate scroll.\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 any correction loop still running for a previous\n // one, e.g. 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"]}
|