igniteui-webcomponents 7.3.2 → 7.4.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 +49 -0
- package/animations/easings.d.ts +21 -31
- package/animations/easings.js +21 -34
- package/animations/easings.js.map +1 -1
- package/animations/player.d.ts +8 -16
- package/animations/player.js +5 -8
- package/animations/player.js.map +1 -1
- package/animations/view-transition.d.ts +10 -10
- package/animations/view-transition.js +26 -37
- package/animations/view-transition.js.map +1 -1
- package/components/breadcrumb/breadcrumb.d.ts +74 -0
- package/components/breadcrumb/breadcrumb.js +107 -0
- package/components/breadcrumb/breadcrumb.js.map +1 -0
- package/components/breadcrumb/breadcrumbs.d.ts +60 -0
- package/components/breadcrumb/breadcrumbs.js +50 -0
- package/components/breadcrumb/breadcrumbs.js.map +1 -0
- package/components/breadcrumb/themes/breadcrumb.base.css.js +3 -0
- package/components/breadcrumb/themes/breadcrumb.base.css.js.map +1 -0
- package/components/breadcrumb/themes/breadcrumbs.base.css.d.ts +1 -0
- package/components/{resize-container/themes/resize-container.base.css.js → breadcrumb/themes/breadcrumbs.base.css.js} +2 -2
- package/components/breadcrumb/themes/breadcrumbs.base.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.material.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.material.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.material.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.fluent.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.indigo.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.material.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.material.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.material.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.shared.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.shared.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.shared.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.common.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.common.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.common.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.material.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.material.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.material.css.js.map +1 -0
- package/components/breadcrumb/themes/themes.d.ts +2 -0
- package/components/breadcrumb/themes/themes.js +50 -0
- package/components/breadcrumb/themes/themes.js.map +1 -0
- package/components/button/button.d.ts +0 -2
- package/components/button/button.js.map +1 -1
- package/components/button-group/button-group.d.ts +42 -12
- package/components/button-group/button-group.js +82 -34
- package/components/button-group/button-group.js.map +1 -1
- package/components/button-group/toggle-button.d.ts +6 -1
- package/components/button-group/toggle-button.js +28 -2
- package/components/button-group/toggle-button.js.map +1 -1
- package/components/calendar/base.js +2 -1
- package/components/calendar/base.js.map +1 -1
- package/components/calendar/calendar.d.ts +2 -3
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +2 -2
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/carousel/carousel-indicator.js +1 -0
- package/components/carousel/carousel-indicator.js.map +1 -1
- package/components/carousel/carousel-slide.d.ts +1 -1
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.d.ts +3 -3
- package/components/carousel/carousel.js.map +1 -1
- package/components/chat/chat-input.d.ts +1 -2
- package/components/chat/chat-input.js +1 -1
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-state.d.ts +8 -9
- package/components/chat/chat-state.js.map +1 -1
- package/components/chat/chat.d.ts +1 -3
- package/components/chat/chat.js +2 -2
- package/components/chat/chat.js.map +1 -1
- package/components/chat/message-attachments.d.ts +6 -15
- package/components/chat/message-attachments.js.map +1 -1
- package/components/chat/utils.d.ts +0 -1
- package/components/chat/utils.js +1 -1
- package/components/chat/utils.js.map +1 -1
- package/components/checkbox/checkbox-base.d.ts +1 -1
- package/components/checkbox/checkbox.js +1 -1
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/chip/chip.d.ts +2 -2
- package/components/chip/chip.js.map +1 -1
- package/components/color-picker/color-picker.d.ts +35 -34
- package/components/color-picker/color-picker.js +9 -4
- package/components/color-picker/color-picker.js.map +1 -1
- package/components/color-picker/common.d.ts +0 -2
- package/components/color-picker/common.js +2 -2
- package/components/color-picker/common.js.map +1 -1
- package/components/color-picker/converters.js.map +1 -1
- package/components/color-picker/picker-canvas.js.map +1 -1
- package/components/combo/combo.d.ts +18 -20
- package/components/combo/combo.js +8 -2
- package/components/combo/combo.js.map +1 -1
- package/components/combo/controllers/data.d.ts +7 -10
- package/components/combo/controllers/data.js.map +1 -1
- package/components/date-picker/date-picker.base.d.ts +22 -27
- package/components/date-picker/date-picker.base.js +7 -1
- package/components/date-picker/date-picker.base.js.map +1 -1
- package/components/date-picker/date-picker.d.ts +1 -1
- package/components/date-picker/date-picker.js +5 -3
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-range-picker/date-range-input.d.ts +0 -2
- package/components/date-range-picker/date-range-input.js +0 -6
- package/components/date-range-picker/date-range-input.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +22 -31
- package/components/date-range-picker/date-range-picker.js +7 -7
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/i18n.d.ts +21 -0
- package/components/date-range-picker/i18n.js +10 -0
- package/components/date-range-picker/i18n.js.map +1 -0
- package/components/date-range-picker/predefined-ranges-area.d.ts +3 -3
- package/components/date-range-picker/predefined-ranges-area.js +2 -5
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
- package/components/date-range-picker/validators.d.ts +0 -4
- package/components/date-range-picker/validators.js +4 -4
- package/components/date-range-picker/validators.js.map +1 -1
- package/components/date-time-input/date-time-input.base.d.ts +39 -37
- package/components/date-time-input/date-time-input.base.js +6 -0
- package/components/date-time-input/date-time-input.base.js.map +1 -1
- package/components/date-time-input/date-time-input.d.ts +1 -11
- package/components/date-time-input/date-time-input.js +0 -6
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/datetime-mask-parser.d.ts +0 -10
- package/components/date-time-input/datetime-mask-parser.js +1 -1
- package/components/date-time-input/datetime-mask-parser.js.map +1 -1
- package/components/dialog/dialog.js.map +1 -1
- package/components/dropdown/dropdown-group.d.ts +2 -10
- package/components/dropdown/dropdown-group.js +2 -27
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown.d.ts +17 -23
- package/components/dropdown/dropdown.js +5 -17
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/file-input/file-input.d.ts +2 -2
- package/components/file-input/file-input.js.map +1 -1
- package/components/icon/icon.d.ts +1 -1
- package/components/icon/icon.registry.d.ts +6 -6
- package/components/icon/icon.registry.js.map +1 -1
- package/components/input/input.d.ts +3 -3
- package/components/input/input.js.map +1 -1
- package/components/mask-input/mask-history.d.ts +22 -18
- package/components/mask-input/mask-history.js.map +1 -1
- package/components/mask-input/mask-input.d.ts +1 -1
- package/components/mask-input/mask-parser.d.ts +11 -13
- package/components/mask-input/mask-parser.js.map +1 -1
- package/components/popover/popover.d.ts +45 -34
- package/components/popover/popover.js +54 -122
- package/components/popover/popover.js.map +1 -1
- package/components/popover/position/arrow.d.ts +19 -0
- package/components/popover/position/arrow.js +33 -0
- package/components/popover/position/arrow.js.map +1 -0
- package/components/popover/position/floating.d.ts +40 -0
- package/components/popover/position/floating.js +146 -0
- package/components/popover/position/floating.js.map +1 -0
- package/components/popover/position/native.d.ts +45 -0
- package/components/popover/position/native.js +158 -0
- package/components/popover/position/native.js.map +1 -0
- package/components/popover/position/strategy.d.ts +37 -0
- package/components/popover/position/strategy.js +21 -0
- package/components/popover/position/strategy.js.map +1 -0
- package/components/popover/position/types.d.ts +26 -0
- package/components/popover/position/types.js +15 -0
- package/components/popover/position/types.js.map +1 -0
- package/components/popover/themes/light/popover.base.css.js +1 -1
- package/components/popover/themes/light/popover.base.css.js.map +1 -1
- package/components/progress/circular-progress.d.ts +0 -5
- package/components/progress/circular-progress.js.map +1 -1
- package/components/qr-code/qr-code.d.ts +1 -1
- package/components/radio/radio.d.ts +4 -4
- package/components/radio/radio.js +17 -14
- package/components/radio/radio.js.map +1 -1
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/rating/rating.d.ts +6 -6
- package/components/rating/rating.js.map +1 -1
- package/components/select/select-group.d.ts +5 -10
- package/components/select/select-group.js +10 -34
- package/components/select/select-group.js.map +1 -1
- package/components/select/select.d.ts +12 -20
- package/components/select/select.js +4 -14
- package/components/select/select.js.map +1 -1
- package/components/splitter/splitter.d.ts +6 -6
- package/components/splitter/splitter.js.map +1 -1
- package/components/textarea/textarea.d.ts +1 -1
- package/components/textarea/textarea.js.map +1 -1
- package/components/tile-manager/tile-manager.d.ts +6 -7
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.d.ts +3 -3
- package/components/tile-manager/tile.js.map +1 -1
- package/components/toast/toast.d.ts +0 -2
- package/components/toast/toast.js.map +1 -1
- package/components/tooltip/controller.js.map +1 -1
- package/components/tooltip/service.js +4 -5
- package/components/tooltip/service.js.map +1 -1
- package/components/tooltip/tooltip.d.ts +34 -13
- package/components/tooltip/tooltip.js +8 -4
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/tree-item.d.ts +6 -6
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.navigation.d.ts +5 -6
- package/components/tree/tree.navigation.js.map +1 -1
- package/components/tree/tree.selection.js.map +1 -1
- package/components/types.d.ts +1 -1
- package/components/types.js.map +1 -1
- package/components/validation-container/validation-container.js.map +1 -1
- package/components/virtualization/engine.d.ts +5 -5
- package/components/virtualization/engine.js.map +1 -1
- package/components/virtualization/virtualization.d.ts +61 -63
- package/components/virtualization/virtualization.js +6 -5
- package/components/virtualization/virtualization.js.map +1 -1
- package/custom-elements.json +16280 -19679
- package/igniteui-webcomponents.css-data.json +2 -2
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/internals/abort-handler.d.ts +13 -25
- package/internals/abort-handler.js +4 -6
- package/internals/abort-handler.js.map +1 -1
- package/internals/context.d.ts +13 -7
- package/internals/context.js +2 -1
- package/internals/context.js.map +1 -1
- package/internals/controllers/adopt-styles.d.ts +19 -20
- package/internals/controllers/adopt-styles.js +3 -8
- package/internals/controllers/adopt-styles.js.map +1 -1
- package/internals/controllers/aria-projection.d.ts +56 -55
- package/internals/controllers/aria-projection.js +14 -15
- package/internals/controllers/aria-projection.js.map +1 -1
- package/internals/controllers/async-consumer.js.map +1 -1
- package/internals/controllers/command.d.ts +15 -30
- package/internals/controllers/command.js +2 -7
- package/internals/controllers/command.js.map +1 -1
- package/internals/controllers/context-provider.d.ts +7 -13
- package/internals/controllers/context-provider.js.map +1 -1
- package/internals/controllers/focus-ring.d.ts +10 -30
- package/internals/controllers/focus-ring.js +6 -12
- package/internals/controllers/focus-ring.js.map +1 -1
- package/internals/controllers/fullscreen.d.ts +7 -23
- package/internals/controllers/fullscreen.js +3 -9
- package/internals/controllers/fullscreen.js.map +1 -1
- package/internals/controllers/gestures.d.ts +10 -29
- package/internals/controllers/gestures.js +1 -3
- package/internals/controllers/gestures.js.map +1 -1
- package/internals/controllers/group.d.ts +13 -30
- package/internals/controllers/group.js.map +1 -1
- package/internals/controllers/host-listeners.d.ts +28 -0
- package/internals/controllers/host-listeners.js +27 -0
- package/internals/controllers/host-listeners.js.map +1 -0
- package/internals/controllers/id-resolver.d.ts +8 -9
- package/internals/controllers/id-resolver.js +6 -14
- package/internals/controllers/id-resolver.js.map +1 -1
- package/internals/controllers/internals.d.ts +53 -104
- package/internals/controllers/internals.js +40 -13
- package/internals/controllers/internals.js.map +1 -1
- package/internals/controllers/key-bindings.d.ts +61 -158
- package/internals/controllers/key-bindings.js +68 -67
- package/internals/controllers/key-bindings.js.map +1 -1
- package/internals/controllers/keys.d.ts +32 -0
- package/internals/controllers/keys.js +20 -0
- package/internals/controllers/keys.js.map +1 -0
- package/internals/controllers/mutation-observer.d.ts +14 -37
- package/internals/controllers/mutation-observer.js +1 -1
- package/internals/controllers/mutation-observer.js.map +1 -1
- package/internals/controllers/resize-observer.d.ts +9 -19
- package/internals/controllers/resize-observer.js.map +1 -1
- package/internals/controllers/root-click.d.ts +11 -42
- package/internals/controllers/root-click.js +4 -6
- package/internals/controllers/root-click.js.map +1 -1
- package/internals/controllers/roving-focus.d.ts +16 -35
- package/internals/controllers/roving-focus.js.map +1 -1
- package/internals/controllers/slot.d.ts +25 -54
- package/internals/controllers/slot.js +6 -6
- package/internals/controllers/slot.js.map +1 -1
- package/internals/controllers/toggle.d.ts +44 -48
- package/internals/controllers/toggle.js.map +1 -1
- package/internals/date/compare.js.map +1 -1
- package/internals/date/converters.d.ts +10 -7
- package/internals/date/converters.js.map +1 -1
- package/internals/date/model.d.ts +9 -16
- package/internals/date/model.js +22 -25
- package/internals/date/model.js.map +1 -1
- package/internals/decorators/blazorAdditionalDependencies.d.ts +4 -2
- package/internals/decorators/blazorAdditionalDependencies.js.map +1 -1
- package/internals/decorators/blazorDeepImport.d.ts +1 -3
- package/internals/decorators/blazorDeepImport.js.map +1 -1
- package/internals/decorators/blazorInclude.d.ts +3 -2
- package/internals/decorators/blazorInclude.js.map +1 -1
- package/internals/decorators/blazorIndirectRender.d.ts +1 -3
- package/internals/decorators/blazorIndirectRender.js.map +1 -1
- package/internals/decorators/blazorSuppressComponent.d.ts +1 -3
- package/internals/decorators/blazorSuppressComponent.js.map +1 -1
- package/internals/decorators/coerced-property.d.ts +14 -20
- package/internals/decorators/coerced-property.js.map +1 -1
- package/internals/decorators/shadow-options.d.ts +2 -5
- package/internals/decorators/shadow-options.js.map +1 -1
- package/internals/definitions/defineAllComponents.js +2 -0
- package/internals/definitions/defineAllComponents.js.map +1 -1
- package/internals/directives/drag.d.ts +51 -81
- package/internals/directives/drag.js +27 -89
- package/internals/directives/drag.js.map +1 -1
- package/internals/directives/pointer-operation.d.ts +75 -0
- package/internals/directives/pointer-operation.js +92 -0
- package/internals/directives/pointer-operation.js.map +1 -0
- package/internals/directives/resize.d.ts +36 -64
- package/internals/directives/resize.js +18 -85
- package/internals/directives/resize.js.map +1 -1
- package/internals/i18n/EN/calendar.resources.d.ts +8 -2
- package/internals/i18n/EN/calendar.resources.js +2 -2
- package/internals/i18n/EN/calendar.resources.js.map +1 -1
- package/internals/i18n/EN/chat.resources.d.ts +8 -2
- package/internals/i18n/EN/chat.resources.js +3 -10
- package/internals/i18n/EN/chat.resources.js.map +1 -1
- package/internals/i18n/EN/date-picker.resources.d.ts +6 -4
- package/internals/i18n/EN/date-picker.resources.js +1 -7
- package/internals/i18n/EN/date-picker.resources.js.map +1 -1
- package/internals/i18n/EN/date-range-picker.resources.d.ts +9 -2
- package/internals/i18n/EN/date-range-picker.resources.js +2 -2
- package/internals/i18n/EN/date-range-picker.resources.js.map +1 -1
- package/internals/i18n/i18n-controller.d.ts +44 -46
- package/internals/i18n/i18n-controller.js +46 -33
- package/internals/i18n/i18n-controller.js.map +1 -1
- package/internals/i18n/utils.d.ts +9 -4
- package/internals/i18n/utils.js +4 -27
- package/internals/i18n/utils.js.map +1 -1
- package/internals/mixins/alert.d.ts +10 -25
- package/internals/mixins/alert.js.map +1 -1
- package/internals/mixins/combo-box.d.ts +21 -11
- package/internals/mixins/combo-box.js +16 -22
- package/internals/mixins/combo-box.js.map +1 -1
- package/internals/mixins/event-emitter.js +9 -11
- package/internals/mixins/event-emitter.js.map +1 -1
- package/internals/mixins/forms/associated-required.d.ts +4 -4
- package/internals/mixins/forms/associated-required.js.map +1 -1
- package/internals/mixins/forms/associated.d.ts +4 -2
- package/internals/mixins/forms/associated.js +8 -19
- package/internals/mixins/forms/associated.js.map +1 -1
- package/internals/mixins/forms/form-transformers.js.map +1 -1
- package/internals/mixins/forms/types.d.ts +24 -80
- package/internals/mixins/forms/types.js.map +1 -1
- package/internals/mixins/group.d.ts +18 -0
- package/internals/mixins/group.js +37 -0
- package/internals/mixins/group.js.map +1 -0
- package/internals/mixins/i18n.d.ts +10 -16
- package/internals/mixins/i18n.js.map +1 -1
- package/internals/mixins/mask-behavior.d.ts +8 -22
- package/internals/mixins/mask-behavior.js +1 -2
- package/internals/mixins/mask-behavior.js.map +1 -1
- package/internals/mixins/option.d.ts +1 -2
- package/internals/mixins/option.js +2 -1
- package/internals/mixins/option.js.map +1 -1
- package/internals/part-map.d.ts +4 -2
- package/internals/part-map.js +1 -1
- package/internals/part-map.js.map +1 -1
- package/internals/templates/input-shell.d.ts +8 -17
- package/internals/templates/input-shell.js +4 -1
- package/internals/templates/input-shell.js.map +1 -1
- package/internals/templates/masked-input.d.ts +7 -8
- package/internals/templates/masked-input.js.map +1 -1
- package/internals/templates/slotted-icon.d.ts +7 -12
- package/internals/templates/slotted-icon.js.map +1 -1
- package/internals/templates/toggle-shell.d.ts +6 -7
- package/internals/templates/toggle-shell.js.map +1 -1
- package/internals/timing.d.ts +5 -14
- package/internals/timing.js.map +1 -1
- package/internals/utils/arrays.d.ts +21 -21
- package/internals/utils/arrays.js +14 -0
- package/internals/utils/arrays.js.map +1 -1
- package/internals/utils/dom.d.ts +51 -39
- package/internals/utils/dom.js +1 -2
- package/internals/utils/dom.js.map +1 -1
- package/internals/utils/events.d.ts +29 -16
- package/internals/utils/events.js +9 -1
- package/internals/utils/events.js.map +1 -1
- package/internals/utils/lit.d.ts +5 -2
- package/internals/utils/lit.js.map +1 -1
- package/internals/utils/math.d.ts +8 -6
- package/internals/utils/math.js.map +1 -1
- package/internals/utils/objects.d.ts +3 -20
- package/internals/utils/objects.js +1 -39
- package/internals/utils/objects.js.map +1 -1
- package/internals/utils/strings.d.ts +9 -11
- package/internals/utils/strings.js.map +1 -1
- package/internals/utils/types.d.ts +16 -3
- package/internals/utils/types.js +3 -0
- package/internals/utils/types.js.map +1 -1
- package/internals/validators.d.ts +9 -8
- package/internals/validators.js +12 -6
- package/internals/validators.js.map +1 -1
- package/package.json +1 -1
- package/skills/README.md +3 -0
- package/skills/igniteui-wc-figma-to-app/SKILL.md +907 -0
- package/skills/igniteui-wc-figma-to-app/references/asset-extraction.md +363 -0
- package/skills/igniteui-wc-figma-to-app/references/design-token-bridge.md +407 -0
- package/skills/igniteui-wc-figma-to-app/references/figma-component-map.md +325 -0
- package/skills/igniteui-wc-figma-to-app/references/mcp-setup.md +409 -0
- package/skills/igniteui-wc-figma-to-app/references/validation-patterns.md +376 -0
- package/theming/config.d.ts +14 -5
- package/theming/config.js +38 -18
- package/theming/config.js.map +1 -1
- package/theming/context.d.ts +1 -23
- package/theming/context.js.map +1 -1
- package/theming/theming-controller.d.ts +2 -32
- package/theming/theming-controller.js +15 -21
- package/theming/theming-controller.js.map +1 -1
- package/theming/theming-event.d.ts +0 -7
- package/theming/theming-event.js +0 -13
- package/theming/theming-event.js.map +1 -1
- package/theming/types.d.ts +1 -8
- package/theming/types.js.map +1 -1
- package/web-types.json +3 -3
- package/animations/presets/slide/index.d.ts +0 -3
- package/animations/presets/slide/index.js +0 -16
- package/animations/presets/slide/index.js.map +0 -1
- package/components/resize-container/themes/resize-container.base.css.js.map +0 -1
- package/internals/controllers/root-scroll.d.ts +0 -31
- package/internals/controllers/root-scroll.js +0 -71
- package/internals/controllers/root-scroll.js.map +0 -1
- package/theming/utils.d.ts +0 -11
- package/theming/utils.js +0 -20
- package/theming/utils.js.map +0 -1
- /package/components/{resize-container/themes/resize-container.base.css.d.ts → breadcrumb/themes/breadcrumb.base.css.d.ts} +0 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { hasStickyAncestor, isPopoverOpen, roundByDPR, setStyles, } from '#internals/utils/dom.js';
|
|
2
|
+
import { applyArrowStyles, getPlacementSide } from './arrow.js';
|
|
3
|
+
import { PopoverPositionStrategy } from './strategy.js';
|
|
4
|
+
import { resolvePlacement } from './types.js';
|
|
5
|
+
let floatingUiModule;
|
|
6
|
+
let floatingUiLoader;
|
|
7
|
+
function loadFloatingUi() {
|
|
8
|
+
floatingUiLoader ??= import('@floating-ui/dom').then((module) => {
|
|
9
|
+
floatingUiModule = module;
|
|
10
|
+
return module;
|
|
11
|
+
});
|
|
12
|
+
return floatingUiLoader;
|
|
13
|
+
}
|
|
14
|
+
export class FloatingPositionStrategy extends PopoverPositionStrategy {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this._positionId = 0;
|
|
18
|
+
this._attachId = 0;
|
|
19
|
+
this._strategy = 'absolute';
|
|
20
|
+
}
|
|
21
|
+
attach(target, container) {
|
|
22
|
+
super.attach(target, container);
|
|
23
|
+
const attachId = ++this._attachId;
|
|
24
|
+
this._middleware = undefined;
|
|
25
|
+
const reset = { visibility: '' };
|
|
26
|
+
if (!this._host.sameWidth) {
|
|
27
|
+
reset.width = '';
|
|
28
|
+
}
|
|
29
|
+
setStyles(container, reset);
|
|
30
|
+
this._strategy = hasStickyAncestor(target) ? 'fixed' : 'absolute';
|
|
31
|
+
if (floatingUiModule) {
|
|
32
|
+
this._startAutoUpdate(floatingUiModule, target, container);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this._pendingLoad = loadFloatingUi().then((module) => {
|
|
36
|
+
if (attachId !== this._attachId) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
this._startAutoUpdate(module, target, container);
|
|
40
|
+
return this._pendingPosition;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async whenPositioned() {
|
|
44
|
+
await this._pendingLoad;
|
|
45
|
+
await this._pendingPosition;
|
|
46
|
+
}
|
|
47
|
+
show() {
|
|
48
|
+
if (this._container && !isPopoverOpen(this._container)) {
|
|
49
|
+
this._container.showPopover();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
update() {
|
|
53
|
+
this._middleware = undefined;
|
|
54
|
+
if (!this._host.sameWidth && this._container) {
|
|
55
|
+
setStyles(this._container, { width: '' });
|
|
56
|
+
}
|
|
57
|
+
this._updatePosition();
|
|
58
|
+
}
|
|
59
|
+
detach() {
|
|
60
|
+
this._attachId++;
|
|
61
|
+
this._pendingLoad = undefined;
|
|
62
|
+
this._dispose?.();
|
|
63
|
+
this._dispose = undefined;
|
|
64
|
+
}
|
|
65
|
+
clear() {
|
|
66
|
+
if (this._container) {
|
|
67
|
+
setStyles(this._container, {
|
|
68
|
+
position: '',
|
|
69
|
+
left: '',
|
|
70
|
+
top: '',
|
|
71
|
+
transform: '',
|
|
72
|
+
width: '',
|
|
73
|
+
visibility: '',
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
_startAutoUpdate(floating, target, container) {
|
|
78
|
+
this._dispose = floating.autoUpdate(target, container, this._updatePosition.bind(this));
|
|
79
|
+
}
|
|
80
|
+
_createMiddleware(floating) {
|
|
81
|
+
const { offset, flip, sameWidth, arrow, scrollStrategy } = this._host;
|
|
82
|
+
const middleware = [];
|
|
83
|
+
if (offset !== 0) {
|
|
84
|
+
middleware.push(floating.offset(offset));
|
|
85
|
+
}
|
|
86
|
+
if (flip) {
|
|
87
|
+
middleware.push(floating.flip());
|
|
88
|
+
}
|
|
89
|
+
if (sameWidth) {
|
|
90
|
+
middleware.push(floating.size({
|
|
91
|
+
apply: ({ rects }) => {
|
|
92
|
+
if (this._container) {
|
|
93
|
+
setStyles(this._container, {
|
|
94
|
+
width: `${rects.reference.width}px`,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
if (arrow) {
|
|
101
|
+
middleware.push(floating.arrow({ element: arrow }));
|
|
102
|
+
}
|
|
103
|
+
if (scrollStrategy !== 'scroll') {
|
|
104
|
+
middleware.push(floating.hide());
|
|
105
|
+
}
|
|
106
|
+
return middleware;
|
|
107
|
+
}
|
|
108
|
+
_updatePosition() {
|
|
109
|
+
this._pendingPosition = this._computePosition();
|
|
110
|
+
return this._pendingPosition;
|
|
111
|
+
}
|
|
112
|
+
async _computePosition() {
|
|
113
|
+
const container = this._container;
|
|
114
|
+
const floating = floatingUiModule;
|
|
115
|
+
if (!(this._host.open && container && floating)) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (!this._target?.isConnected) {
|
|
119
|
+
this._onAnchorRemoved();
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const positionId = ++this._positionId;
|
|
123
|
+
const strategy = this._strategy;
|
|
124
|
+
const { x, y, middlewareData, placement } = await floating.computePosition(this._target, container, {
|
|
125
|
+
placement: resolvePlacement(this._host),
|
|
126
|
+
middleware: (this._middleware ??= this._createMiddleware(floating)),
|
|
127
|
+
strategy,
|
|
128
|
+
});
|
|
129
|
+
if (positionId !== this._positionId || !this._host.open) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
setStyles(container, {
|
|
133
|
+
position: strategy,
|
|
134
|
+
left: '0',
|
|
135
|
+
top: '0',
|
|
136
|
+
transform: `translate(${roundByDPR(x)}px,${roundByDPR(y)}px)`,
|
|
137
|
+
visibility: middlewareData.hide?.referenceHidden ? 'hidden' : '',
|
|
138
|
+
});
|
|
139
|
+
const { arrow, arrowOffset } = this._host;
|
|
140
|
+
if (arrow && middlewareData.arrow) {
|
|
141
|
+
const { x: arrowX, y: arrowY } = middlewareData.arrow;
|
|
142
|
+
applyArrowStyles(arrow, getPlacementSide(placement), arrowX ?? arrowY ?? 0, arrowOffset);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=floating.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"floating.js","sourceRoot":"","sources":["../../../../src/components/popover/position/floating.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as FloatingUi from '@floating-ui/dom';\nimport type { Middleware } from '@floating-ui/dom';\nimport {\n hasStickyAncestor,\n isPopoverOpen,\n roundByDPR,\n setStyles,\n} from '#internals/utils/dom.js';\nimport { applyArrowStyles, getPlacementSide } from './arrow.js';\nimport { PopoverPositionStrategy } from './strategy.js';\nimport { resolvePlacement } from './types.js';\n\ntype FloatingUiModule = typeof FloatingUi;\n\n/**\n * The module loads on demand, at the first attach of the fallback strategy. A\n * browser that uses the native strategy never loads it. The published build\n * is ESM, so the bundler of a consumer can split the code at this import.\n */\nlet floatingUiModule: FloatingUiModule | undefined;\nlet floatingUiLoader: Promise<FloatingUiModule> | undefined;\n\nfunction loadFloatingUi(): Promise<FloatingUiModule> {\n floatingUiLoader ??= import('@floating-ui/dom').then((module) => {\n floatingUiModule = module;\n return module;\n });\n\n return floatingUiLoader;\n}\n\n/**\n * The fallback strategy, for a browser without the native CSS anchor\n * positioning. It positions the container with `@floating-ui/dom`.\n */\nexport class FloatingPositionStrategy extends PopoverPositionStrategy {\n private _dispose?: () => void;\n private _middleware?: Middleware[];\n private _positionId = 0;\n\n /** The module load of the current open cycle, with its first position. */\n private _pendingLoad?: Promise<unknown>;\n\n /** The position update that runs now. */\n private _pendingPosition?: Promise<void>;\n\n /**\n * Identifies the open cycle. Each `attach` and `detach` increments it.\n * Every `attach` chains a callback onto the shared module loader, so a\n * callback of a replaced cycle must not start an update.\n */\n private _attachId = 0;\n\n /**\n * `fixed` if an ancestor of the anchor has `position: sticky`, `absolute`\n * in all other cases. The value updates one time for each open cycle,\n * because the calculation walks the DOM and forces a style reflow.\n */\n private _strategy: 'absolute' | 'fixed' = 'absolute';\n\n public override attach(target: Element, container: HTMLElement): void {\n super.attach(target, container);\n\n const attachId = ++this._attachId;\n\n this._middleware = undefined;\n\n // Remove the inline styles of the previous open cycle. A popover that\n // closes while the anchor is out of view keeps `visibility: hidden`, and\n // the first `computePosition` clears it too late.\n const reset: Partial<CSSStyleDeclaration> = { visibility: '' };\n\n if (!this._host.sameWidth) {\n reset.width = '';\n }\n\n setStyles(container, reset);\n\n this._strategy = hasStickyAncestor(target) ? 'fixed' : 'absolute';\n\n if (floatingUiModule) {\n this._startAutoUpdate(floatingUiModule, target, container);\n return;\n }\n\n // `autoUpdate` positions the container one time before it returns, so\n // the pending position of that call completes the load.\n this._pendingLoad = loadFloatingUi().then((module) => {\n if (attachId !== this._attachId) {\n return undefined;\n }\n\n this._startAutoUpdate(module, target, container);\n return this._pendingPosition;\n });\n }\n\n /**\n * This strategy loads its module on demand and then positions\n * asynchronously, so the host waits for both.\n */\n public override async whenPositioned(): Promise<void> {\n await this._pendingLoad;\n await this._pendingPosition;\n }\n\n public show(): void {\n if (this._container && !isPopoverOpen(this._container)) {\n this._container.showPopover();\n }\n }\n\n public update(): void {\n this._middleware = undefined;\n\n if (!this._host.sameWidth && this._container) {\n setStyles(this._container, { width: '' });\n }\n\n this._updatePosition();\n }\n\n public detach(): void {\n this._attachId++;\n this._pendingLoad = undefined;\n this._dispose?.();\n this._dispose = undefined;\n }\n\n public clear(): void {\n if (this._container) {\n setStyles(this._container, {\n position: '',\n left: '',\n top: '',\n transform: '',\n width: '',\n visibility: '',\n });\n }\n }\n\n private _startAutoUpdate(\n floating: FloatingUiModule,\n target: Element,\n container: HTMLElement\n ): void {\n this._dispose = floating.autoUpdate(\n target,\n container,\n this._updatePosition.bind(this)\n );\n }\n\n private _createMiddleware(floating: FloatingUiModule): Middleware[] {\n const { offset, flip, sameWidth, arrow, scrollStrategy } = this._host;\n const middleware: Middleware[] = [];\n\n if (offset !== 0) {\n middleware.push(floating.offset(offset));\n }\n\n if (flip) {\n middleware.push(floating.flip());\n }\n\n if (sameWidth) {\n middleware.push(\n floating.size({\n apply: ({ rects }) => {\n if (this._container) {\n setStyles(this._container, {\n width: `${rects.reference.width}px`,\n });\n }\n },\n })\n );\n }\n\n if (arrow) {\n middleware.push(floating.arrow({ element: arrow }));\n }\n\n // `hide()` matches `position-visibility: anchors-visible` of the native\n // strategy. The `scroll` strategy adds no middleware, which matches\n // `position-visibility: always`.\n if (scrollStrategy !== 'scroll') {\n middleware.push(floating.hide());\n }\n\n return middleware;\n }\n\n private _updatePosition(): Promise<void> {\n this._pendingPosition = this._computePosition();\n return this._pendingPosition;\n }\n\n private async _computePosition(): Promise<void> {\n const container = this._container;\n // A pending `attach` positions the container when the module loads, so an\n // update before the first load can stop here.\n const floating = floatingUiModule;\n\n if (!(this._host.open && container && floating)) {\n return;\n }\n\n if (!this._target?.isConnected) {\n this._onAnchorRemoved();\n return;\n }\n\n const positionId = ++this._positionId;\n const strategy = this._strategy;\n\n const { x, y, middlewareData, placement } = await floating.computePosition(\n this._target,\n container,\n {\n placement: resolvePlacement(this._host),\n middleware: (this._middleware ??= this._createMiddleware(floating)),\n strategy,\n }\n );\n\n if (positionId !== this._positionId || !this._host.open) {\n return;\n }\n\n setStyles(container, {\n position: strategy,\n left: '0',\n top: '0',\n transform: `translate(${roundByDPR(x)}px,${roundByDPR(y)}px)`,\n visibility: middlewareData.hide?.referenceHidden ? 'hidden' : '',\n });\n\n const { arrow, arrowOffset } = this._host;\n\n if (arrow && middlewareData.arrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n applyArrowStyles(\n arrow,\n getPlacementSide(placement),\n arrowX ?? arrowY ?? 0,\n arrowOffset\n );\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { PopoverPositionStrategy } from './strategy.js';
|
|
2
|
+
/**
|
|
3
|
+
* True if the native CSS anchor positioning can position the `target`.
|
|
4
|
+
*
|
|
5
|
+
* The `source` option accepts only an HTMLElement, so the fallback positions
|
|
6
|
+
* an anchor such as an SVG element.
|
|
7
|
+
*/
|
|
8
|
+
export declare function shouldUseNativeAnchorPositioning(target: Element): target is HTMLElement;
|
|
9
|
+
/**
|
|
10
|
+
* The position strategy that uses the native CSS anchor positioning.
|
|
11
|
+
*
|
|
12
|
+
* `showPopover({ source: target })` sets the implicit anchor. This is
|
|
13
|
+
* necessary, because `anchor-name` is tree-scoped and cannot cross the shadow
|
|
14
|
+
* boundary. The CSS rules then do all the positioning. They apply only with
|
|
15
|
+
* the `data-anchored` attribute, which this strategy owns.
|
|
16
|
+
*/
|
|
17
|
+
export declare class NativePositionStrategy extends PopoverPositionStrategy {
|
|
18
|
+
/** The anchor that the container currently shows against. */
|
|
19
|
+
private _shownSource?;
|
|
20
|
+
private _arrowFrame;
|
|
21
|
+
/**
|
|
22
|
+
* Detects the removal of the anchor from the DOM. The observer does not
|
|
23
|
+
* detect the removal of a shadow host above the root of the anchor, and
|
|
24
|
+
* the fallback strategy does not detect it either.
|
|
25
|
+
*/
|
|
26
|
+
private readonly _anchorObserver;
|
|
27
|
+
attach(target: Element, container: HTMLElement): void;
|
|
28
|
+
show(): void;
|
|
29
|
+
hide(): void;
|
|
30
|
+
update(): void;
|
|
31
|
+
detach(): void;
|
|
32
|
+
clear(): void;
|
|
33
|
+
private _syncOffset;
|
|
34
|
+
/**
|
|
35
|
+
* The arrow needs JavaScript: CSS gives no signal about the position-try
|
|
36
|
+
* fallback, and a descendant of the container cannot reference the implicit
|
|
37
|
+
* anchor. The strategy calculates the side from the rectangles of the
|
|
38
|
+
* container and the anchor, on each scroll and resize.
|
|
39
|
+
*/
|
|
40
|
+
private readonly _handleArrowInvalidation;
|
|
41
|
+
/** Keeps the invalidation listeners bound while an open popover has an arrow. */
|
|
42
|
+
private _syncArrowListeners;
|
|
43
|
+
private _scheduleArrowUpdate;
|
|
44
|
+
private _updateArrow;
|
|
45
|
+
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { isServer } from 'lit';
|
|
2
|
+
import { getRoot, isPopoverOpen } from '#internals/utils/dom.js';
|
|
3
|
+
import { toggleEventListener } from '#internals/utils/events.js';
|
|
4
|
+
import { clamp } from '#internals/utils/math.js';
|
|
5
|
+
import { applyArrowStyles, getPlacementSide, isBlockSide, OPPOSITE_SIDE, } from './arrow.js';
|
|
6
|
+
import { PopoverPositionStrategy } from './strategy.js';
|
|
7
|
+
import { getForcedPopoverPositionStrategy, resolvePlacement, SCROLL_LISTENER_OPTIONS, } from './types.js';
|
|
8
|
+
const OFFSET_PROPERTY = '--_igc-popover-offset';
|
|
9
|
+
let nativeSupport;
|
|
10
|
+
function supportsNativeAnchoring() {
|
|
11
|
+
nativeSupport ??= probeNativeAnchoring();
|
|
12
|
+
return nativeSupport;
|
|
13
|
+
}
|
|
14
|
+
function probeNativeAnchoring() {
|
|
15
|
+
if (isServer ||
|
|
16
|
+
typeof CSS === 'undefined' ||
|
|
17
|
+
!CSS.supports('anchor-name: --a')) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
const anchor = document.createElement('div');
|
|
21
|
+
const popover = document.createElement('div');
|
|
22
|
+
popover.popover = 'manual';
|
|
23
|
+
anchor.style.cssText = 'position:fixed;top:0;left:0;width:1px;height:1px';
|
|
24
|
+
popover.style.cssText =
|
|
25
|
+
'margin:0;inset:auto;border:none;padding:0;width:1px;height:1px;position-area:bottom span-right';
|
|
26
|
+
try {
|
|
27
|
+
document.body.append(anchor, popover);
|
|
28
|
+
popover.showPopover({ source: anchor });
|
|
29
|
+
const anchored = Math.abs(popover.getBoundingClientRect().top - 1) <= 1;
|
|
30
|
+
popover.hidePopover();
|
|
31
|
+
return anchored;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
anchor.remove();
|
|
38
|
+
popover.remove();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function shouldUseNativeAnchorPositioning(target) {
|
|
42
|
+
const forced = getForcedPopoverPositionStrategy();
|
|
43
|
+
if (forced) {
|
|
44
|
+
return forced === 'native';
|
|
45
|
+
}
|
|
46
|
+
return target instanceof HTMLElement && supportsNativeAnchoring();
|
|
47
|
+
}
|
|
48
|
+
export class NativePositionStrategy extends PopoverPositionStrategy {
|
|
49
|
+
constructor() {
|
|
50
|
+
super(...arguments);
|
|
51
|
+
this._arrowFrame = 0;
|
|
52
|
+
this._anchorObserver = new MutationObserver(() => {
|
|
53
|
+
if (this._target?.isConnected === false) {
|
|
54
|
+
this._onAnchorRemoved();
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
this._handleArrowInvalidation = () => {
|
|
58
|
+
this._scheduleArrowUpdate();
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
attach(target, container) {
|
|
62
|
+
super.attach(target, container);
|
|
63
|
+
container.toggleAttribute('data-anchored', true);
|
|
64
|
+
this._anchorObserver.observe(getRoot(target), {
|
|
65
|
+
childList: true,
|
|
66
|
+
subtree: true,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
show() {
|
|
70
|
+
const container = this._container;
|
|
71
|
+
const target = this._target;
|
|
72
|
+
if (!(container && target)) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (isPopoverOpen(container)) {
|
|
76
|
+
if (this._shownSource !== target) {
|
|
77
|
+
container.hidePopover();
|
|
78
|
+
container.showPopover({ source: target });
|
|
79
|
+
this._shownSource = target;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
container.showPopover({ source: target });
|
|
84
|
+
this._shownSource = target;
|
|
85
|
+
}
|
|
86
|
+
this.update();
|
|
87
|
+
}
|
|
88
|
+
hide() {
|
|
89
|
+
this._shownSource = undefined;
|
|
90
|
+
super.hide();
|
|
91
|
+
}
|
|
92
|
+
update() {
|
|
93
|
+
this._syncOffset();
|
|
94
|
+
this._syncArrowListeners();
|
|
95
|
+
this._scheduleArrowUpdate();
|
|
96
|
+
}
|
|
97
|
+
detach() {
|
|
98
|
+
this._anchorObserver.disconnect();
|
|
99
|
+
this._syncArrowListeners(false);
|
|
100
|
+
}
|
|
101
|
+
clear() {
|
|
102
|
+
if (this._container) {
|
|
103
|
+
this._container.toggleAttribute('data-anchored', false);
|
|
104
|
+
this._container.style.removeProperty(OFFSET_PROPERTY);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
_syncOffset() {
|
|
108
|
+
this._container?.style.setProperty(OFFSET_PROPERTY, `${this._host.offset}px`);
|
|
109
|
+
}
|
|
110
|
+
_syncArrowListeners(active = this._host.arrow != null &&
|
|
111
|
+
this._container != null &&
|
|
112
|
+
isPopoverOpen(this._container)) {
|
|
113
|
+
toggleEventListener(window, active, 'scroll', this._handleArrowInvalidation, SCROLL_LISTENER_OPTIONS);
|
|
114
|
+
toggleEventListener(window, active, 'resize', this._handleArrowInvalidation);
|
|
115
|
+
if (!active) {
|
|
116
|
+
cancelAnimationFrame(this._arrowFrame);
|
|
117
|
+
this._arrowFrame = 0;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
_scheduleArrowUpdate() {
|
|
121
|
+
if (this._arrowFrame || !this._host.arrow) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
this._arrowFrame = requestAnimationFrame(() => {
|
|
125
|
+
this._arrowFrame = 0;
|
|
126
|
+
this._updateArrow();
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
_updateArrow() {
|
|
130
|
+
const { arrow, arrowOffset } = this._host;
|
|
131
|
+
const target = this._target;
|
|
132
|
+
const container = this._container;
|
|
133
|
+
if (!(arrow && target && container && isPopoverOpen(container))) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const anchorRect = target.getBoundingClientRect();
|
|
137
|
+
const containerRect = container.getBoundingClientRect();
|
|
138
|
+
const placementSide = getPlacementSide(resolvePlacement(this._host));
|
|
139
|
+
const block = isBlockSide(placementSide);
|
|
140
|
+
const main = block ? 'top' : 'left';
|
|
141
|
+
const mainSize = block ? 'height' : 'width';
|
|
142
|
+
const cross = block ? 'left' : 'top';
|
|
143
|
+
const crossSize = block ? 'width' : 'height';
|
|
144
|
+
const arrowSize = block ? arrow.offsetWidth : arrow.offsetHeight;
|
|
145
|
+
const containerSize = block
|
|
146
|
+
? container.clientWidth
|
|
147
|
+
: container.clientHeight;
|
|
148
|
+
const nearSide = containerRect[main] + containerRect[mainSize] / 2 <
|
|
149
|
+
anchorRect[main] + anchorRect[mainSize] / 2;
|
|
150
|
+
const side = nearSide ? main : OPPOSITE_SIDE[main];
|
|
151
|
+
const distance = clamp(anchorRect[cross] +
|
|
152
|
+
anchorRect[crossSize] / 2 -
|
|
153
|
+
containerRect[cross] -
|
|
154
|
+
arrowSize / 2, 0, containerSize - arrowSize);
|
|
155
|
+
applyArrowStyles(arrow, side, distance, arrowOffset);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../src/components/popover/position/native.ts"],"names":[],"mappings":"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","sourcesContent":["import { isServer } from 'lit';\nimport { getRoot, isPopoverOpen } from '#internals/utils/dom.js';\nimport { toggleEventListener } from '#internals/utils/events.js';\nimport { clamp } from '#internals/utils/math.js';\nimport {\n applyArrowStyles,\n getPlacementSide,\n isBlockSide,\n OPPOSITE_SIDE,\n} from './arrow.js';\nimport { PopoverPositionStrategy } from './strategy.js';\nimport {\n getForcedPopoverPositionStrategy,\n resolvePlacement,\n SCROLL_LISTENER_OPTIONS,\n} from './types.js';\n\nconst OFFSET_PROPERTY = '--_igc-popover-offset';\n\nlet nativeSupport: boolean | undefined;\n\n/**\n * Tests the native CSS anchor positioning one time, on the first use.\n *\n * `CSS.supports` cannot test the implicit anchor of `showPopover({ source })`.\n * Chromium 125 to 132 passes the CSS tests but ignores the `source` option.\n * The test therefore measures a real popover.\n */\nfunction supportsNativeAnchoring(): boolean {\n nativeSupport ??= probeNativeAnchoring();\n return nativeSupport;\n}\n\nfunction probeNativeAnchoring(): boolean {\n if (\n isServer ||\n typeof CSS === 'undefined' ||\n !CSS.supports('anchor-name: --a')\n ) {\n return false;\n }\n\n const anchor = document.createElement('div');\n const popover = document.createElement('div');\n\n popover.popover = 'manual';\n anchor.style.cssText = 'position:fixed;top:0;left:0;width:1px;height:1px';\n // `span-right` also tests the span keywords, which the aligned placements\n // need. An engine without them drops the declaration and fails the\n // measurement below.\n popover.style.cssText =\n 'margin:0;inset:auto;border:none;padding:0;width:1px;height:1px;position-area:bottom span-right';\n\n try {\n document.body.append(anchor, popover);\n popover.showPopover({ source: anchor });\n\n // An anchored popover sits directly below the 1 pixel anchor. The\n // tolerance allows for rounding. A browser that ignores `source` centers\n // the popover, far away.\n const anchored = Math.abs(popover.getBoundingClientRect().top - 1) <= 1;\n\n popover.hidePopover();\n return anchored;\n } catch {\n return false;\n } finally {\n anchor.remove();\n popover.remove();\n }\n}\n\n/**\n * True if the native CSS anchor positioning can position the `target`.\n *\n * The `source` option accepts only an HTMLElement, so the fallback positions\n * an anchor such as an SVG element.\n */\nexport function shouldUseNativeAnchorPositioning(\n target: Element\n): target is HTMLElement {\n const forced = getForcedPopoverPositionStrategy();\n\n if (forced) {\n return forced === 'native';\n }\n\n return target instanceof HTMLElement && supportsNativeAnchoring();\n}\n\n/**\n * The position strategy that uses the native CSS anchor positioning.\n *\n * `showPopover({ source: target })` sets the implicit anchor. This is\n * necessary, because `anchor-name` is tree-scoped and cannot cross the shadow\n * boundary. The CSS rules then do all the positioning. They apply only with\n * the `data-anchored` attribute, which this strategy owns.\n */\nexport class NativePositionStrategy extends PopoverPositionStrategy {\n /** The anchor that the container currently shows against. */\n private _shownSource?: Element;\n private _arrowFrame = 0;\n\n /**\n * Detects the removal of the anchor from the DOM. The observer does not\n * detect the removal of a shadow host above the root of the anchor, and\n * the fallback strategy does not detect it either.\n */\n private readonly _anchorObserver = new MutationObserver(() => {\n if (this._target?.isConnected === false) {\n this._onAnchorRemoved();\n }\n });\n\n public override attach(target: Element, container: HTMLElement): void {\n super.attach(target, container);\n\n container.toggleAttribute('data-anchored', true);\n this._anchorObserver.observe(getRoot(target), {\n childList: true,\n subtree: true,\n });\n }\n\n public show(): void {\n const container = this._container;\n const target = this._target;\n\n if (!(container && target)) {\n return;\n }\n\n // The browser binds the implicit anchor only in `showPopover`, so a new\n // anchor needs a hide and a show. The focus moves out and then back.\n if (isPopoverOpen(container)) {\n if (this._shownSource !== target) {\n container.hidePopover();\n container.showPopover({ source: target as HTMLElement });\n this._shownSource = target;\n }\n } else {\n container.showPopover({ source: target as HTMLElement });\n this._shownSource = target;\n }\n\n this.update();\n }\n\n public override hide(): void {\n this._shownSource = undefined;\n super.hide();\n }\n\n public update(): void {\n this._syncOffset();\n this._syncArrowListeners();\n // The browser positions the container. The arrow follows in the next\n // frame, when the content has its final size.\n this._scheduleArrowUpdate();\n }\n\n public detach(): void {\n this._anchorObserver.disconnect();\n this._syncArrowListeners(false);\n }\n\n public clear(): void {\n if (this._container) {\n this._container.toggleAttribute('data-anchored', false);\n this._container.style.removeProperty(OFFSET_PROPERTY);\n }\n }\n\n private _syncOffset(): void {\n this._container?.style.setProperty(\n OFFSET_PROPERTY,\n `${this._host.offset}px`\n );\n }\n\n //#region Arrow support\n\n /**\n * The arrow needs JavaScript: CSS gives no signal about the position-try\n * fallback, and a descendant of the container cannot reference the implicit\n * anchor. The strategy calculates the side from the rectangles of the\n * container and the anchor, on each scroll and resize.\n */\n private readonly _handleArrowInvalidation = (): void => {\n this._scheduleArrowUpdate();\n };\n\n /** Keeps the invalidation listeners bound while an open popover has an arrow. */\n private _syncArrowListeners(\n active = this._host.arrow != null &&\n this._container != null &&\n isPopoverOpen(this._container)\n ): void {\n toggleEventListener(\n window,\n active,\n 'scroll',\n this._handleArrowInvalidation,\n SCROLL_LISTENER_OPTIONS\n );\n toggleEventListener(\n window,\n active,\n 'resize',\n this._handleArrowInvalidation\n );\n\n if (!active) {\n cancelAnimationFrame(this._arrowFrame);\n this._arrowFrame = 0;\n }\n }\n\n private _scheduleArrowUpdate(): void {\n if (this._arrowFrame || !this._host.arrow) {\n return;\n }\n\n this._arrowFrame = requestAnimationFrame(() => {\n this._arrowFrame = 0;\n this._updateArrow();\n });\n }\n\n private _updateArrow(): void {\n const { arrow, arrowOffset } = this._host;\n const target = this._target;\n const container = this._container;\n\n if (!(arrow && target && container && isPopoverOpen(container))) {\n return;\n }\n\n const anchorRect = target.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const placementSide = getPlacementSide(resolvePlacement(this._host));\n const block = isBlockSide(placementSide);\n\n // The main axis carries the placement. The cross axis centers the arrow.\n const main = block ? 'top' : 'left';\n const mainSize = block ? 'height' : 'width';\n const cross = block ? 'left' : 'top';\n const crossSize = block ? 'width' : 'height';\n const arrowSize = block ? arrow.offsetWidth : arrow.offsetHeight;\n const containerSize = block\n ? container.clientWidth\n : container.clientHeight;\n\n // Compare the centers to find the side after a flip fallback. This stays\n // correct for an offset gap and for a negative offset that overlaps the\n // anchor.\n const nearSide =\n containerRect[main] + containerRect[mainSize] / 2 <\n anchorRect[main] + anchorRect[mainSize] / 2;\n const side = nearSide ? main : OPPOSITE_SIDE[main];\n\n // Center the arrow on the anchor. Keep the arrow inside the container.\n const distance = clamp(\n anchorRect[cross] +\n anchorRect[crossSize] / 2 -\n containerRect[cross] -\n arrowSize / 2,\n 0,\n containerSize - arrowSize\n );\n\n applyArrowStyles(arrow, side, distance, arrowOffset);\n }\n\n //#endregion\n}\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { PopoverPositionHost } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Positions the container of a popover against an anchor.
|
|
4
|
+
*
|
|
5
|
+
* For each open cycle the host calls `attach`, then `show`. The host calls
|
|
6
|
+
* `update` after a property changes, and `hide` to close the container.
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class PopoverPositionStrategy {
|
|
9
|
+
protected readonly _host: PopoverPositionHost;
|
|
10
|
+
/** The strategy calls this callback if the anchor leaves the DOM. */
|
|
11
|
+
protected readonly _onAnchorRemoved: () => void;
|
|
12
|
+
protected _target?: Element;
|
|
13
|
+
protected _container?: HTMLElement;
|
|
14
|
+
constructor(host: PopoverPositionHost, onAnchorRemoved: () => void);
|
|
15
|
+
/** Starts to position the `container` against the `target`. */
|
|
16
|
+
attach(target: Element, container: HTMLElement): void;
|
|
17
|
+
/**
|
|
18
|
+
* Resolves when the strategy positioned the container.
|
|
19
|
+
*
|
|
20
|
+
* A synchronous strategy needs no wait. The host awaits this promise in
|
|
21
|
+
* `getUpdateComplete`.
|
|
22
|
+
*/
|
|
23
|
+
whenPositioned(): Promise<unknown>;
|
|
24
|
+
/** Shows the container in the top layer. */
|
|
25
|
+
abstract show(): void;
|
|
26
|
+
/** Hides the container. */
|
|
27
|
+
hide(): void;
|
|
28
|
+
/** Positions the container again after a property of the host changes. */
|
|
29
|
+
abstract update(): void;
|
|
30
|
+
/** Stops all observers, listeners and pending updates of the strategy. */
|
|
31
|
+
abstract detach(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Removes the styles and the attributes of this strategy from the
|
|
34
|
+
* container. The host calls it when it changes the strategy.
|
|
35
|
+
*/
|
|
36
|
+
abstract clear(): void;
|
|
37
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isPopoverOpen } from '#internals/utils/dom.js';
|
|
2
|
+
export class PopoverPositionStrategy {
|
|
3
|
+
constructor(host, onAnchorRemoved) {
|
|
4
|
+
this._host = host;
|
|
5
|
+
this._onAnchorRemoved = onAnchorRemoved;
|
|
6
|
+
}
|
|
7
|
+
attach(target, container) {
|
|
8
|
+
this.detach();
|
|
9
|
+
this._target = target;
|
|
10
|
+
this._container = container;
|
|
11
|
+
}
|
|
12
|
+
whenPositioned() {
|
|
13
|
+
return Promise.resolve();
|
|
14
|
+
}
|
|
15
|
+
hide() {
|
|
16
|
+
if (this._container && isPopoverOpen(this._container)) {
|
|
17
|
+
this._container.hidePopover();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../../src/components/popover/position/strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AASxD,MAAM,OAAgB,uBAAuB;IAS3C,YAAY,IAAyB,EAAE,eAA2B;QAChE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC1C,CAAC;IAGM,MAAM,CAAC,MAAe,EAAE,SAAsB;QACnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAQM,cAAc;QACnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAMM,IAAI;QACT,IAAI,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;CAaF","sourcesContent":["import { isPopoverOpen } from '#internals/utils/dom.js';\nimport type { PopoverPositionHost } from './types.js';\n\n/**\n * Positions the container of a popover against an anchor.\n *\n * For each open cycle the host calls `attach`, then `show`. The host calls\n * `update` after a property changes, and `hide` to close the container.\n */\nexport abstract class PopoverPositionStrategy {\n protected readonly _host: PopoverPositionHost;\n\n /** The strategy calls this callback if the anchor leaves the DOM. */\n protected readonly _onAnchorRemoved: () => void;\n\n protected _target?: Element;\n protected _container?: HTMLElement;\n\n constructor(host: PopoverPositionHost, onAnchorRemoved: () => void) {\n this._host = host;\n this._onAnchorRemoved = onAnchorRemoved;\n }\n\n /** Starts to position the `container` against the `target`. */\n public attach(target: Element, container: HTMLElement): void {\n this.detach();\n this._target = target;\n this._container = container;\n }\n\n /**\n * Resolves when the strategy positioned the container.\n *\n * A synchronous strategy needs no wait. The host awaits this promise in\n * `getUpdateComplete`.\n */\n public whenPositioned(): Promise<unknown> {\n return Promise.resolve();\n }\n\n /** Shows the container in the top layer. */\n public abstract show(): void;\n\n /** Hides the container. */\n public hide(): void {\n if (this._container && isPopoverOpen(this._container)) {\n this._container.hidePopover();\n }\n }\n\n /** Positions the container again after a property of the host changes. */\n public abstract update(): void;\n\n /** Stops all observers, listeners and pending updates of the strategy. */\n public abstract detach(): void;\n\n /**\n * Removes the styles and the attributes of this strategy from the\n * container. The host calls it when it changes the strategy.\n */\n public abstract clear(): void;\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PopoverScrollStrategy } from '../../types.js';
|
|
2
|
+
import type { PopoverPlacement } from '../popover.js';
|
|
3
|
+
/**
|
|
4
|
+
* The capture phase catches the scroll of each ancestor element. The `scroll`
|
|
5
|
+
* event is not cancelable, so a passive listener does not delay the scroll.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SCROLL_LISTENER_OPTIONS: AddEventListenerOptions;
|
|
8
|
+
export type PopoverPositionStrategyMode = 'native' | 'floating';
|
|
9
|
+
/** @internal Forces one position strategy. Only the tests call this function. */
|
|
10
|
+
export declare function setPopoverPositionStrategy(mode?: PopoverPositionStrategyMode): void;
|
|
11
|
+
/** @internal Returns the forced position strategy, if the tests set one. */
|
|
12
|
+
export declare function getForcedPopoverPositionStrategy(): PopoverPositionStrategyMode | undefined;
|
|
13
|
+
/** The inputs that a position strategy reads from the popover component. */
|
|
14
|
+
export interface PopoverPositionHost {
|
|
15
|
+
/** The value is null or undefined at run time if the attribute is removed. */
|
|
16
|
+
readonly placement: PopoverPlacement | null | undefined;
|
|
17
|
+
readonly offset: number;
|
|
18
|
+
readonly flip: boolean;
|
|
19
|
+
readonly sameWidth: boolean;
|
|
20
|
+
readonly arrow: HTMLElement | null;
|
|
21
|
+
readonly arrowOffset: number;
|
|
22
|
+
readonly open: boolean;
|
|
23
|
+
readonly scrollStrategy: PopoverScrollStrategy;
|
|
24
|
+
}
|
|
25
|
+
/** Returns the placement, or the default if the attribute is removed. */
|
|
26
|
+
export declare function resolvePlacement(host: PopoverPositionHost): PopoverPlacement;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const SCROLL_LISTENER_OPTIONS = {
|
|
2
|
+
capture: true,
|
|
3
|
+
passive: true,
|
|
4
|
+
};
|
|
5
|
+
let forcedStrategy;
|
|
6
|
+
export function setPopoverPositionStrategy(mode) {
|
|
7
|
+
forcedStrategy = mode;
|
|
8
|
+
}
|
|
9
|
+
export function getForcedPopoverPositionStrategy() {
|
|
10
|
+
return forcedStrategy;
|
|
11
|
+
}
|
|
12
|
+
export function resolvePlacement(host) {
|
|
13
|
+
return host.placement ?? 'bottom-start';
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/popover/position/types.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,uBAAuB,GAA4B;IAC9D,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;CACd,CAAC;AAIF,IAAI,cAAuD,CAAC;AAG5D,MAAM,UAAU,0BAA0B,CACxC,IAAkC;IAElC,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAGD,MAAM,UAAU,gCAAgC;IAG9C,OAAO,cAAc,CAAC;AACxB,CAAC;AAgBD,MAAM,UAAU,gBAAgB,CAAC,IAAyB;IACxD,OAAO,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC;AAC1C,CAAC","sourcesContent":["import type { PopoverScrollStrategy } from '../../types.js';\nimport type { PopoverPlacement } from '../popover.js';\n\n/**\n * The capture phase catches the scroll of each ancestor element. The `scroll`\n * event is not cancelable, so a passive listener does not delay the scroll.\n */\nexport const SCROLL_LISTENER_OPTIONS: AddEventListenerOptions = {\n capture: true,\n passive: true,\n};\n\nexport type PopoverPositionStrategyMode = 'native' | 'floating';\n\nlet forcedStrategy: PopoverPositionStrategyMode | undefined;\n\n/** @internal Forces one position strategy. Only the tests call this function. */\nexport function setPopoverPositionStrategy(\n mode?: PopoverPositionStrategyMode\n): void {\n forcedStrategy = mode;\n}\n\n/** @internal Returns the forced position strategy, if the tests set one. */\nexport function getForcedPopoverPositionStrategy():\n | PopoverPositionStrategyMode\n | undefined {\n return forcedStrategy;\n}\n\n/** The inputs that a position strategy reads from the popover component. */\nexport interface PopoverPositionHost {\n /** The value is null or undefined at run time if the attribute is removed. */\n readonly placement: PopoverPlacement | null | undefined;\n readonly offset: number;\n readonly flip: boolean;\n readonly sameWidth: boolean;\n readonly arrow: HTMLElement | null;\n readonly arrowOffset: number;\n readonly open: boolean;\n readonly scrollStrategy: PopoverScrollStrategy;\n}\n\n/** Returns the placement, or the default if the attribute is removed. */\nexport function resolvePlacement(host: PopoverPositionHost): PopoverPlacement {\n return host.placement ?? 'bottom-start';\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:contents}:popover-open{overflow:visible;isolation:isolate;height:-moz-fit-content;height:fit-content;inset:unset;border:none;padding:0;background:rgba(0,0,0,0)}`;
|
|
2
|
+
export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:contents}:popover-open{overflow:visible;isolation:isolate;height:-moz-fit-content;height:fit-content;inset:unset;border:none;padding:0;background:rgba(0,0,0,0)}[data-anchored]{margin:0;position-visibility:anchors-visible}[data-anchored][data-placement=top]{position-area:top;justify-self:anchor-center}[data-anchored][data-placement=bottom]{position-area:bottom;justify-self:anchor-center}[data-anchored]:dir(ltr)[data-placement=top-start]{position-area:top span-right;justify-self:left}[data-anchored]:dir(ltr)[data-placement=top-end]{position-area:top span-left;justify-self:right}[data-anchored]:dir(ltr)[data-placement=bottom-start]{position-area:bottom span-right;justify-self:left}[data-anchored]:dir(ltr)[data-placement=bottom-end]{position-area:bottom span-left;justify-self:right}[data-anchored]:dir(rtl)[data-placement=top-start]{position-area:top span-left;justify-self:right}[data-anchored]:dir(rtl)[data-placement=top-end]{position-area:top span-right;justify-self:left}[data-anchored]:dir(rtl)[data-placement=bottom-start]{position-area:bottom span-left;justify-self:right}[data-anchored]:dir(rtl)[data-placement=bottom-end]{position-area:bottom span-right;justify-self:left}[data-anchored][data-placement=left]{position-area:left;align-self:anchor-center}[data-anchored][data-placement=left-start]{position-area:left span-bottom;align-self:self-start}[data-anchored][data-placement=left-end]{position-area:left span-top;align-self:self-end}[data-anchored][data-placement=right]{position-area:right;align-self:anchor-center}[data-anchored][data-placement=right-start]{position-area:right span-bottom;align-self:self-start}[data-anchored][data-placement=right-end]{position-area:right span-top;align-self:self-end}[data-anchored][data-placement^=top],[data-anchored][data-placement^=bottom]{margin-top:var(--_igc-popover-offset, 0);margin-bottom:var(--_igc-popover-offset, 0)}[data-anchored][data-placement^=left],[data-anchored][data-placement^=right]{margin-left:var(--_igc-popover-offset, 0);margin-right:var(--_igc-popover-offset, 0)}[data-anchored][data-scroll-strategy=scroll]{position-visibility:always}:host([flip]) [data-anchored][data-placement^=top],:host([flip]) [data-anchored][data-placement^=bottom]{position-try-fallbacks:flip-block}:host([flip]) [data-anchored][data-placement^=left],:host([flip]) [data-anchored][data-placement^=right]{position-try-fallbacks:flip-inline}:host([same-width]) [data-anchored]{width:anchor-size(width)}`;
|
|
3
3
|
//# sourceMappingURL=popover.base.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.base.css.js","sourceRoot":"","sources":["../../../../../src/components/popover/themes/light/popover.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,
|
|
1
|
+
{"version":3,"file":"popover.base.css.js","sourceRoot":"","sources":["../../../../../src/components/popover/themes/light/popover.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,u3GAAu3G,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:contents}:popover-open{overflow:visible;isolation:isolate;height:-moz-fit-content;height:fit-content;inset:unset;border:none;padding:0;background:rgba(0,0,0,0)}[data-anchored]{margin:0;position-visibility:anchors-visible}[data-anchored][data-placement=top]{position-area:top;justify-self:anchor-center}[data-anchored][data-placement=bottom]{position-area:bottom;justify-self:anchor-center}[data-anchored]:dir(ltr)[data-placement=top-start]{position-area:top span-right;justify-self:left}[data-anchored]:dir(ltr)[data-placement=top-end]{position-area:top span-left;justify-self:right}[data-anchored]:dir(ltr)[data-placement=bottom-start]{position-area:bottom span-right;justify-self:left}[data-anchored]:dir(ltr)[data-placement=bottom-end]{position-area:bottom span-left;justify-self:right}[data-anchored]:dir(rtl)[data-placement=top-start]{position-area:top span-left;justify-self:right}[data-anchored]:dir(rtl)[data-placement=top-end]{position-area:top span-right;justify-self:left}[data-anchored]:dir(rtl)[data-placement=bottom-start]{position-area:bottom span-left;justify-self:right}[data-anchored]:dir(rtl)[data-placement=bottom-end]{position-area:bottom span-right;justify-self:left}[data-anchored][data-placement=left]{position-area:left;align-self:anchor-center}[data-anchored][data-placement=left-start]{position-area:left span-bottom;align-self:self-start}[data-anchored][data-placement=left-end]{position-area:left span-top;align-self:self-end}[data-anchored][data-placement=right]{position-area:right;align-self:anchor-center}[data-anchored][data-placement=right-start]{position-area:right span-bottom;align-self:self-start}[data-anchored][data-placement=right-end]{position-area:right span-top;align-self:self-end}[data-anchored][data-placement^=top],[data-anchored][data-placement^=bottom]{margin-top:var(--_igc-popover-offset, 0);margin-bottom:var(--_igc-popover-offset, 0)}[data-anchored][data-placement^=left],[data-anchored][data-placement^=right]{margin-left:var(--_igc-popover-offset, 0);margin-right:var(--_igc-popover-offset, 0)}[data-anchored][data-scroll-strategy=scroll]{position-visibility:always}:host([flip]) [data-anchored][data-placement^=top],:host([flip]) [data-anchored][data-placement^=bottom]{position-try-fallbacks:flip-block}:host([flip]) [data-anchored][data-placement^=left],:host([flip]) [data-anchored][data-placement^=right]{position-try-fallbacks:flip-inline}:host([same-width]) [data-anchored]{width:anchor-size(width)}`;\n "]}
|
|
@@ -16,11 +16,6 @@ import { IgcProgressBaseComponent } from './base.js';
|
|
|
16
16
|
* @csspart label - The circular progress label.
|
|
17
17
|
* @csspart value - The circular progress label value.
|
|
18
18
|
* @csspart indeterminate - The circular progress indeterminate state.
|
|
19
|
-
* @csspart primary - The circular progress primary state.
|
|
20
|
-
* @csspart danger - The circular progress error state.
|
|
21
|
-
* @csspart warning - The circular progress warning state.
|
|
22
|
-
* @csspart info - The circular progress info state.
|
|
23
|
-
* @csspart success - The circular progress success state.
|
|
24
19
|
*/
|
|
25
20
|
export default class IgcCircularProgressComponent extends IgcProgressBaseComponent {
|
|
26
21
|
static readonly tagName = "igc-circular-progress";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circular-progress.js","sourceRoot":"","sources":["../../../src/components/progress/circular-progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,4BAA4B,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,iDAAiD,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,0DAA0D,CAAC;AAC5F,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAElD,MAAM,MAAM,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"circular-progress.js","sourceRoot":"","sources":["../../../src/components/progress/circular-progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,4BAA4B,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,iDAAiD,CAAC;AACzE,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,0DAA0D,CAAC;AAC5F,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAElD,MAAM,MAAM,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAoBtD,MAAM,CAAC,OAAO,OAAO,4BAA6B,SAAQ,wBAAwB;aACzD,YAAO,GAAG,uBAAuB,AAA1B,CAA2B;aAClC,WAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;IAG1C,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CACf,4BAA4B,EAC5B,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IAOD;QACE,KAAK,EAAE,CAAC;QANO,gBAAW,GAAG,MAAM,EAAE,CAAC;QACZ,WAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE;YAC3D,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;SAC5B,CAAC,CAAC;QAID,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAES,UAAU;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC,MAAM;iBACR,mBAAmB,CAA+B,UAAU,EAAE;gBAC7D,QAAQ,EAAE,4BAA4B,CAAC,OAAO;aAC/C,CAAC;iBACD,GAAG,CACF,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAC7B,GAAG,CAAA,gBAAgB,MAAM,eAAe,KAAK,iBAAiB,OAAO,IAAI,CAC5E;YACL,CAAC,CAAC,GAAG,CAAA;;;OAGJ,CAAC;QAEJ,OAAO,GAAG,CAAA;qBACO,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;sBAC1D,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;;;+BAGxC,IAAI,CAAC,WAAW;YACnC,SAAS;;;KAGhB,CAAC;IACJ,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;+BACgB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;oBACpC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YACjE,IAAI,CAAC,UAAU,EAAE;;;UAGnB,IAAI,CAAC,kBAAkB,EAAE;;KAE9B,CAAC;IACJ,CAAC","sourcesContent":["import { html, svg } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { partMap } from '#internals/part-map.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport { IgcProgressBaseComponent } from './base.js';\nimport IgcCircularGradientComponent from './circular-gradient.js';\nimport { styles } from './themes/circular/circular.progress.base.css.js';\nimport { styles as shared } from './themes/circular/shared/circular.progress.common.css.js';\nimport { all } from './themes/circular/themes.js';\n\nconst nextId = createIdGenerator('circular-progress');\n\n/**\n * A circular progress indicator used to express unspecified wait time or display\n * the length of a process.\n *\n * @element igc-circular-progress\n *\n * @slot - The text area container.\n * @slot gradient - Customize the progress bar in order to use a color gradient instead of a solid color. Accepts circular gradient elements.\n *\n * @csspart svg - The circular progress SVG element.\n * @csspart gradient_start - The circular progress linear-gradient start color.\n * @csspart gradient_end - The circular progress linear-gradient end color.\n * @csspart track - The circular progress ring track area.\n * @csspart fill - The circular progress indicator area.\n * @csspart label - The circular progress label.\n * @csspart value - The circular progress label value.\n * @csspart indeterminate - The circular progress indeterminate state.\n */\nexport default class IgcCircularProgressComponent extends IgcProgressBaseComponent {\n public static readonly tagName = 'igc-circular-progress';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcCircularProgressComponent,\n IgcCircularGradientComponent\n );\n }\n\n private readonly _gradientId = nextId();\n protected override readonly _slots = addSlotController(this, {\n slots: setSlots('gradient'),\n });\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected _renderSvg() {\n const gradients = this._slots.hasAssignedElements('gradient')\n ? this._slots\n .getAssignedElements<IgcCircularGradientComponent>('gradient', {\n selector: IgcCircularGradientComponent.tagName,\n })\n .map(\n ({ offset, color, opacity }) =>\n svg`<stop offset=${offset} stop-color=${color} stop-opacity=${opacity}/>`\n )\n : svg`\n <stop offset=\"0%\" part=\"gradient_start\" />\n <stop offset=\"100%\" part=\"gradient_end\" />\n `;\n\n return svg`\n <circle part=${partMap({ track: true, indeterminate: this.indeterminate })}/>\n <circle style=${styleMap({ stroke: `url(#${this._gradientId})` })} part=\"fill\"/>\n\n <defs>\n <linearGradient id=${this._gradientId} gradientTransform=\"rotate(90)\">\n ${gradients}\n </linearGradient>\n </defs>\n `;\n }\n\n protected override render() {\n return html`\n <div part=\"base\" style=${styleMap(this._styleInfo)}>\n <svg part=${partMap({ svg: true, indeterminate: this.indeterminate })}>\n ${this._renderSvg()}\n </svg>\n <slot name=\"gradient\"></slot>\n ${this._renderDefaultSlot()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-circular-progress': IgcCircularProgressComponent;\n }\n}\n"]}
|
|
@@ -152,7 +152,7 @@ export default class IgcQrCodeComponent extends LitElement {
|
|
|
152
152
|
* is not a positive finite number, or when the resulting image exceeds the maximum canvas size.
|
|
153
153
|
*/
|
|
154
154
|
toImage(options?: QrCodeExportOptions): Promise<File>;
|
|
155
|
-
protected render():
|
|
155
|
+
protected render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
156
156
|
}
|
|
157
157
|
declare global {
|
|
158
158
|
interface HTMLElementTagNameMap {
|
|
@@ -49,12 +49,12 @@ export default class IgcRadioComponent extends IgcRadioComponent_base {
|
|
|
49
49
|
private _tabIndex;
|
|
50
50
|
/** All radios of the group, that is having the same name property, in DOM order. */
|
|
51
51
|
private get _radios();
|
|
52
|
-
/** All radios of the group except the one that invokes the getter. */
|
|
53
|
-
private get _siblings();
|
|
54
52
|
/** All radios of the group that are not disabled. */
|
|
55
53
|
private get _activeRadios();
|
|
56
|
-
/** All radios of the group
|
|
57
|
-
private
|
|
54
|
+
/** All radios of the group except this one. Yields, so it copies nothing. */
|
|
55
|
+
private _siblings;
|
|
56
|
+
/** Whether this radio is the last checked one of its group. */
|
|
57
|
+
private _isLastChecked;
|
|
58
58
|
set required(value: boolean);
|
|
59
59
|
get required(): boolean;
|
|
60
60
|
/**
|