igniteui-angular 21.0.3 → 21.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -0
- package/README.md +5 -6
- package/fesm2022/igniteui-angular-action-strip.mjs +39 -34
- package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
- package/fesm2022/igniteui-angular-banner.mjs +64 -59
- package/fesm2022/igniteui-angular-banner.mjs.map +1 -1
- package/fesm2022/igniteui-angular-calendar.mjs +182 -161
- package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
- package/fesm2022/igniteui-angular-carousel.mjs +7 -3
- package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
- package/fesm2022/igniteui-angular-chips.mjs +140 -136
- package/fesm2022/igniteui-angular-chips.mjs.map +1 -1
- package/fesm2022/igniteui-angular-combo.mjs +360 -356
- package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
- package/fesm2022/igniteui-angular-core.mjs +420 -618
- package/fesm2022/igniteui-angular-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-date-picker.mjs +124 -32
- package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
- package/fesm2022/igniteui-angular-directives.mjs +15 -10
- package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-core.mjs +75 -57
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +71 -62
- package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +51 -6
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +6 -1
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs +8 -8
- package/fesm2022/igniteui-angular-grids-tree-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-input-group.mjs +8 -4
- package/fesm2022/igniteui-angular-input-group.mjs.map +1 -1
- package/fesm2022/igniteui-angular-list.mjs +24 -19
- package/fesm2022/igniteui-angular-list.mjs.map +1 -1
- package/fesm2022/igniteui-angular-paginator.mjs +71 -66
- package/fesm2022/igniteui-angular-paginator.mjs.map +1 -1
- package/fesm2022/igniteui-angular-query-builder.mjs +51 -36
- package/fesm2022/igniteui-angular-query-builder.mjs.map +1 -1
- package/fesm2022/igniteui-angular-time-picker.mjs +50 -8
- package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
- package/fesm2022/igniteui-angular-tree.mjs +64 -61
- package/fesm2022/igniteui-angular-tree.mjs.map +1 -1
- package/lib/core/styles/components/calendar/_calendar-theme.scss +2 -0
- package/lib/core/styles/components/grid/_grid-theme.scss +2 -1
- package/lib/core/styles/components/slider/_slider-theme.scss +0 -1
- package/lib/core/styles/components/tabs/_tabs-theme.scss +2 -1
- package/package.json +3 -2
- package/schematics/tsconfig.tsbuildinfo +1 -1
- package/schematics/utils/dependency-handler.js +1 -0
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
- package/types/igniteui-angular-action-strip.d.ts +3 -0
- package/types/igniteui-angular-banner.d.ts +3 -0
- package/types/igniteui-angular-calendar.d.ts +37 -47
- package/types/igniteui-angular-carousel.d.ts +1 -0
- package/types/igniteui-angular-chips.d.ts +2 -0
- package/types/igniteui-angular-combo.d.ts +4 -2
- package/types/igniteui-angular-core.d.ts +152 -397
- package/types/igniteui-angular-date-picker.d.ts +22 -4
- package/types/igniteui-angular-directives.d.ts +8 -4
- package/types/igniteui-angular-grids-core.d.ts +18 -8
- package/types/igniteui-angular-grids-grid.d.ts +9 -7
- package/types/igniteui-angular-grids-hierarchical-grid.d.ts +20 -3
- package/types/igniteui-angular-input-group.d.ts +1 -0
- package/types/igniteui-angular-list.d.ts +3 -0
- package/types/igniteui-angular-paginator.d.ts +3 -0
- package/types/igniteui-angular-query-builder.d.ts +8 -0
- package/types/igniteui-angular-time-picker.d.ts +7 -2
- package/types/igniteui-angular-tree.d.ts +2 -1
|
@@ -4,7 +4,7 @@ import { inject, ChangeDetectorRef, EventEmitter, Directive, ElementRef, boolean
|
|
|
4
4
|
import { HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
|
|
5
5
|
import { Subject, merge } from 'rxjs';
|
|
6
6
|
import { takeUntil } from 'rxjs/operators';
|
|
7
|
-
import { IgxAngularAnimationService, HammerGesturesManager, PlatformUtil, ɵIgxDirectionality as _IgxDirectionality, getCurrentResourceStrings, CarouselResourceStringsEN, first, last } from 'igniteui-angular/core';
|
|
7
|
+
import { IgxAngularAnimationService, HammerGesturesManager, PlatformUtil, ɵIgxDirectionality as _IgxDirectionality, getCurrentResourceStrings, CarouselResourceStringsEN, onResourceChangeHandle, first, last } from 'igniteui-angular/core';
|
|
8
8
|
import { useAnimation } from '@angular/animations';
|
|
9
9
|
import { fadeIn, slideInLeft } from 'igniteui-angular/animations';
|
|
10
10
|
import { IgxIconComponent } from 'igniteui-angular/icon';
|
|
@@ -432,7 +432,7 @@ class IgxCarouselComponent extends IgxCarouselComponentBase {
|
|
|
432
432
|
* An accessor that returns the resource strings.
|
|
433
433
|
*/
|
|
434
434
|
get resourceStrings() {
|
|
435
|
-
return this._resourceStrings;
|
|
435
|
+
return this._resourceStrings || this._defaultResourceStrings;
|
|
436
436
|
}
|
|
437
437
|
/** @hidden */
|
|
438
438
|
get getIndicatorTemplate() {
|
|
@@ -794,11 +794,15 @@ class IgxCarouselComponent extends IgxCarouselComponentBase {
|
|
|
794
794
|
* @memberOf IgxCarouselComponent
|
|
795
795
|
*/
|
|
796
796
|
this.carouselPlaying = new EventEmitter();
|
|
797
|
-
this._resourceStrings =
|
|
797
|
+
this._resourceStrings = null;
|
|
798
|
+
this._defaultResourceStrings = getCurrentResourceStrings(CarouselResourceStringsEN);
|
|
798
799
|
this.destroy$ = new Subject();
|
|
799
800
|
this.differ = null;
|
|
800
801
|
this._hasKeyboardFocusOnIndicators = false;
|
|
801
802
|
this.differ = this.iterableDiffers.find([]).create(null);
|
|
803
|
+
onResourceChangeHandle(this.destroy$, () => {
|
|
804
|
+
this._defaultResourceStrings = getCurrentResourceStrings(CarouselResourceStringsEN, false);
|
|
805
|
+
}, this);
|
|
802
806
|
}
|
|
803
807
|
/** @hidden */
|
|
804
808
|
onTap(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"igniteui-angular-carousel.mjs","sources":["../../../projects/igniteui-angular/carousel/src/carousel/enums.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel-base.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel.directives.ts","../../../projects/igniteui-angular/carousel/src/carousel/slide.component.ts","../../../projects/igniteui-angular/carousel/src/carousel/slide.component.html","../../../projects/igniteui-angular/carousel/src/carousel/carousel.component.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel.component.html","../../../projects/igniteui-angular/carousel/src/carousel/public_api.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel.module.ts","../../../projects/igniteui-angular/carousel/src/igniteui-angular-carousel.ts"],"sourcesContent":["\nexport const CarouselAnimationType = {\n none: 'none',\n slide: 'slide',\n fade: 'fade'\n} as const;\nexport type CarouselAnimationType = (typeof CarouselAnimationType)[keyof typeof CarouselAnimationType];\n\nexport const CarouselIndicatorsOrientation = {\n /**\n * @deprecated in version 19.1.0. Use `end` instead.\n */\n bottom: 'bottom',\n /**\n * @deprecated in version 19.1.0. Use `start` instead.\n */\n top: 'top',\n start: 'start',\n end: 'end'\n} as const;\nexport type CarouselIndicatorsOrientation = (typeof CarouselIndicatorsOrientation)[keyof typeof CarouselIndicatorsOrientation];\n","import { AnimationReferenceMetadata, useAnimation } from '@angular/animations';\nimport { ChangeDetectorRef, Directive, EventEmitter, inject, OnDestroy } from '@angular/core';\nimport { IgxAngularAnimationService } from 'igniteui-angular/core';\nimport { AnimationPlayer, AnimationService } from 'igniteui-angular/core';\nimport { fadeIn, slideInLeft } from 'igniteui-angular/animations';\nimport { CarouselAnimationType } from './enums';\n\nexport enum CarouselAnimationDirection { NONE, NEXT, PREV }\n\nexport interface CarouselAnimationSettings {\n enterAnimation: AnimationReferenceMetadata;\n leaveAnimation: AnimationReferenceMetadata;\n}\n\n/** @hidden */\nexport interface IgxSlideComponentBase {\n direction: CarouselAnimationDirection;\n previous: boolean;\n}\n\n/** @hidden */\n@Directive()\nexport abstract class IgxCarouselComponentBase implements OnDestroy {\n private animationService = inject<AnimationService>(IgxAngularAnimationService);\n protected cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n public animationType: CarouselAnimationType = CarouselAnimationType.slide;\n\n /** @hidden @internal */\n public enterAnimationDone = new EventEmitter();\n /** @hidden @internal */\n public leaveAnimationDone = new EventEmitter();\n\n /** @hidden */\n protected currentItem: IgxSlideComponentBase;\n /** @hidden */\n protected previousItem: IgxSlideComponentBase;\n /** @hidden */\n protected enterAnimationPlayer?: AnimationPlayer;\n /** @hidden */\n protected leaveAnimationPlayer?: AnimationPlayer;\n /** @hidden */\n protected defaultAnimationDuration = 320;\n /** @hidden */\n protected animationPosition = 0;\n /** @hidden */\n protected newDuration = 0;\n /** @hidden */\n protected vertical = false;\n\n public ngOnDestroy(): void {\n if (this.enterAnimationPlayer) {\n this.enterAnimationPlayer.destroy();\n this.enterAnimationPlayer = null;\n }\n if (this.leaveAnimationPlayer) {\n this.leaveAnimationPlayer.destroy();\n this.leaveAnimationPlayer = null;\n }\n }\n\n /** @hidden */\n protected triggerAnimations() {\n if (this.animationType !== CarouselAnimationType.none) {\n if (this.animationStarted(this.leaveAnimationPlayer) || this.animationStarted(this.enterAnimationPlayer)) {\n requestAnimationFrame(() => {\n this.resetAnimations();\n this.playAnimations();\n });\n } else {\n this.playAnimations();\n }\n }\n }\n\n /** @hidden */\n protected animationStarted(animation: AnimationPlayer): boolean {\n return animation && animation.hasStarted();\n }\n\n /** @hidden */\n protected playAnimations() {\n this.playLeaveAnimation();\n this.playEnterAnimation();\n }\n\n private resetAnimations() {\n if (this.animationStarted(this.leaveAnimationPlayer)) {\n this.leaveAnimationPlayer.reset();\n this.leaveAnimationDone.emit();\n }\n\n if (this.animationStarted(this.enterAnimationPlayer)) {\n this.enterAnimationPlayer.reset();\n this.enterAnimationDone.emit();\n this.cdr.markForCheck();\n }\n }\n\n private getAnimation(): CarouselAnimationSettings {\n let duration;\n if (this.newDuration) {\n duration = this.animationPosition ? this.animationPosition * this.newDuration : this.newDuration;\n } else {\n duration = this.animationPosition ? this.animationPosition * this.defaultAnimationDuration : this.defaultAnimationDuration;\n }\n\n const trans = this.animationPosition ? this.animationPosition * 100 : 100;\n switch (this.animationType) {\n case CarouselAnimationType.slide:\n return {\n enterAnimation: useAnimation(slideInLeft,\n {\n params: {\n delay: '0s',\n duration: `${duration}ms`,\n endOpacity: 1,\n startOpacity: 1,\n fromPosition: `${this.vertical ? 'translateY' : 'translateX'}(${this.currentItem.direction === 1 ? trans : -trans}%)`,\n toPosition: `${this.vertical ? 'translateY(0%)' : 'translateX(0%)'}`\n }\n }),\n leaveAnimation: useAnimation(slideInLeft,\n {\n params: {\n delay: '0s',\n duration: `${duration}ms`,\n endOpacity: 1,\n startOpacity: 1,\n fromPosition: `${this.vertical ? 'translateY(0%)' : 'translateX(0%)'}`,\n toPosition: `${this.vertical ? 'translateY' : 'translateX'}(${this.currentItem.direction === 1 ? -trans : trans}%)`,\n }\n })\n };\n case CarouselAnimationType.fade:\n return {\n enterAnimation: useAnimation(fadeIn,\n { params: { duration: `${duration}ms`, startOpacity: `${this.animationPosition}` } }),\n leaveAnimation: null\n };\n }\n return {\n enterAnimation: null,\n leaveAnimation: null\n };\n }\n\n private playEnterAnimation() {\n const animation = this.getAnimation().enterAnimation;\n if (!animation) {\n return;\n }\n\n this.enterAnimationPlayer = this.animationService.buildAnimation(animation, this.getCurrentElement());\n this.enterAnimationPlayer.animationEnd.subscribe(() => {\n // TODO: animation may never end. Find better way to clean up the player\n if (this.enterAnimationPlayer) {\n this.enterAnimationPlayer.destroy();\n this.enterAnimationPlayer = null;\n }\n this.animationPosition = 0;\n this.newDuration = 0;\n this.previousItem.previous = false;\n this.enterAnimationDone.emit();\n this.cdr.markForCheck();\n });\n this.previousItem.previous = true;\n this.enterAnimationPlayer.play();\n }\n\n private playLeaveAnimation() {\n const animation = this.getAnimation().leaveAnimation;\n if (!animation) {\n return;\n }\n\n this.leaveAnimationPlayer = this.animationService.buildAnimation(animation, this.getPreviousElement());\n this.leaveAnimationPlayer.animationEnd.subscribe(() => {\n // TODO: animation may never end. Find better way to clean up the player\n if (this.leaveAnimationPlayer) {\n this.leaveAnimationPlayer.destroy();\n this.leaveAnimationPlayer = null;\n }\n this.animationPosition = 0;\n this.newDuration = 0;\n this.leaveAnimationDone.emit();\n });\n this.leaveAnimationPlayer.play();\n }\n\n protected abstract getPreviousElement(): HTMLElement;\n\n protected abstract getCurrentElement(): HTMLElement;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[igxCarouselIndicator]',\n standalone: true\n})\nexport class IgxCarouselIndicatorDirective {\n}\n\n@Directive({\n selector: '[igxCarouselNextButton]',\n standalone: true\n})\nexport class IgxCarouselNextButtonDirective {\n}\n\n@Directive({\n selector: '[igxCarouselPrevButton]',\n standalone: true\n})\nexport class IgxCarouselPrevButtonDirective {\n}\n","import { Component, OnDestroy, Input, HostBinding, Output, EventEmitter, ElementRef, AfterContentChecked, booleanAttribute, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { CarouselAnimationDirection, IgxSlideComponentBase } from './carousel-base';\n\n/**\n * A slide component that usually holds an image and/or a caption text.\n * IgxSlideComponent is usually a child component of an IgxCarouselComponent.\n *\n * ```\n * <igx-slide [input bindings] >\n * <ng-content></ng-content>\n * </igx-slide>\n * ```\n *\n * @export\n */\n@Component({\n selector: 'igx-slide',\n templateUrl: 'slide.component.html',\n standalone: true\n})\nexport class IgxSlideComponent implements AfterContentChecked, OnDestroy, IgxSlideComponentBase {\n private elementRef = inject(ElementRef);\n\n /**\n * Gets/sets the `index` of the slide inside the carousel.\n * ```html\n * <igx-carousel>\n * <igx-slide index=\"1\"></igx-slide>\n * <igx-carousel>\n * ```\n *\n * @memberOf IgxSlideComponent\n */\n @Input() public index: number;\n\n /**\n * Gets/sets the target `direction` for the slide.\n * ```html\n * <igx-carousel>\n * <igx-slide direction=\"NEXT\"></igx-slide>\n * <igx-carousel>\n * ```\n *\n * @memberOf IgxSlideComponent\n */\n @Input() public direction: CarouselAnimationDirection;\n\n @Input()\n public total: number;\n\n /**\n * Returns the `tabIndex` of the slide component.\n * ```typescript\n * let tabIndex = this.carousel.tabIndex;\n * ```\n *\n * @memberof IgxSlideComponent\n * @deprecated in version 19.2.0.\n */\n @HostBinding('attr.tabindex')\n public get tabIndex() {\n return this.active ? 0 : null;\n }\n\n /**\n * @hidden\n */\n @HostBinding('attr.id')\n public id: string;\n\n /**\n * Returns the `role` of the slide component.\n * By default is set to `tabpanel`\n *\n * @memberof IgxSlideComponent\n */\n @HostBinding('attr.role')\n public tab = 'tabpanel';\n\n /** @hidden */\n @HostBinding('attr.aria-labelledby')\n public ariaLabelledBy;\n\n /**\n * Returns the class of the slide component.\n * ```typescript\n * let class = this.slide.cssClass;\n * ```\n *\n * @memberof IgxSlideComponent\n */\n @HostBinding('class.igx-slide')\n public cssClass = 'igx-slide';\n\n /**\n * Gets/sets the `active` state of the slide.\n * ```html\n * <igx-carousel>\n * <igx-slide [active] =\"false\"></igx-slide>\n * <igx-carousel>\n * ```\n *\n * Two-way data binding.\n * ```html\n * <igx-carousel>\n * <igx-slide [(active)] =\"model.isActive\"></igx-slide>\n * <igx-carousel>\n * ```\n *\n * @memberof IgxSlideComponent\n */\n @HostBinding('class.igx-slide--current')\n @Input({ transform: booleanAttribute })\n public get active(): boolean {\n return this._active;\n }\n\n public set active(value) {\n this._active = value;\n this.activeChange.emit(this._active);\n }\n\n @HostBinding('class.igx-slide--previous')\n @Input({ transform: booleanAttribute }) public previous = false;\n\n /**\n * @hidden\n */\n @Output() public activeChange = new EventEmitter<boolean>();\n\n private _active = false;\n private _destroy$ = new Subject<boolean>();\n\n /**\n * Returns a reference to the carousel element in the DOM.\n * ```typescript\n * let nativeElement = this.slide.nativeElement;\n * ```\n *\n * @memberof IgxSlideComponent\n */\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get isDestroyed(): Subject<boolean> {\n return this._destroy$;\n }\n\n public ngAfterContentChecked() {\n this.id = `panel-${this.index}`;\n this.ariaLabelledBy = `tab-${this.index}-${this.total}`;\n }\n\n /**\n * @hidden\n */\n public ngOnDestroy() {\n this._destroy$.next(true);\n this._destroy$.complete();\n }\n}\n","<ng-content></ng-content>\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { AfterContentInit, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Injectable, Input, IterableChangeRecord, IterableDiffer, IterableDiffers, OnDestroy, Output, QueryList, TemplateRef, ViewChild, ViewChildren, booleanAttribute, DOCUMENT, inject } from '@angular/core';\nimport { HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CarouselResourceStringsEN, ICarouselResourceStrings, ɵIgxDirectionality } from 'igniteui-angular/core';\nimport { first, IBaseEventArgs, last, PlatformUtil } from 'igniteui-angular/core';\nimport { CarouselAnimationDirection, IgxCarouselComponentBase } from './carousel-base';\nimport { IgxCarouselIndicatorDirective, IgxCarouselNextButtonDirective, IgxCarouselPrevButtonDirective } from './carousel.directives';\nimport { IgxSlideComponent } from './slide.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxButtonDirective } from 'igniteui-angular/directives';\nimport { getCurrentResourceStrings } from 'igniteui-angular/core';\nimport { HammerGesturesManager } from 'igniteui-angular/core';\nimport { CarouselAnimationType, CarouselIndicatorsOrientation } from './enums';\n\nlet NEXT_ID = 0;\n\n\n@Injectable()\nexport class CarouselHammerConfig extends HammerGestureConfig {\n public override overrides = {\n pan: { direction: HammerGesturesManager.Hammer?.DIRECTION_HORIZONTAL }\n };\n}\n/**\n * **Ignite UI for Angular Carousel** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/carousel.html)\n *\n * The Ignite UI Carousel is used to browse or navigate through a collection of slides. Slides can contain custom\n * content such as images or cards and be used for things such as on-boarding tutorials or page-based interfaces.\n * It can be used as a separate fullscreen element or inside another component.\n *\n * Example:\n * ```html\n * <igx-carousel>\n * <igx-slide>\n * <h3>First Slide Header</h3>\n * <p>First slide Content</p>\n * <igx-slide>\n * <igx-slide>\n * <h3>Second Slide Header</h3>\n * <p>Second Slide Content</p>\n * </igx-carousel>\n * ```\n */\n@Component({\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: CarouselHammerConfig\n }\n ],\n selector: 'igx-carousel',\n templateUrl: 'carousel.component.html',\n styles: [`\n :host {\n display: block;\n outline-style: none;\n }`],\n imports: [IgxButtonDirective, IgxIconComponent, NgClass, NgTemplateOutlet]\n})\nexport class IgxCarouselComponent extends IgxCarouselComponentBase implements OnDestroy, AfterContentInit {\n private element = inject(ElementRef);\n private iterableDiffers = inject(IterableDiffers);\n private platformUtil = inject(PlatformUtil);\n private dir = inject(ɵIgxDirectionality);\n private document = inject(DOCUMENT);\n\n\n /**\n * Sets the `id` of the carousel.\n * If not set, the `id` of the first carousel component will be `\"igx-carousel-0\"`.\n * ```html\n * <igx-carousel id=\"my-first-carousel\"></igx-carousel>\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n @HostBinding('attr.id')\n @Input()\n public id = `igx-carousel-${NEXT_ID++}`;\n /**\n * Returns the `role` attribute of the carousel.\n * ```typescript\n * let carouselRole = this.carousel.role;\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n @HostBinding('attr.role') public role = 'region';\n\n /** @hidden */\n @HostBinding('attr.aria-roledescription')\n public roleDescription = 'carousel';\n\n /** @hidden */\n @HostBinding('attr.aria-labelledby')\n public get labelId() {\n return this.showIndicatorsLabel ? `${this.id}-label` : null;\n }\n\n /** @hidden */\n @HostBinding('class.igx-carousel--vertical')\n\tpublic get isVertical(): boolean {\n\t\treturn this.vertical;\n\t}\n\n /**\n * Returns the class of the carousel component.\n * ```typescript\n * let class = this.carousel.cssClass;\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n @HostBinding('class.igx-carousel')\n public cssClass = 'igx-carousel';\n\n /**\n * Gets the `touch-action` style of the `list item`.\n * ```typescript\n * let touchAction = this.listItem.touchAction;\n * ```\n */\n @HostBinding('style.touch-action')\n public get touchAction() {\n return this.gesturesSupport ? 'pan-y' : 'auto';\n }\n\n /**\n * Sets whether the carousel should `loop` back to the first slide after reaching the last slide.\n * Default value is `true`.\n * ```html\n * <igx-carousel [loop]=\"false\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public loop = true;\n\n /**\n * Sets whether the carousel will `pause` the slide transitions on user interactions.\n * Default value is `true`.\n * ```html\n * <igx-carousel [pause]=\"false\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public pause = true;\n\n /**\n * Controls whether the carousel should render the left/right `navigation` buttons.\n * Default value is `true`.\n * ```html\n * <igx-carousel [navigation]=\"false\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public navigation = true;\n\n /**\n * Controls whether the carousel should render the indicators.\n * Default value is `true`.\n * ```html\n * <igx-carousel [indicators]=\"false\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public indicators = true;\n\n\n /**\n * Controls whether the carousel has vertical alignment.\n * Default value is `false`.\n * ```html\n * <igx-carousel [vertical]=\"true\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public override vertical = false;\n\n /**\n * Controls whether the carousel should support gestures.\n * Default value is `true`.\n * ```html\n * <igx-carousel [gesturesSupport]=\"false\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public gesturesSupport = true;\n\n /**\n * Controls the maximum indexes that can be shown.\n * Default value is `10`.\n * ```html\n * <igx-carousel [maximumIndicatorsCount]=\"5\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input() public maximumIndicatorsCount = 10;\n\n /**\n * Gets/sets the display mode of carousel indicators. It can be `start` or `end`.\n * Default value is `end`.\n * ```html\n * <igx-carousel indicatorsOrientation=\"start\">\n * <igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input() public indicatorsOrientation: CarouselIndicatorsOrientation = CarouselIndicatorsOrientation.end;\n\n /**\n * Gets/sets the animation type of carousel.\n * Default value is `slide`.\n * ```html\n * <igx-carousel animationType=\"none\">\n * <igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input() public override animationType: CarouselAnimationType = CarouselAnimationType.slide;\n\n /**\n * The custom template, if any, that should be used when rendering carousel indicators\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.carousel.indicatorTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-carousel #carousel>\n * ...\n * <ng-template igxCarouselIndicator let-slide>\n * <igx-icon *ngIf=\"slide.active\">brightness_7</igx-icon>\n * <igx-icon *ngIf=\"!slide.active\">brightness_5</igx-icon>\n * </ng-template>\n * </igx-carousel>\n * ```\n */\n @ContentChild(IgxCarouselIndicatorDirective, { read: TemplateRef, static: false })\n public indicatorTemplate: TemplateRef<any> = null;\n\n /**\n * The custom template, if any, that should be used when rendering carousel next button\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.carousel.nextButtonTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-carousel #carousel>\n * ...\n * <ng-template igxCarouselNextButton let-disabled>\n * <button type=\"button\" igxButton=\"fab\" igxRipple=\"white\" [disabled]=\"disabled\">\n * <igx-icon name=\"add\"></igx-icon>\n * </button>\n * </ng-template>\n * </igx-carousel>\n * ```\n */\n @ContentChild(IgxCarouselNextButtonDirective, { read: TemplateRef, static: false })\n public nextButtonTemplate: TemplateRef<any> = null;\n\n /**\n * The custom template, if any, that should be used when rendering carousel previous button\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.carousel.prevButtonTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-carousel #carousel>\n * ...\n * <ng-template igxCarouselPrevButton let-disabled>\n * <button type=\"button\" igxButton=\"fab\" igxRipple=\"white\" [disabled]=\"disabled\">\n * <igx-icon name=\"remove\"></igx-icon>\n * </button>\n * </ng-template>\n * </igx-carousel>\n * ```\n */\n @ContentChild(IgxCarouselPrevButtonDirective, { read: TemplateRef, static: false })\n public prevButtonTemplate: TemplateRef<any> = null;\n\n /**\n * The collection of `slides` currently in the carousel.\n * ```typescript\n * let slides: QueryList<IgxSlideComponent> = this.carousel.slides;\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @ContentChildren(IgxSlideComponent)\n public slides: QueryList<IgxSlideComponent>;\n\n /**\n * An event that is emitted after a slide transition has happened.\n * Provides references to the `IgxCarouselComponent` and `IgxSlideComponent` as event arguments.\n * ```html\n * <igx-carousel (slideChanged)=\"slideChanged($event)\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Output() public slideChanged = new EventEmitter<ISlideEventArgs>();\n\n /**\n * An event that is emitted after a slide has been added to the carousel.\n * Provides references to the `IgxCarouselComponent` and `IgxSlideComponent` as event arguments.\n * ```html\n * <igx-carousel (slideAdded)=\"slideAdded($event)\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Output() public slideAdded = new EventEmitter<ISlideEventArgs>();\n\n /**\n * An event that is emitted after a slide has been removed from the carousel.\n * Provides references to the `IgxCarouselComponent` and `IgxSlideComponent` as event arguments.\n * ```html\n * <igx-carousel (slideRemoved)=\"slideRemoved($event)\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Output() public slideRemoved = new EventEmitter<ISlideEventArgs>();\n\n /**\n * An event that is emitted after the carousel has been paused.\n * Provides a reference to the `IgxCarouselComponent` as an event argument.\n * ```html\n * <igx-carousel (carouselPaused)=\"carouselPaused($event)\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Output() public carouselPaused = new EventEmitter<IgxCarouselComponent>();\n\n /**\n * An event that is emitted after the carousel has resumed transitioning between `slides`.\n * Provides a reference to the `IgxCarouselComponent` as an event argument.\n * ```html\n * <igx-carousel (carouselPlaying)=\"carouselPlaying($event)\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Output() public carouselPlaying = new EventEmitter<IgxCarouselComponent>();\n\n @ViewChild('defaultIndicator', { read: TemplateRef, static: true })\n private defaultIndicator: TemplateRef<any>;\n\n @ViewChild('defaultNextButton', { read: TemplateRef, static: true })\n private defaultNextButton: TemplateRef<any>;\n\n @ViewChild('defaultPrevButton', { read: TemplateRef, static: true })\n private defaultPrevButton: TemplateRef<any>;\n\n @ViewChildren('indicators', { read: ElementRef })\n private _indicators: QueryList<ElementRef<HTMLDivElement>>;\n\n /**\n * @hidden\n * @internal\n */\n public stoppedByInteraction: boolean;\n protected override currentItem: IgxSlideComponent;\n protected override previousItem: IgxSlideComponent;\n private _interval: number;\n private _resourceStrings = getCurrentResourceStrings(CarouselResourceStringsEN);\n private lastInterval: any;\n private playing: boolean;\n private destroyed: boolean;\n private destroy$ = new Subject<any>();\n private differ: IterableDiffer<IgxSlideComponent> | null = null;\n private incomingSlide: IgxSlideComponent;\n private _hasKeyboardFocusOnIndicators = false;\n\n /**\n * An accessor that sets the resource strings.\n * By default it uses EN resources.\n */\n @Input()\n public set resourceStrings(value: ICarouselResourceStrings) {\n this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n }\n\n /**\n * An accessor that returns the resource strings.\n */\n public get resourceStrings(): ICarouselResourceStrings {\n return this._resourceStrings;\n }\n\n /** @hidden */\n public get getIndicatorTemplate(): TemplateRef<any> {\n if (this.indicatorTemplate) {\n return this.indicatorTemplate;\n }\n return this.defaultIndicator;\n }\n\n /** @hidden */\n public get getNextButtonTemplate(): TemplateRef<any> {\n if (this.nextButtonTemplate) {\n return this.nextButtonTemplate;\n }\n\n return this.defaultNextButton\n }\n\n /** @hidden */\n public get getPrevButtonTemplate(): TemplateRef<any> {\n if (this.prevButtonTemplate) {\n return this.prevButtonTemplate;\n }\n\n return this.defaultPrevButton\n }\n\n /** @hidden */\n public get indicatorsClass() {\n return {\n ['igx-carousel-indicators--focused']: this._hasKeyboardFocusOnIndicators,\n [`igx-carousel-indicators--${this.getIndicatorsClass()}`]: true\n };\n }\n\n /** @hidden */\n public get showIndicators(): boolean {\n return this.indicators && this.total <= this.maximumIndicatorsCount && this.total > 0;\n }\n\n /** @hidden */\n public get showIndicatorsLabel(): boolean {\n return this.indicators && this.total > this.maximumIndicatorsCount;\n }\n\n /** @hidden */\n public get getCarouselLabel() {\n return `${this.current + 1} ${this.resourceStrings.igx_carousel_of} ${this.total}`;\n }\n\n /**\n * Returns the total number of `slides` in the carousel.\n * ```typescript\n * let slideCount = this.carousel.total;\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public get total(): number {\n return this.slides?.length;\n }\n\n /**\n * The index of the slide being currently shown.\n * ```typescript\n * let currentSlideNumber = this.carousel.current;\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public get current(): number {\n return !this.currentItem ? 0 : this.currentItem.index;\n }\n\n /**\n * Returns a boolean indicating if the carousel is playing.\n * ```typescript\n * let isPlaying = this.carousel.isPlaying;\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public get isPlaying(): boolean {\n return this.playing;\n }\n\n /**\n * Returns а boolean indicating if the carousel is destroyed.\n * ```typescript\n * let isDestroyed = this.carousel.isDestroyed;\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public get isDestroyed(): boolean {\n return this.destroyed;\n }\n /**\n * Returns a reference to the carousel element in the DOM.\n * ```typescript\n * let nativeElement = this.carousel.nativeElement;\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n public get nativeElement(): any {\n return this.element.nativeElement;\n }\n\n /**\n * Returns the time `interval` in milliseconds before the slide changes.\n * ```typescript\n * let timeInterval = this.carousel.interval;\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n @Input()\n public get interval(): number {\n return this._interval;\n }\n\n /**\n * Sets the time `interval` in milliseconds before the slide changes.\n * If not set, the carousel will not change `slides` automatically.\n * ```html\n * <igx-carousel [interval]=\"1000\"></igx-carousel>\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n public set interval(value: number) {\n this._interval = +value;\n this.restartInterval();\n }\n\n constructor() {\n super();\n this.differ = this.iterableDiffers.find([]).create(null);\n }\n\n /** @hidden */\n @HostListener('tap', ['$event'])\n public onTap(event) {\n // play pause only when tap on slide\n if (event.target && event.target.classList.contains('igx-slide')) {\n if (this.isPlaying) {\n if (this.pause) {\n this.stoppedByInteraction = true;\n }\n this.stop();\n } else if (this.stoppedByInteraction) {\n this.play();\n }\n }\n }\n\n /** @hidden */\n @HostListener('mouseenter')\n public onMouseEnter() {\n if (this.pause && this.isPlaying) {\n this.stoppedByInteraction = true;\n }\n this.stop();\n }\n\n /** @hidden */\n @HostListener('mouseleave')\n public onMouseLeave() {\n if (this.stoppedByInteraction) {\n this.play();\n }\n }\n\n /** @hidden */\n @HostListener('panleft', ['$event'])\n public onPanLeft(event) {\n if (!this.vertical) {\n this.pan(event);\n }\n }\n\n /** @hidden */\n @HostListener('panright', ['$event'])\n public onPanRight(event) {\n if (!this.vertical) {\n this.pan(event);\n }\n }\n\n /** @hidden */\n @HostListener('panup', ['$event'])\n public onPanUp(event) {\n if (this.vertical) {\n this.pan(event);\n }\n }\n\n /** @hidden */\n @HostListener('pandown', ['$event'])\n public onPanDown(event) {\n if (this.vertical) {\n this.pan(event);\n }\n }\n\n /**\n * @hidden\n */\n @HostListener('panend', ['$event'])\n public onPanEnd(event) {\n if (!this.gesturesSupport) {\n return;\n }\n event.preventDefault();\n\n const slideSize = this.vertical\n ? this.currentItem.nativeElement.offsetHeight\n : this.currentItem.nativeElement.offsetWidth;\n const panOffset = (slideSize / 1000);\n const eventDelta = this.vertical ? event.deltaY : event.deltaX;\n const delta = Math.abs(eventDelta) + panOffset < slideSize ? Math.abs(eventDelta) : slideSize - panOffset;\n const velocity = Math.abs(event.velocity);\n this.resetSlideStyles(this.currentItem);\n if (this.incomingSlide) {\n this.resetSlideStyles(this.incomingSlide);\n if (slideSize / 2 < delta || velocity > 1) {\n this.incomingSlide.direction = eventDelta < 0 ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n this.incomingSlide.previous = false;\n\n this.animationPosition = this.animationType === CarouselAnimationType.fade ?\n delta / slideSize : (slideSize - delta) / slideSize;\n\n if (velocity > 1) {\n this.newDuration = this.defaultAnimationDuration / velocity;\n }\n this.incomingSlide.active = true;\n } else {\n this.currentItem.direction = eventDelta > 0 ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n this.previousItem = this.incomingSlide;\n this.previousItem.previous = true;\n this.animationPosition = this.animationType === CarouselAnimationType.fade ?\n Math.abs((slideSize - delta) / slideSize) : delta / slideSize;\n this.playAnimations();\n }\n }\n\n if (this.stoppedByInteraction) {\n this.play();\n }\n }\n\n /** @hidden */\n public ngAfterContentInit() {\n this.slides.changes\n .pipe(takeUntil(this.destroy$))\n .subscribe((change: QueryList<IgxSlideComponent>) => this.initSlides(change));\n\n this.initSlides(this.slides);\n }\n\n /** @hidden */\n public override ngOnDestroy() {\n super.ngOnDestroy();\n this.destroy$.next(true);\n this.destroy$.complete();\n this.destroyed = true;\n if (this.lastInterval) {\n clearInterval(this.lastInterval);\n }\n }\n\n /** @hidden */\n public handleKeydownPrev(event: KeyboardEvent): void {\n if (this.platformUtil.isActivationKey(event)) {\n event.preventDefault();\n this.prev();\n }\n }\n\n /** @hidden */\n public handleKeydownNext(event: KeyboardEvent): void {\n if (this.platformUtil.isActivationKey(event)) {\n event.preventDefault();\n this.next();\n }\n }\n\n /** @hidden */\n public handleKeyUp(event: KeyboardEvent): void {\n if (event.key === this.platformUtil.KEYMAP.TAB) {\n this._hasKeyboardFocusOnIndicators = true;\n }\n }\n\n /** @hidden */\n public handleFocusOut(event: FocusEvent): void {\n const target = event.relatedTarget as HTMLElement;\n\n if (!target || !target.classList.contains('igx-carousel-indicators__indicator')) {\n this._hasKeyboardFocusOnIndicators = false;\n }\n }\n\n /** @hidden */\n public handleClick(): void {\n this._hasKeyboardFocusOnIndicators = false;\n }\n\n /** @hidden */\n public handleKeydown(event: KeyboardEvent): void {\n const { key } = event;\n const slides = this.slides.toArray();\n\n switch (key) {\n case this.platformUtil.KEYMAP.ARROW_LEFT:\n this.dir.rtl ? this.next() : this.prev();\n break;\n case this.platformUtil.KEYMAP.ARROW_RIGHT:\n this.dir.rtl ? this.prev() : this.next();\n break;\n case this.platformUtil.KEYMAP.HOME:\n event.preventDefault();\n this.select(this.dir.rtl ? last(slides) : first(slides));\n break;\n case this.platformUtil.KEYMAP.END:\n event.preventDefault();\n this.select(this.dir.rtl ? first(slides) : last(slides));\n break;\n }\n\n this.indicatorsElements[this.current].nativeElement.focus();\n }\n\n /**\n * Returns the slide corresponding to the provided `index` or null.\n * ```typescript\n * let slide1 = this.carousel.get(1);\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public get(index: number): IgxSlideComponent {\n return this.slides.find((slide) => slide.index === index);\n }\n\n /**\n * Adds a new slide to the carousel.\n * ```typescript\n * this.carousel.add(newSlide);\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public add(slide: IgxSlideComponent) {\n const newSlides = this.slides.toArray();\n newSlides.push(slide);\n this.slides.reset(newSlides);\n this.slides.notifyOnChanges();\n }\n\n /**\n * Removes a slide from the carousel.\n * ```typescript\n * this.carousel.remove(slide);\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public remove(slide: IgxSlideComponent) {\n if (slide && slide === this.get(slide.index)) { // check if the requested slide for delete is present in the carousel\n const newSlides = this.slides.toArray();\n newSlides.splice(slide.index, 1);\n this.slides.reset(newSlides);\n this.slides.notifyOnChanges();\n }\n }\n\n /**\n * Switches to the passed-in slide with a given `direction`.\n * ```typescript\n * const slide = this.carousel.get(2);\n * this.carousel.select(slide, CarouselAnimationDirection.NEXT);\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public select(slide: IgxSlideComponent, direction?: CarouselAnimationDirection): void;\n /**\n * Switches to slide by index with a given `direction`.\n * ```typescript\n * this.carousel.select(2, CarouselAnimationDirection.NEXT);\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public select(index: number, direction?: CarouselAnimationDirection): void;\n public select(slideOrIndex: IgxSlideComponent | number, direction: CarouselAnimationDirection = CarouselAnimationDirection.NONE): void {\n const slide = typeof slideOrIndex === 'number'\n ? this.get(slideOrIndex)\n : slideOrIndex;\n\n if (slide && slide !== this.currentItem) {\n slide.direction = direction;\n slide.active = true;\n }\n }\n\n /**\n * Transitions to the next slide in the carousel.\n * ```typescript\n * this.carousel.next();\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public next() {\n const index = this.getNextIndex();\n\n if (index === 0 && !this.loop) {\n this.stop();\n return;\n }\n return this.select(this.get(index), CarouselAnimationDirection.NEXT);\n }\n\n /**\n * Transitions to the previous slide in the carousel.\n * ```typescript\n * this.carousel.prev();\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public prev() {\n const index = this.getPrevIndex();\n\n if (!this.loop && index === this.total - 1) {\n this.stop();\n return;\n }\n return this.select(this.get(index), CarouselAnimationDirection.PREV);\n }\n\n /**\n * Resumes playing of the carousel if in paused state.\n * No operation otherwise.\n * ```typescript\n * this.carousel.play();\n * }\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public play() {\n if (!this.playing) {\n this.playing = true;\n this.carouselPlaying.emit(this);\n this.restartInterval();\n this.stoppedByInteraction = false;\n }\n }\n\n /**\n * Stops slide transitions if the `pause` option is set to `true`.\n * No operation otherwise.\n * ```typescript\n * this.carousel.stop();\n * }\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public stop() {\n if (this.pause) {\n this.playing = false;\n this.carouselPaused.emit(this);\n this.resetInterval();\n }\n }\n\n protected getPreviousElement(): HTMLElement {\n return this.previousItem.nativeElement;\n }\n\n protected getCurrentElement(): HTMLElement {\n return this.currentItem.nativeElement;\n }\n\n private resetInterval() {\n if (this.lastInterval) {\n clearInterval(this.lastInterval);\n this.lastInterval = null;\n }\n }\n\n private restartInterval() {\n this.resetInterval();\n\n if (!isNaN(this.interval) && this.interval > 0 && this.platformUtil.isBrowser) {\n this.lastInterval = setInterval(() => {\n const tick = +this.interval;\n if (this.playing && this.total && !isNaN(tick) && tick > 0) {\n this.next();\n } else {\n this.stop();\n }\n }, this.interval);\n }\n }\n\n /** @hidden */\n public get nextButtonDisabled() {\n return !this.loop && this.current === (this.total - 1);\n }\n\n /** @hidden */\n public get prevButtonDisabled() {\n return !this.loop && this.current === 0;\n }\n\n private get indicatorsElements() {\n return this._indicators.toArray();\n }\n\n private getIndicatorsClass(): string {\n switch (this.indicatorsOrientation) {\n case CarouselIndicatorsOrientation.top:\n return CarouselIndicatorsOrientation.start;\n case CarouselIndicatorsOrientation.bottom:\n return CarouselIndicatorsOrientation.end;\n default:\n return this.indicatorsOrientation;\n }\n }\n\n private getNextIndex(): number {\n return (this.current + 1) % this.total;\n }\n\n private getPrevIndex(): number {\n return this.current - 1 < 0 ? this.total - 1 : this.current - 1;\n }\n\n private resetSlideStyles(slide: IgxSlideComponent) {\n slide.nativeElement.style.transform = '';\n slide.nativeElement.style.opacity = '';\n }\n\n private pan(event) {\n const slideSize = this.vertical\n ? this.currentItem.nativeElement.offsetHeight\n : this.currentItem.nativeElement.offsetWidth;\n const panOffset = (slideSize / 1000);\n const delta = this.vertical ? event.deltaY : event.deltaX;\n const index = delta < 0 ? this.getNextIndex() : this.getPrevIndex();\n const offset = delta < 0 ? slideSize + delta : -slideSize + delta;\n\n if (!this.gesturesSupport || event.isFinal || Math.abs(delta) + panOffset >= slideSize) {\n return;\n }\n\n if (!this.loop && ((this.current === 0 && delta > 0) || (this.current === this.total - 1 && delta < 0))) {\n this.incomingSlide = null;\n return;\n }\n\n event.preventDefault();\n if (this.isPlaying) {\n this.stoppedByInteraction = true;\n this.stop();\n }\n\n if (this.previousItem && this.previousItem.previous) {\n this.previousItem.previous = false;\n }\n this.finishAnimations();\n\n if (this.incomingSlide) {\n if (index !== this.incomingSlide.index) {\n this.resetSlideStyles(this.incomingSlide);\n this.incomingSlide.previous = false;\n this.incomingSlide = this.get(index);\n }\n } else {\n this.incomingSlide = this.get(index);\n }\n this.incomingSlide.previous = true;\n\n if (this.animationType === CarouselAnimationType.fade) {\n this.currentItem.nativeElement.style.opacity = `${Math.abs(offset) / slideSize}`;\n } else {\n this.currentItem.nativeElement.style.transform = this.vertical\n ? `translateY(${delta}px)`\n : `translateX(${delta}px)`;\n this.incomingSlide.nativeElement.style.transform = this.vertical\n ? `translateY(${offset}px)`\n : `translateX(${offset}px)`;\n }\n }\n\n private unsubscriber(slide: IgxSlideComponent) {\n return merge(this.destroy$, slide.isDestroyed);\n }\n\n private onSlideActivated(slide: IgxSlideComponent) {\n if (slide.active && slide !== this.currentItem) {\n if (slide.direction === CarouselAnimationDirection.NONE) {\n const newIndex = slide.index;\n slide.direction = newIndex > this.current ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n }\n\n if (this.currentItem) {\n if (this.previousItem && this.previousItem.previous) {\n this.previousItem.previous = false;\n }\n this.currentItem.direction = slide.direction;\n this.currentItem.active = false;\n\n this.previousItem = this.currentItem;\n this.currentItem = slide;\n this.triggerAnimations();\n } else {\n this.currentItem = slide;\n }\n this.slideChanged.emit({ carousel: this, slide });\n this.restartInterval();\n this.cdr.markForCheck();\n }\n }\n\n\n private finishAnimations() {\n if (this.animationStarted(this.leaveAnimationPlayer)) {\n this.leaveAnimationPlayer.finish();\n }\n\n if (this.animationStarted(this.enterAnimationPlayer)) {\n this.enterAnimationPlayer.finish();\n }\n }\n\n private initSlides(change: QueryList<IgxSlideComponent>) {\n const diff = this.differ.diff(change.toArray());\n if (diff) {\n this.slides.reduce((any, c, ind) => c.index = ind, 0); // reset slides indexes\n diff.forEachAddedItem((record: IterableChangeRecord<IgxSlideComponent>) => {\n const slide = record.item;\n slide.total = this.total;\n this.slideAdded.emit({ carousel: this, slide });\n if (slide.active) {\n this.currentItem = slide;\n }\n slide.activeChange.pipe(takeUntil(this.unsubscriber(slide))).subscribe(() => this.onSlideActivated(slide));\n });\n\n diff.forEachRemovedItem((record: IterableChangeRecord<IgxSlideComponent>) => {\n const slide = record.item;\n this.slideRemoved.emit({ carousel: this, slide });\n if (slide.active) {\n slide.active = false;\n this.currentItem = this.get(slide.index < this.total ? slide.index : this.total - 1);\n }\n });\n\n this.updateSlidesSelection();\n }\n }\n\n private updateSlidesSelection() {\n if (this.platformUtil.isBrowser) {\n requestAnimationFrame(() => {\n if (this.currentItem) {\n this.currentItem.active = true;\n const activeSlides = this.slides.filter(slide => slide.active && slide.index !== this.currentItem.index);\n activeSlides.forEach(slide => slide.active = false);\n } else if (this.total) {\n this.slides.first.active = true;\n }\n this.play();\n });\n }\n }\n}\n\nexport interface ISlideEventArgs extends IBaseEventArgs {\n carousel: IgxCarouselComponent;\n slide: IgxSlideComponent;\n}\n","<ng-template #defaultIndicator let-slide>\n <div class=\"igx-nav-dot\"\n [class.igx-nav-dot--active]=\"slide.active\">\n </div>\n</ng-template>\n\n<ng-template #defaultNextButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_next\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n<ng-template #defaultPrevButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_prev\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n@if (navigation && slides.length) {\n <button\n igxButton\n class=\"igx-carousel__arrow--prev\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_previous_slide\"\n [disabled]=\"prevButtonDisabled\"\n (click)=\"prev()\"\n (keydown)=\"handleKeydownPrev($event)\">\n <ng-container *ngTemplateOutlet=\"getPrevButtonTemplate; context: {$implicit: prevButtonDisabled};\"></ng-container>\n </button>\n}\n\n@if (navigation && slides.length) {\n <button\n igxButton\n class=\"igx-carousel__arrow--next\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_next_slide\"\n [disabled]=\"nextButtonDisabled\"\n (click)=\"next()\"\n (keydown)=\"handleKeydownNext($event)\">\n <ng-container *ngTemplateOutlet=\"getNextButtonTemplate; context: {$implicit: nextButtonDisabled};\"></ng-container>\n </button>\n}\n\n@if (showIndicators) {\n <div [ngClass]=\"indicatorsClass\" [attr.role]=\"'tablist'\" (keyup)=\"handleKeyUp($event)\" (focusout)=\"handleFocusOut($event)\" (click)=\"handleClick()\" (keydown)=\"handleKeydown($event)\">\n @for (slide of slides; track slide) {\n <div #indicators\n class=\"igx-carousel-indicators__indicator\"\n (click)=\"select(slide)\"\n [id]=\"'tab-'+ slide.index + '-' + total\"\n [attr.role]=\"'tab'\"\n [attr.tabindex]=\"slide.active ? 0 : -1\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_slide + ' ' + (slide.index + 1) + ' ' + resourceStrings.igx_carousel_of + ' ' + this.total\"\n [attr.aria-controls]=\"'panel-' + slide.index\"\n [attr.aria-selected]=\"slide.active\">\n <ng-container *ngTemplateOutlet=\"getIndicatorTemplate; context: {$implicit: slide};\"></ng-container>\n </div>\n }\n </div>\n}\n\n@if (showIndicatorsLabel) {\n <div [ngClass]=\"indicatorsClass\" class=\"igx-carousel-label-indicator\">\n <span [id]=\"labelId\" class=\"igx-carousel__label\">{{getCarouselLabel}}</span>\n </div>\n}\n\n<div class=\"igx-carousel__inner\" [attr.aria-live]=\"!interval || stoppedByInteraction ? 'polite' : 'off'\">\n <ng-content></ng-content>\n</div>\n","import { IgxCarouselComponent } from './carousel.component';\nimport { IgxCarouselIndicatorDirective, IgxCarouselNextButtonDirective, IgxCarouselPrevButtonDirective } from './carousel.directives';\nimport { IgxSlideComponent } from './slide.component';\n\nexport { CarouselAnimationDirection, IgxCarouselComponentBase, IgxSlideComponentBase, CarouselAnimationSettings } from './carousel-base';\nexport * from './carousel.component';\nexport * from './slide.component';\nexport * from './carousel.directives';\nexport { CarouselAnimationType, CarouselIndicatorsOrientation } from './enums';\n\n/* NOTE: Carousel directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_CAROUSEL_DIRECTIVES = [\n IgxCarouselComponent,\n IgxSlideComponent,\n IgxCarouselIndicatorDirective,\n IgxCarouselNextButtonDirective,\n IgxCarouselPrevButtonDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_CAROUSEL_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_CAROUSEL_DIRECTIVES\n ],\n exports: [\n ...IGX_CAROUSEL_DIRECTIVES\n ]\n})\nexport class IgxCarouselModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵIgxDirectionality","i1.IgxCarouselComponent","i2.IgxSlideComponent","i3.IgxCarouselIndicatorDirective","i3.IgxCarouselNextButtonDirective","i3.IgxCarouselPrevButtonDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"igniteui-angular-carousel.mjs","sources":["../../../projects/igniteui-angular/carousel/src/carousel/enums.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel-base.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel.directives.ts","../../../projects/igniteui-angular/carousel/src/carousel/slide.component.ts","../../../projects/igniteui-angular/carousel/src/carousel/slide.component.html","../../../projects/igniteui-angular/carousel/src/carousel/carousel.component.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel.component.html","../../../projects/igniteui-angular/carousel/src/carousel/public_api.ts","../../../projects/igniteui-angular/carousel/src/carousel/carousel.module.ts","../../../projects/igniteui-angular/carousel/src/igniteui-angular-carousel.ts"],"sourcesContent":["\nexport const CarouselAnimationType = {\n none: 'none',\n slide: 'slide',\n fade: 'fade'\n} as const;\nexport type CarouselAnimationType = (typeof CarouselAnimationType)[keyof typeof CarouselAnimationType];\n\nexport const CarouselIndicatorsOrientation = {\n /**\n * @deprecated in version 19.1.0. Use `end` instead.\n */\n bottom: 'bottom',\n /**\n * @deprecated in version 19.1.0. Use `start` instead.\n */\n top: 'top',\n start: 'start',\n end: 'end'\n} as const;\nexport type CarouselIndicatorsOrientation = (typeof CarouselIndicatorsOrientation)[keyof typeof CarouselIndicatorsOrientation];\n","import { AnimationReferenceMetadata, useAnimation } from '@angular/animations';\nimport { ChangeDetectorRef, Directive, EventEmitter, inject, OnDestroy } from '@angular/core';\nimport { IgxAngularAnimationService } from 'igniteui-angular/core';\nimport { AnimationPlayer, AnimationService } from 'igniteui-angular/core';\nimport { fadeIn, slideInLeft } from 'igniteui-angular/animations';\nimport { CarouselAnimationType } from './enums';\n\nexport enum CarouselAnimationDirection { NONE, NEXT, PREV }\n\nexport interface CarouselAnimationSettings {\n enterAnimation: AnimationReferenceMetadata;\n leaveAnimation: AnimationReferenceMetadata;\n}\n\n/** @hidden */\nexport interface IgxSlideComponentBase {\n direction: CarouselAnimationDirection;\n previous: boolean;\n}\n\n/** @hidden */\n@Directive()\nexport abstract class IgxCarouselComponentBase implements OnDestroy {\n private animationService = inject<AnimationService>(IgxAngularAnimationService);\n protected cdr = inject(ChangeDetectorRef);\n\n /** @hidden */\n public animationType: CarouselAnimationType = CarouselAnimationType.slide;\n\n /** @hidden @internal */\n public enterAnimationDone = new EventEmitter();\n /** @hidden @internal */\n public leaveAnimationDone = new EventEmitter();\n\n /** @hidden */\n protected currentItem: IgxSlideComponentBase;\n /** @hidden */\n protected previousItem: IgxSlideComponentBase;\n /** @hidden */\n protected enterAnimationPlayer?: AnimationPlayer;\n /** @hidden */\n protected leaveAnimationPlayer?: AnimationPlayer;\n /** @hidden */\n protected defaultAnimationDuration = 320;\n /** @hidden */\n protected animationPosition = 0;\n /** @hidden */\n protected newDuration = 0;\n /** @hidden */\n protected vertical = false;\n\n public ngOnDestroy(): void {\n if (this.enterAnimationPlayer) {\n this.enterAnimationPlayer.destroy();\n this.enterAnimationPlayer = null;\n }\n if (this.leaveAnimationPlayer) {\n this.leaveAnimationPlayer.destroy();\n this.leaveAnimationPlayer = null;\n }\n }\n\n /** @hidden */\n protected triggerAnimations() {\n if (this.animationType !== CarouselAnimationType.none) {\n if (this.animationStarted(this.leaveAnimationPlayer) || this.animationStarted(this.enterAnimationPlayer)) {\n requestAnimationFrame(() => {\n this.resetAnimations();\n this.playAnimations();\n });\n } else {\n this.playAnimations();\n }\n }\n }\n\n /** @hidden */\n protected animationStarted(animation: AnimationPlayer): boolean {\n return animation && animation.hasStarted();\n }\n\n /** @hidden */\n protected playAnimations() {\n this.playLeaveAnimation();\n this.playEnterAnimation();\n }\n\n private resetAnimations() {\n if (this.animationStarted(this.leaveAnimationPlayer)) {\n this.leaveAnimationPlayer.reset();\n this.leaveAnimationDone.emit();\n }\n\n if (this.animationStarted(this.enterAnimationPlayer)) {\n this.enterAnimationPlayer.reset();\n this.enterAnimationDone.emit();\n this.cdr.markForCheck();\n }\n }\n\n private getAnimation(): CarouselAnimationSettings {\n let duration;\n if (this.newDuration) {\n duration = this.animationPosition ? this.animationPosition * this.newDuration : this.newDuration;\n } else {\n duration = this.animationPosition ? this.animationPosition * this.defaultAnimationDuration : this.defaultAnimationDuration;\n }\n\n const trans = this.animationPosition ? this.animationPosition * 100 : 100;\n switch (this.animationType) {\n case CarouselAnimationType.slide:\n return {\n enterAnimation: useAnimation(slideInLeft,\n {\n params: {\n delay: '0s',\n duration: `${duration}ms`,\n endOpacity: 1,\n startOpacity: 1,\n fromPosition: `${this.vertical ? 'translateY' : 'translateX'}(${this.currentItem.direction === 1 ? trans : -trans}%)`,\n toPosition: `${this.vertical ? 'translateY(0%)' : 'translateX(0%)'}`\n }\n }),\n leaveAnimation: useAnimation(slideInLeft,\n {\n params: {\n delay: '0s',\n duration: `${duration}ms`,\n endOpacity: 1,\n startOpacity: 1,\n fromPosition: `${this.vertical ? 'translateY(0%)' : 'translateX(0%)'}`,\n toPosition: `${this.vertical ? 'translateY' : 'translateX'}(${this.currentItem.direction === 1 ? -trans : trans}%)`,\n }\n })\n };\n case CarouselAnimationType.fade:\n return {\n enterAnimation: useAnimation(fadeIn,\n { params: { duration: `${duration}ms`, startOpacity: `${this.animationPosition}` } }),\n leaveAnimation: null\n };\n }\n return {\n enterAnimation: null,\n leaveAnimation: null\n };\n }\n\n private playEnterAnimation() {\n const animation = this.getAnimation().enterAnimation;\n if (!animation) {\n return;\n }\n\n this.enterAnimationPlayer = this.animationService.buildAnimation(animation, this.getCurrentElement());\n this.enterAnimationPlayer.animationEnd.subscribe(() => {\n // TODO: animation may never end. Find better way to clean up the player\n if (this.enterAnimationPlayer) {\n this.enterAnimationPlayer.destroy();\n this.enterAnimationPlayer = null;\n }\n this.animationPosition = 0;\n this.newDuration = 0;\n this.previousItem.previous = false;\n this.enterAnimationDone.emit();\n this.cdr.markForCheck();\n });\n this.previousItem.previous = true;\n this.enterAnimationPlayer.play();\n }\n\n private playLeaveAnimation() {\n const animation = this.getAnimation().leaveAnimation;\n if (!animation) {\n return;\n }\n\n this.leaveAnimationPlayer = this.animationService.buildAnimation(animation, this.getPreviousElement());\n this.leaveAnimationPlayer.animationEnd.subscribe(() => {\n // TODO: animation may never end. Find better way to clean up the player\n if (this.leaveAnimationPlayer) {\n this.leaveAnimationPlayer.destroy();\n this.leaveAnimationPlayer = null;\n }\n this.animationPosition = 0;\n this.newDuration = 0;\n this.leaveAnimationDone.emit();\n });\n this.leaveAnimationPlayer.play();\n }\n\n protected abstract getPreviousElement(): HTMLElement;\n\n protected abstract getCurrentElement(): HTMLElement;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[igxCarouselIndicator]',\n standalone: true\n})\nexport class IgxCarouselIndicatorDirective {\n}\n\n@Directive({\n selector: '[igxCarouselNextButton]',\n standalone: true\n})\nexport class IgxCarouselNextButtonDirective {\n}\n\n@Directive({\n selector: '[igxCarouselPrevButton]',\n standalone: true\n})\nexport class IgxCarouselPrevButtonDirective {\n}\n","import { Component, OnDestroy, Input, HostBinding, Output, EventEmitter, ElementRef, AfterContentChecked, booleanAttribute, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { CarouselAnimationDirection, IgxSlideComponentBase } from './carousel-base';\n\n/**\n * A slide component that usually holds an image and/or a caption text.\n * IgxSlideComponent is usually a child component of an IgxCarouselComponent.\n *\n * ```\n * <igx-slide [input bindings] >\n * <ng-content></ng-content>\n * </igx-slide>\n * ```\n *\n * @export\n */\n@Component({\n selector: 'igx-slide',\n templateUrl: 'slide.component.html',\n standalone: true\n})\nexport class IgxSlideComponent implements AfterContentChecked, OnDestroy, IgxSlideComponentBase {\n private elementRef = inject(ElementRef);\n\n /**\n * Gets/sets the `index` of the slide inside the carousel.\n * ```html\n * <igx-carousel>\n * <igx-slide index=\"1\"></igx-slide>\n * <igx-carousel>\n * ```\n *\n * @memberOf IgxSlideComponent\n */\n @Input() public index: number;\n\n /**\n * Gets/sets the target `direction` for the slide.\n * ```html\n * <igx-carousel>\n * <igx-slide direction=\"NEXT\"></igx-slide>\n * <igx-carousel>\n * ```\n *\n * @memberOf IgxSlideComponent\n */\n @Input() public direction: CarouselAnimationDirection;\n\n @Input()\n public total: number;\n\n /**\n * Returns the `tabIndex` of the slide component.\n * ```typescript\n * let tabIndex = this.carousel.tabIndex;\n * ```\n *\n * @memberof IgxSlideComponent\n * @deprecated in version 19.2.0.\n */\n @HostBinding('attr.tabindex')\n public get tabIndex() {\n return this.active ? 0 : null;\n }\n\n /**\n * @hidden\n */\n @HostBinding('attr.id')\n public id: string;\n\n /**\n * Returns the `role` of the slide component.\n * By default is set to `tabpanel`\n *\n * @memberof IgxSlideComponent\n */\n @HostBinding('attr.role')\n public tab = 'tabpanel';\n\n /** @hidden */\n @HostBinding('attr.aria-labelledby')\n public ariaLabelledBy;\n\n /**\n * Returns the class of the slide component.\n * ```typescript\n * let class = this.slide.cssClass;\n * ```\n *\n * @memberof IgxSlideComponent\n */\n @HostBinding('class.igx-slide')\n public cssClass = 'igx-slide';\n\n /**\n * Gets/sets the `active` state of the slide.\n * ```html\n * <igx-carousel>\n * <igx-slide [active] =\"false\"></igx-slide>\n * <igx-carousel>\n * ```\n *\n * Two-way data binding.\n * ```html\n * <igx-carousel>\n * <igx-slide [(active)] =\"model.isActive\"></igx-slide>\n * <igx-carousel>\n * ```\n *\n * @memberof IgxSlideComponent\n */\n @HostBinding('class.igx-slide--current')\n @Input({ transform: booleanAttribute })\n public get active(): boolean {\n return this._active;\n }\n\n public set active(value) {\n this._active = value;\n this.activeChange.emit(this._active);\n }\n\n @HostBinding('class.igx-slide--previous')\n @Input({ transform: booleanAttribute }) public previous = false;\n\n /**\n * @hidden\n */\n @Output() public activeChange = new EventEmitter<boolean>();\n\n private _active = false;\n private _destroy$ = new Subject<boolean>();\n\n /**\n * Returns a reference to the carousel element in the DOM.\n * ```typescript\n * let nativeElement = this.slide.nativeElement;\n * ```\n *\n * @memberof IgxSlideComponent\n */\n public get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n /**\n * @hidden\n */\n public get isDestroyed(): Subject<boolean> {\n return this._destroy$;\n }\n\n public ngAfterContentChecked() {\n this.id = `panel-${this.index}`;\n this.ariaLabelledBy = `tab-${this.index}-${this.total}`;\n }\n\n /**\n * @hidden\n */\n public ngOnDestroy() {\n this._destroy$.next(true);\n this._destroy$.complete();\n }\n}\n","<ng-content></ng-content>\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { AfterContentInit, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, HostListener, Injectable, Input, IterableChangeRecord, IterableDiffer, IterableDiffers, OnDestroy, Output, QueryList, TemplateRef, ViewChild, ViewChildren, booleanAttribute, DOCUMENT, inject } from '@angular/core';\nimport { HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CarouselResourceStringsEN, ICarouselResourceStrings, ɵIgxDirectionality } from 'igniteui-angular/core';\nimport { first, IBaseEventArgs, last, PlatformUtil } from 'igniteui-angular/core';\nimport { CarouselAnimationDirection, IgxCarouselComponentBase } from './carousel-base';\nimport { IgxCarouselIndicatorDirective, IgxCarouselNextButtonDirective, IgxCarouselPrevButtonDirective } from './carousel.directives';\nimport { IgxSlideComponent } from './slide.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxButtonDirective } from 'igniteui-angular/directives';\nimport { getCurrentResourceStrings, onResourceChangeHandle } from 'igniteui-angular/core';\nimport { HammerGesturesManager } from 'igniteui-angular/core';\nimport { CarouselAnimationType, CarouselIndicatorsOrientation } from './enums';\n\nlet NEXT_ID = 0;\n\n\n@Injectable()\nexport class CarouselHammerConfig extends HammerGestureConfig {\n public override overrides = {\n pan: { direction: HammerGesturesManager.Hammer?.DIRECTION_HORIZONTAL }\n };\n}\n/**\n * **Ignite UI for Angular Carousel** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/carousel.html)\n *\n * The Ignite UI Carousel is used to browse or navigate through a collection of slides. Slides can contain custom\n * content such as images or cards and be used for things such as on-boarding tutorials or page-based interfaces.\n * It can be used as a separate fullscreen element or inside another component.\n *\n * Example:\n * ```html\n * <igx-carousel>\n * <igx-slide>\n * <h3>First Slide Header</h3>\n * <p>First slide Content</p>\n * <igx-slide>\n * <igx-slide>\n * <h3>Second Slide Header</h3>\n * <p>Second Slide Content</p>\n * </igx-carousel>\n * ```\n */\n@Component({\n providers: [\n {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: CarouselHammerConfig\n }\n ],\n selector: 'igx-carousel',\n templateUrl: 'carousel.component.html',\n styles: [`\n :host {\n display: block;\n outline-style: none;\n }`],\n imports: [IgxButtonDirective, IgxIconComponent, NgClass, NgTemplateOutlet]\n})\nexport class IgxCarouselComponent extends IgxCarouselComponentBase implements OnDestroy, AfterContentInit {\n private element = inject(ElementRef);\n private iterableDiffers = inject(IterableDiffers);\n private platformUtil = inject(PlatformUtil);\n private dir = inject(ɵIgxDirectionality);\n private document = inject(DOCUMENT);\n\n\n /**\n * Sets the `id` of the carousel.\n * If not set, the `id` of the first carousel component will be `\"igx-carousel-0\"`.\n * ```html\n * <igx-carousel id=\"my-first-carousel\"></igx-carousel>\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n @HostBinding('attr.id')\n @Input()\n public id = `igx-carousel-${NEXT_ID++}`;\n /**\n * Returns the `role` attribute of the carousel.\n * ```typescript\n * let carouselRole = this.carousel.role;\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n @HostBinding('attr.role') public role = 'region';\n\n /** @hidden */\n @HostBinding('attr.aria-roledescription')\n public roleDescription = 'carousel';\n\n /** @hidden */\n @HostBinding('attr.aria-labelledby')\n public get labelId() {\n return this.showIndicatorsLabel ? `${this.id}-label` : null;\n }\n\n /** @hidden */\n @HostBinding('class.igx-carousel--vertical')\n\tpublic get isVertical(): boolean {\n\t\treturn this.vertical;\n\t}\n\n /**\n * Returns the class of the carousel component.\n * ```typescript\n * let class = this.carousel.cssClass;\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n @HostBinding('class.igx-carousel')\n public cssClass = 'igx-carousel';\n\n /**\n * Gets the `touch-action` style of the `list item`.\n * ```typescript\n * let touchAction = this.listItem.touchAction;\n * ```\n */\n @HostBinding('style.touch-action')\n public get touchAction() {\n return this.gesturesSupport ? 'pan-y' : 'auto';\n }\n\n /**\n * Sets whether the carousel should `loop` back to the first slide after reaching the last slide.\n * Default value is `true`.\n * ```html\n * <igx-carousel [loop]=\"false\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public loop = true;\n\n /**\n * Sets whether the carousel will `pause` the slide transitions on user interactions.\n * Default value is `true`.\n * ```html\n * <igx-carousel [pause]=\"false\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public pause = true;\n\n /**\n * Controls whether the carousel should render the left/right `navigation` buttons.\n * Default value is `true`.\n * ```html\n * <igx-carousel [navigation]=\"false\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public navigation = true;\n\n /**\n * Controls whether the carousel should render the indicators.\n * Default value is `true`.\n * ```html\n * <igx-carousel [indicators]=\"false\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public indicators = true;\n\n\n /**\n * Controls whether the carousel has vertical alignment.\n * Default value is `false`.\n * ```html\n * <igx-carousel [vertical]=\"true\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public override vertical = false;\n\n /**\n * Controls whether the carousel should support gestures.\n * Default value is `true`.\n * ```html\n * <igx-carousel [gesturesSupport]=\"false\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input({ transform: booleanAttribute }) public gesturesSupport = true;\n\n /**\n * Controls the maximum indexes that can be shown.\n * Default value is `10`.\n * ```html\n * <igx-carousel [maximumIndicatorsCount]=\"5\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input() public maximumIndicatorsCount = 10;\n\n /**\n * Gets/sets the display mode of carousel indicators. It can be `start` or `end`.\n * Default value is `end`.\n * ```html\n * <igx-carousel indicatorsOrientation=\"start\">\n * <igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input() public indicatorsOrientation: CarouselIndicatorsOrientation = CarouselIndicatorsOrientation.end;\n\n /**\n * Gets/sets the animation type of carousel.\n * Default value is `slide`.\n * ```html\n * <igx-carousel animationType=\"none\">\n * <igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Input() public override animationType: CarouselAnimationType = CarouselAnimationType.slide;\n\n /**\n * The custom template, if any, that should be used when rendering carousel indicators\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.carousel.indicatorTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-carousel #carousel>\n * ...\n * <ng-template igxCarouselIndicator let-slide>\n * <igx-icon *ngIf=\"slide.active\">brightness_7</igx-icon>\n * <igx-icon *ngIf=\"!slide.active\">brightness_5</igx-icon>\n * </ng-template>\n * </igx-carousel>\n * ```\n */\n @ContentChild(IgxCarouselIndicatorDirective, { read: TemplateRef, static: false })\n public indicatorTemplate: TemplateRef<any> = null;\n\n /**\n * The custom template, if any, that should be used when rendering carousel next button\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.carousel.nextButtonTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-carousel #carousel>\n * ...\n * <ng-template igxCarouselNextButton let-disabled>\n * <button type=\"button\" igxButton=\"fab\" igxRipple=\"white\" [disabled]=\"disabled\">\n * <igx-icon name=\"add\"></igx-icon>\n * </button>\n * </ng-template>\n * </igx-carousel>\n * ```\n */\n @ContentChild(IgxCarouselNextButtonDirective, { read: TemplateRef, static: false })\n public nextButtonTemplate: TemplateRef<any> = null;\n\n /**\n * The custom template, if any, that should be used when rendering carousel previous button\n *\n * ```typescript\n * // Set in typescript\n * const myCustomTemplate: TemplateRef<any> = myComponent.customTemplate;\n * myComponent.carousel.prevButtonTemplate = myCustomTemplate;\n * ```\n * ```html\n * <!-- Set in markup -->\n * <igx-carousel #carousel>\n * ...\n * <ng-template igxCarouselPrevButton let-disabled>\n * <button type=\"button\" igxButton=\"fab\" igxRipple=\"white\" [disabled]=\"disabled\">\n * <igx-icon name=\"remove\"></igx-icon>\n * </button>\n * </ng-template>\n * </igx-carousel>\n * ```\n */\n @ContentChild(IgxCarouselPrevButtonDirective, { read: TemplateRef, static: false })\n public prevButtonTemplate: TemplateRef<any> = null;\n\n /**\n * The collection of `slides` currently in the carousel.\n * ```typescript\n * let slides: QueryList<IgxSlideComponent> = this.carousel.slides;\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @ContentChildren(IgxSlideComponent)\n public slides: QueryList<IgxSlideComponent>;\n\n /**\n * An event that is emitted after a slide transition has happened.\n * Provides references to the `IgxCarouselComponent` and `IgxSlideComponent` as event arguments.\n * ```html\n * <igx-carousel (slideChanged)=\"slideChanged($event)\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Output() public slideChanged = new EventEmitter<ISlideEventArgs>();\n\n /**\n * An event that is emitted after a slide has been added to the carousel.\n * Provides references to the `IgxCarouselComponent` and `IgxSlideComponent` as event arguments.\n * ```html\n * <igx-carousel (slideAdded)=\"slideAdded($event)\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Output() public slideAdded = new EventEmitter<ISlideEventArgs>();\n\n /**\n * An event that is emitted after a slide has been removed from the carousel.\n * Provides references to the `IgxCarouselComponent` and `IgxSlideComponent` as event arguments.\n * ```html\n * <igx-carousel (slideRemoved)=\"slideRemoved($event)\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Output() public slideRemoved = new EventEmitter<ISlideEventArgs>();\n\n /**\n * An event that is emitted after the carousel has been paused.\n * Provides a reference to the `IgxCarouselComponent` as an event argument.\n * ```html\n * <igx-carousel (carouselPaused)=\"carouselPaused($event)\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Output() public carouselPaused = new EventEmitter<IgxCarouselComponent>();\n\n /**\n * An event that is emitted after the carousel has resumed transitioning between `slides`.\n * Provides a reference to the `IgxCarouselComponent` as an event argument.\n * ```html\n * <igx-carousel (carouselPlaying)=\"carouselPlaying($event)\"></igx-carousel>\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n @Output() public carouselPlaying = new EventEmitter<IgxCarouselComponent>();\n\n @ViewChild('defaultIndicator', { read: TemplateRef, static: true })\n private defaultIndicator: TemplateRef<any>;\n\n @ViewChild('defaultNextButton', { read: TemplateRef, static: true })\n private defaultNextButton: TemplateRef<any>;\n\n @ViewChild('defaultPrevButton', { read: TemplateRef, static: true })\n private defaultPrevButton: TemplateRef<any>;\n\n @ViewChildren('indicators', { read: ElementRef })\n private _indicators: QueryList<ElementRef<HTMLDivElement>>;\n\n /**\n * @hidden\n * @internal\n */\n public stoppedByInteraction: boolean;\n protected override currentItem: IgxSlideComponent;\n protected override previousItem: IgxSlideComponent;\n private _interval: number;\n private _resourceStrings: ICarouselResourceStrings = null;\n private _defaultResourceStrings = getCurrentResourceStrings(CarouselResourceStringsEN);\n private lastInterval: any;\n private playing: boolean;\n private destroyed: boolean;\n private destroy$ = new Subject<any>();\n private differ: IterableDiffer<IgxSlideComponent> | null = null;\n private incomingSlide: IgxSlideComponent;\n private _hasKeyboardFocusOnIndicators = false;\n\n /**\n * An accessor that sets the resource strings.\n * By default it uses EN resources.\n */\n @Input()\n public set resourceStrings(value: ICarouselResourceStrings) {\n this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n }\n\n /**\n * An accessor that returns the resource strings.\n */\n public get resourceStrings(): ICarouselResourceStrings {\n return this._resourceStrings || this._defaultResourceStrings;\n }\n\n /** @hidden */\n public get getIndicatorTemplate(): TemplateRef<any> {\n if (this.indicatorTemplate) {\n return this.indicatorTemplate;\n }\n return this.defaultIndicator;\n }\n\n /** @hidden */\n public get getNextButtonTemplate(): TemplateRef<any> {\n if (this.nextButtonTemplate) {\n return this.nextButtonTemplate;\n }\n\n return this.defaultNextButton\n }\n\n /** @hidden */\n public get getPrevButtonTemplate(): TemplateRef<any> {\n if (this.prevButtonTemplate) {\n return this.prevButtonTemplate;\n }\n\n return this.defaultPrevButton\n }\n\n /** @hidden */\n public get indicatorsClass() {\n return {\n ['igx-carousel-indicators--focused']: this._hasKeyboardFocusOnIndicators,\n [`igx-carousel-indicators--${this.getIndicatorsClass()}`]: true\n };\n }\n\n /** @hidden */\n public get showIndicators(): boolean {\n return this.indicators && this.total <= this.maximumIndicatorsCount && this.total > 0;\n }\n\n /** @hidden */\n public get showIndicatorsLabel(): boolean {\n return this.indicators && this.total > this.maximumIndicatorsCount;\n }\n\n /** @hidden */\n public get getCarouselLabel() {\n return `${this.current + 1} ${this.resourceStrings.igx_carousel_of} ${this.total}`;\n }\n\n /**\n * Returns the total number of `slides` in the carousel.\n * ```typescript\n * let slideCount = this.carousel.total;\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public get total(): number {\n return this.slides?.length;\n }\n\n /**\n * The index of the slide being currently shown.\n * ```typescript\n * let currentSlideNumber = this.carousel.current;\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public get current(): number {\n return !this.currentItem ? 0 : this.currentItem.index;\n }\n\n /**\n * Returns a boolean indicating if the carousel is playing.\n * ```typescript\n * let isPlaying = this.carousel.isPlaying;\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public get isPlaying(): boolean {\n return this.playing;\n }\n\n /**\n * Returns а boolean indicating if the carousel is destroyed.\n * ```typescript\n * let isDestroyed = this.carousel.isDestroyed;\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public get isDestroyed(): boolean {\n return this.destroyed;\n }\n /**\n * Returns a reference to the carousel element in the DOM.\n * ```typescript\n * let nativeElement = this.carousel.nativeElement;\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n public get nativeElement(): any {\n return this.element.nativeElement;\n }\n\n /**\n * Returns the time `interval` in milliseconds before the slide changes.\n * ```typescript\n * let timeInterval = this.carousel.interval;\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n @Input()\n public get interval(): number {\n return this._interval;\n }\n\n /**\n * Sets the time `interval` in milliseconds before the slide changes.\n * If not set, the carousel will not change `slides` automatically.\n * ```html\n * <igx-carousel [interval]=\"1000\"></igx-carousel>\n * ```\n *\n * @memberof IgxCarouselComponent\n */\n public set interval(value: number) {\n this._interval = +value;\n this.restartInterval();\n }\n\n constructor() {\n super();\n this.differ = this.iterableDiffers.find([]).create(null);\n onResourceChangeHandle(this.destroy$, () => {\n this._defaultResourceStrings = getCurrentResourceStrings(CarouselResourceStringsEN, false);\n }, this);\n }\n\n /** @hidden */\n @HostListener('tap', ['$event'])\n public onTap(event) {\n // play pause only when tap on slide\n if (event.target && event.target.classList.contains('igx-slide')) {\n if (this.isPlaying) {\n if (this.pause) {\n this.stoppedByInteraction = true;\n }\n this.stop();\n } else if (this.stoppedByInteraction) {\n this.play();\n }\n }\n }\n\n /** @hidden */\n @HostListener('mouseenter')\n public onMouseEnter() {\n if (this.pause && this.isPlaying) {\n this.stoppedByInteraction = true;\n }\n this.stop();\n }\n\n /** @hidden */\n @HostListener('mouseleave')\n public onMouseLeave() {\n if (this.stoppedByInteraction) {\n this.play();\n }\n }\n\n /** @hidden */\n @HostListener('panleft', ['$event'])\n public onPanLeft(event) {\n if (!this.vertical) {\n this.pan(event);\n }\n }\n\n /** @hidden */\n @HostListener('panright', ['$event'])\n public onPanRight(event) {\n if (!this.vertical) {\n this.pan(event);\n }\n }\n\n /** @hidden */\n @HostListener('panup', ['$event'])\n public onPanUp(event) {\n if (this.vertical) {\n this.pan(event);\n }\n }\n\n /** @hidden */\n @HostListener('pandown', ['$event'])\n public onPanDown(event) {\n if (this.vertical) {\n this.pan(event);\n }\n }\n\n /**\n * @hidden\n */\n @HostListener('panend', ['$event'])\n public onPanEnd(event) {\n if (!this.gesturesSupport) {\n return;\n }\n event.preventDefault();\n\n const slideSize = this.vertical\n ? this.currentItem.nativeElement.offsetHeight\n : this.currentItem.nativeElement.offsetWidth;\n const panOffset = (slideSize / 1000);\n const eventDelta = this.vertical ? event.deltaY : event.deltaX;\n const delta = Math.abs(eventDelta) + panOffset < slideSize ? Math.abs(eventDelta) : slideSize - panOffset;\n const velocity = Math.abs(event.velocity);\n this.resetSlideStyles(this.currentItem);\n if (this.incomingSlide) {\n this.resetSlideStyles(this.incomingSlide);\n if (slideSize / 2 < delta || velocity > 1) {\n this.incomingSlide.direction = eventDelta < 0 ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n this.incomingSlide.previous = false;\n\n this.animationPosition = this.animationType === CarouselAnimationType.fade ?\n delta / slideSize : (slideSize - delta) / slideSize;\n\n if (velocity > 1) {\n this.newDuration = this.defaultAnimationDuration / velocity;\n }\n this.incomingSlide.active = true;\n } else {\n this.currentItem.direction = eventDelta > 0 ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n this.previousItem = this.incomingSlide;\n this.previousItem.previous = true;\n this.animationPosition = this.animationType === CarouselAnimationType.fade ?\n Math.abs((slideSize - delta) / slideSize) : delta / slideSize;\n this.playAnimations();\n }\n }\n\n if (this.stoppedByInteraction) {\n this.play();\n }\n }\n\n /** @hidden */\n public ngAfterContentInit() {\n this.slides.changes\n .pipe(takeUntil(this.destroy$))\n .subscribe((change: QueryList<IgxSlideComponent>) => this.initSlides(change));\n\n this.initSlides(this.slides);\n }\n\n /** @hidden */\n public override ngOnDestroy() {\n super.ngOnDestroy();\n this.destroy$.next(true);\n this.destroy$.complete();\n this.destroyed = true;\n if (this.lastInterval) {\n clearInterval(this.lastInterval);\n }\n }\n\n /** @hidden */\n public handleKeydownPrev(event: KeyboardEvent): void {\n if (this.platformUtil.isActivationKey(event)) {\n event.preventDefault();\n this.prev();\n }\n }\n\n /** @hidden */\n public handleKeydownNext(event: KeyboardEvent): void {\n if (this.platformUtil.isActivationKey(event)) {\n event.preventDefault();\n this.next();\n }\n }\n\n /** @hidden */\n public handleKeyUp(event: KeyboardEvent): void {\n if (event.key === this.platformUtil.KEYMAP.TAB) {\n this._hasKeyboardFocusOnIndicators = true;\n }\n }\n\n /** @hidden */\n public handleFocusOut(event: FocusEvent): void {\n const target = event.relatedTarget as HTMLElement;\n\n if (!target || !target.classList.contains('igx-carousel-indicators__indicator')) {\n this._hasKeyboardFocusOnIndicators = false;\n }\n }\n\n /** @hidden */\n public handleClick(): void {\n this._hasKeyboardFocusOnIndicators = false;\n }\n\n /** @hidden */\n public handleKeydown(event: KeyboardEvent): void {\n const { key } = event;\n const slides = this.slides.toArray();\n\n switch (key) {\n case this.platformUtil.KEYMAP.ARROW_LEFT:\n this.dir.rtl ? this.next() : this.prev();\n break;\n case this.platformUtil.KEYMAP.ARROW_RIGHT:\n this.dir.rtl ? this.prev() : this.next();\n break;\n case this.platformUtil.KEYMAP.HOME:\n event.preventDefault();\n this.select(this.dir.rtl ? last(slides) : first(slides));\n break;\n case this.platformUtil.KEYMAP.END:\n event.preventDefault();\n this.select(this.dir.rtl ? first(slides) : last(slides));\n break;\n }\n\n this.indicatorsElements[this.current].nativeElement.focus();\n }\n\n /**\n * Returns the slide corresponding to the provided `index` or null.\n * ```typescript\n * let slide1 = this.carousel.get(1);\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public get(index: number): IgxSlideComponent {\n return this.slides.find((slide) => slide.index === index);\n }\n\n /**\n * Adds a new slide to the carousel.\n * ```typescript\n * this.carousel.add(newSlide);\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public add(slide: IgxSlideComponent) {\n const newSlides = this.slides.toArray();\n newSlides.push(slide);\n this.slides.reset(newSlides);\n this.slides.notifyOnChanges();\n }\n\n /**\n * Removes a slide from the carousel.\n * ```typescript\n * this.carousel.remove(slide);\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public remove(slide: IgxSlideComponent) {\n if (slide && slide === this.get(slide.index)) { // check if the requested slide for delete is present in the carousel\n const newSlides = this.slides.toArray();\n newSlides.splice(slide.index, 1);\n this.slides.reset(newSlides);\n this.slides.notifyOnChanges();\n }\n }\n\n /**\n * Switches to the passed-in slide with a given `direction`.\n * ```typescript\n * const slide = this.carousel.get(2);\n * this.carousel.select(slide, CarouselAnimationDirection.NEXT);\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public select(slide: IgxSlideComponent, direction?: CarouselAnimationDirection): void;\n /**\n * Switches to slide by index with a given `direction`.\n * ```typescript\n * this.carousel.select(2, CarouselAnimationDirection.NEXT);\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public select(index: number, direction?: CarouselAnimationDirection): void;\n public select(slideOrIndex: IgxSlideComponent | number, direction: CarouselAnimationDirection = CarouselAnimationDirection.NONE): void {\n const slide = typeof slideOrIndex === 'number'\n ? this.get(slideOrIndex)\n : slideOrIndex;\n\n if (slide && slide !== this.currentItem) {\n slide.direction = direction;\n slide.active = true;\n }\n }\n\n /**\n * Transitions to the next slide in the carousel.\n * ```typescript\n * this.carousel.next();\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public next() {\n const index = this.getNextIndex();\n\n if (index === 0 && !this.loop) {\n this.stop();\n return;\n }\n return this.select(this.get(index), CarouselAnimationDirection.NEXT);\n }\n\n /**\n * Transitions to the previous slide in the carousel.\n * ```typescript\n * this.carousel.prev();\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public prev() {\n const index = this.getPrevIndex();\n\n if (!this.loop && index === this.total - 1) {\n this.stop();\n return;\n }\n return this.select(this.get(index), CarouselAnimationDirection.PREV);\n }\n\n /**\n * Resumes playing of the carousel if in paused state.\n * No operation otherwise.\n * ```typescript\n * this.carousel.play();\n * }\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public play() {\n if (!this.playing) {\n this.playing = true;\n this.carouselPlaying.emit(this);\n this.restartInterval();\n this.stoppedByInteraction = false;\n }\n }\n\n /**\n * Stops slide transitions if the `pause` option is set to `true`.\n * No operation otherwise.\n * ```typescript\n * this.carousel.stop();\n * }\n * ```\n *\n * @memberOf IgxCarouselComponent\n */\n public stop() {\n if (this.pause) {\n this.playing = false;\n this.carouselPaused.emit(this);\n this.resetInterval();\n }\n }\n\n protected getPreviousElement(): HTMLElement {\n return this.previousItem.nativeElement;\n }\n\n protected getCurrentElement(): HTMLElement {\n return this.currentItem.nativeElement;\n }\n\n private resetInterval() {\n if (this.lastInterval) {\n clearInterval(this.lastInterval);\n this.lastInterval = null;\n }\n }\n\n private restartInterval() {\n this.resetInterval();\n\n if (!isNaN(this.interval) && this.interval > 0 && this.platformUtil.isBrowser) {\n this.lastInterval = setInterval(() => {\n const tick = +this.interval;\n if (this.playing && this.total && !isNaN(tick) && tick > 0) {\n this.next();\n } else {\n this.stop();\n }\n }, this.interval);\n }\n }\n\n /** @hidden */\n public get nextButtonDisabled() {\n return !this.loop && this.current === (this.total - 1);\n }\n\n /** @hidden */\n public get prevButtonDisabled() {\n return !this.loop && this.current === 0;\n }\n\n private get indicatorsElements() {\n return this._indicators.toArray();\n }\n\n private getIndicatorsClass(): string {\n switch (this.indicatorsOrientation) {\n case CarouselIndicatorsOrientation.top:\n return CarouselIndicatorsOrientation.start;\n case CarouselIndicatorsOrientation.bottom:\n return CarouselIndicatorsOrientation.end;\n default:\n return this.indicatorsOrientation;\n }\n }\n\n private getNextIndex(): number {\n return (this.current + 1) % this.total;\n }\n\n private getPrevIndex(): number {\n return this.current - 1 < 0 ? this.total - 1 : this.current - 1;\n }\n\n private resetSlideStyles(slide: IgxSlideComponent) {\n slide.nativeElement.style.transform = '';\n slide.nativeElement.style.opacity = '';\n }\n\n private pan(event) {\n const slideSize = this.vertical\n ? this.currentItem.nativeElement.offsetHeight\n : this.currentItem.nativeElement.offsetWidth;\n const panOffset = (slideSize / 1000);\n const delta = this.vertical ? event.deltaY : event.deltaX;\n const index = delta < 0 ? this.getNextIndex() : this.getPrevIndex();\n const offset = delta < 0 ? slideSize + delta : -slideSize + delta;\n\n if (!this.gesturesSupport || event.isFinal || Math.abs(delta) + panOffset >= slideSize) {\n return;\n }\n\n if (!this.loop && ((this.current === 0 && delta > 0) || (this.current === this.total - 1 && delta < 0))) {\n this.incomingSlide = null;\n return;\n }\n\n event.preventDefault();\n if (this.isPlaying) {\n this.stoppedByInteraction = true;\n this.stop();\n }\n\n if (this.previousItem && this.previousItem.previous) {\n this.previousItem.previous = false;\n }\n this.finishAnimations();\n\n if (this.incomingSlide) {\n if (index !== this.incomingSlide.index) {\n this.resetSlideStyles(this.incomingSlide);\n this.incomingSlide.previous = false;\n this.incomingSlide = this.get(index);\n }\n } else {\n this.incomingSlide = this.get(index);\n }\n this.incomingSlide.previous = true;\n\n if (this.animationType === CarouselAnimationType.fade) {\n this.currentItem.nativeElement.style.opacity = `${Math.abs(offset) / slideSize}`;\n } else {\n this.currentItem.nativeElement.style.transform = this.vertical\n ? `translateY(${delta}px)`\n : `translateX(${delta}px)`;\n this.incomingSlide.nativeElement.style.transform = this.vertical\n ? `translateY(${offset}px)`\n : `translateX(${offset}px)`;\n }\n }\n\n private unsubscriber(slide: IgxSlideComponent) {\n return merge(this.destroy$, slide.isDestroyed);\n }\n\n private onSlideActivated(slide: IgxSlideComponent) {\n if (slide.active && slide !== this.currentItem) {\n if (slide.direction === CarouselAnimationDirection.NONE) {\n const newIndex = slide.index;\n slide.direction = newIndex > this.current ? CarouselAnimationDirection.NEXT : CarouselAnimationDirection.PREV;\n }\n\n if (this.currentItem) {\n if (this.previousItem && this.previousItem.previous) {\n this.previousItem.previous = false;\n }\n this.currentItem.direction = slide.direction;\n this.currentItem.active = false;\n\n this.previousItem = this.currentItem;\n this.currentItem = slide;\n this.triggerAnimations();\n } else {\n this.currentItem = slide;\n }\n this.slideChanged.emit({ carousel: this, slide });\n this.restartInterval();\n this.cdr.markForCheck();\n }\n }\n\n\n private finishAnimations() {\n if (this.animationStarted(this.leaveAnimationPlayer)) {\n this.leaveAnimationPlayer.finish();\n }\n\n if (this.animationStarted(this.enterAnimationPlayer)) {\n this.enterAnimationPlayer.finish();\n }\n }\n\n private initSlides(change: QueryList<IgxSlideComponent>) {\n const diff = this.differ.diff(change.toArray());\n if (diff) {\n this.slides.reduce((any, c, ind) => c.index = ind, 0); // reset slides indexes\n diff.forEachAddedItem((record: IterableChangeRecord<IgxSlideComponent>) => {\n const slide = record.item;\n slide.total = this.total;\n this.slideAdded.emit({ carousel: this, slide });\n if (slide.active) {\n this.currentItem = slide;\n }\n slide.activeChange.pipe(takeUntil(this.unsubscriber(slide))).subscribe(() => this.onSlideActivated(slide));\n });\n\n diff.forEachRemovedItem((record: IterableChangeRecord<IgxSlideComponent>) => {\n const slide = record.item;\n this.slideRemoved.emit({ carousel: this, slide });\n if (slide.active) {\n slide.active = false;\n this.currentItem = this.get(slide.index < this.total ? slide.index : this.total - 1);\n }\n });\n\n this.updateSlidesSelection();\n }\n }\n\n private updateSlidesSelection() {\n if (this.platformUtil.isBrowser) {\n requestAnimationFrame(() => {\n if (this.currentItem) {\n this.currentItem.active = true;\n const activeSlides = this.slides.filter(slide => slide.active && slide.index !== this.currentItem.index);\n activeSlides.forEach(slide => slide.active = false);\n } else if (this.total) {\n this.slides.first.active = true;\n }\n this.play();\n });\n }\n }\n}\n\nexport interface ISlideEventArgs extends IBaseEventArgs {\n carousel: IgxCarouselComponent;\n slide: IgxSlideComponent;\n}\n","<ng-template #defaultIndicator let-slide>\n <div class=\"igx-nav-dot\"\n [class.igx-nav-dot--active]=\"slide.active\">\n </div>\n</ng-template>\n\n<ng-template #defaultNextButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_next\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n<ng-template #defaultPrevButton>\n <igx-icon aria-hidden=\"true\" family=\"default\" name=\"carousel_prev\"\n class=\"igx-nav-arrow\">\n </igx-icon>\n</ng-template>\n\n@if (navigation && slides.length) {\n <button\n igxButton\n class=\"igx-carousel__arrow--prev\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_previous_slide\"\n [disabled]=\"prevButtonDisabled\"\n (click)=\"prev()\"\n (keydown)=\"handleKeydownPrev($event)\">\n <ng-container *ngTemplateOutlet=\"getPrevButtonTemplate; context: {$implicit: prevButtonDisabled};\"></ng-container>\n </button>\n}\n\n@if (navigation && slides.length) {\n <button\n igxButton\n class=\"igx-carousel__arrow--next\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_next_slide\"\n [disabled]=\"nextButtonDisabled\"\n (click)=\"next()\"\n (keydown)=\"handleKeydownNext($event)\">\n <ng-container *ngTemplateOutlet=\"getNextButtonTemplate; context: {$implicit: nextButtonDisabled};\"></ng-container>\n </button>\n}\n\n@if (showIndicators) {\n <div [ngClass]=\"indicatorsClass\" [attr.role]=\"'tablist'\" (keyup)=\"handleKeyUp($event)\" (focusout)=\"handleFocusOut($event)\" (click)=\"handleClick()\" (keydown)=\"handleKeydown($event)\">\n @for (slide of slides; track slide) {\n <div #indicators\n class=\"igx-carousel-indicators__indicator\"\n (click)=\"select(slide)\"\n [id]=\"'tab-'+ slide.index + '-' + total\"\n [attr.role]=\"'tab'\"\n [attr.tabindex]=\"slide.active ? 0 : -1\"\n [attr.aria-label]=\"resourceStrings.igx_carousel_slide + ' ' + (slide.index + 1) + ' ' + resourceStrings.igx_carousel_of + ' ' + this.total\"\n [attr.aria-controls]=\"'panel-' + slide.index\"\n [attr.aria-selected]=\"slide.active\">\n <ng-container *ngTemplateOutlet=\"getIndicatorTemplate; context: {$implicit: slide};\"></ng-container>\n </div>\n }\n </div>\n}\n\n@if (showIndicatorsLabel) {\n <div [ngClass]=\"indicatorsClass\" class=\"igx-carousel-label-indicator\">\n <span [id]=\"labelId\" class=\"igx-carousel__label\">{{getCarouselLabel}}</span>\n </div>\n}\n\n<div class=\"igx-carousel__inner\" [attr.aria-live]=\"!interval || stoppedByInteraction ? 'polite' : 'off'\">\n <ng-content></ng-content>\n</div>\n","import { IgxCarouselComponent } from './carousel.component';\nimport { IgxCarouselIndicatorDirective, IgxCarouselNextButtonDirective, IgxCarouselPrevButtonDirective } from './carousel.directives';\nimport { IgxSlideComponent } from './slide.component';\n\nexport { CarouselAnimationDirection, IgxCarouselComponentBase, IgxSlideComponentBase, CarouselAnimationSettings } from './carousel-base';\nexport * from './carousel.component';\nexport * from './slide.component';\nexport * from './carousel.directives';\nexport { CarouselAnimationType, CarouselIndicatorsOrientation } from './enums';\n\n/* NOTE: Carousel directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_CAROUSEL_DIRECTIVES = [\n IgxCarouselComponent,\n IgxSlideComponent,\n IgxCarouselIndicatorDirective,\n IgxCarouselNextButtonDirective,\n IgxCarouselPrevButtonDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_CAROUSEL_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n imports: [\n ...IGX_CAROUSEL_DIRECTIVES\n ],\n exports: [\n ...IGX_CAROUSEL_DIRECTIVES\n ]\n})\nexport class IgxCarouselModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵIgxDirectionality","i1.IgxCarouselComponent","i2.IgxSlideComponent","i3.IgxCarouselIndicatorDirective","i3.IgxCarouselNextButtonDirective","i3.IgxCarouselPrevButtonDirective"],"mappings":"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"}
|