UNPKG

ng2-custom-carousel

Version:

Carousel Component for Angular 2+. Easily customizable, with autoscroll, loop and navigation controls

1 lines 23.3 kB
{"version":3,"file":"ng2-custom-carousel.mjs","sources":["../../../projects/ng2-custom-carousel/src/lib/ng2-custom-carousel-item.directive.ts","../../../projects/ng2-custom-carousel/src/lib/ng2-custom-carousel.component.ts","../../../projects/ng2-custom-carousel/src/lib/ng2-custom-carousel.component.html","../../../projects/ng2-custom-carousel/src/lib/ng2-custom-carousel.module.ts","../../../projects/ng2-custom-carousel/src/public-api.ts","../../../projects/ng2-custom-carousel/src/ng2-custom-carousel.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ng2CustomCarouselItem]'\n})\nexport class Ng2CustomCarouselItemDirective {\n\n constructor(public tpl: TemplateRef<any>) {\n }\n\n}\n","import {\n AfterViewInit,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n Input,\n QueryList,\n ViewChild,\n ViewChildren,\n AfterContentInit,\n HostListener,\n OnDestroy\n} from '@angular/core';\n\nimport { Ng2CustomCarouselItemDirective } from './ng2-custom-carousel-item.directive';\nimport { animate, AnimationBuilder, AnimationFactory, AnimationPlayer, style } from '@angular/animations';\n\n@Directive({\n selector: '.ng2-custom-carousel-item'\n})\nexport class Ng2CustomCarouselItemElement {\n}\n\n@Component({\n selector: 'ng2-custom-carousel',\n templateUrl: './ng2-custom-carousel.component.html',\n styleUrls: ['./ng2-custom-carousel.component.sass']\n})\nexport class Ng2CustomCarouselComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n\n constructor(private builder: AnimationBuilder) { }\n\n get currentSlideString(): string {\n return this.currentSlideShown.toString();\n }\n\n set currentSlideString(index: string) {\n this.goToSlide(+index + (this.loop ? 2 : 0));\n }\n @ContentChildren(Ng2CustomCarouselItemDirective) items!: QueryList<Ng2CustomCarouselItemDirective>;\n @ViewChildren(Ng2CustomCarouselItemElement, { read: ElementRef }) private itemsElements!: QueryList<ElementRef>;\n @ViewChild('ng2CustomCarousel', { static: true }) private ng2CustomCarousel!: ElementRef;\n @ViewChild('ng2CustomCarouselCover', { static: true }) private ng2CustomCarouselCover!: ElementRef;\n @Input() timing = '250ms ease-in';\n @Input() showControls = true;\n @Input() showNavigation = 'radio'; // radio, numbers, none\n @Input() autoScroll = 0; // miliseconds\n @Input() loop = false;\n @Input() slidesN = 0;\n @Input() scrollDirection = 'left'; // left, right\n @Input() slidesMargin = 0;\n private player!: AnimationPlayer;\n private playerRestart!: AnimationPlayer;\n private playerReend!: AnimationPlayer;\n private itemWidth!: number;\n public currentSlide = 0;\n public currentSlideShown = 0;\n public ng2CustomCarouselWrapperStyle = {};\n public navigationIndexes: number[] = [];\n private intervalTransition!: any;\n private scrollLimit = 0;\n @HostListener('window:resize', ['$event'])\n onResize() {\n let carouselWidth = 0;\n\n while ((this.ng2CustomCarouselCover.nativeElement.offsetWidth >= ((carouselWidth + this.itemWidth) - this.slidesMargin)) &&\n (((carouselWidth + this.itemWidth) - this.slidesMargin) <= ((this.itemWidth * this.slidesN) - this.slidesMargin))) {\n carouselWidth = carouselWidth + this.itemWidth;\n }\n\n if (this.slidesMargin) { carouselWidth = carouselWidth - this.slidesMargin; }\n\n this.ng2CustomCarouselWrapperStyle = {\n width: carouselWidth + `px`,\n margin: 'auto'\n };\n // this.ng2carouselControlsStyle = {\n // width: carouselWidth + `px`,\n // margin: `1em auto`\n // };\n }\n\n goToSlide(indexSlider: number) {\n let restart = false;\n let reend = false;\n const sliderDif = indexSlider - this.currentSlide;\n\n if (sliderDif === 0) {\n return;\n } else if (sliderDif > 0) {\n\n if ((!this.loop) && ((this.currentSlide + 1) === this.scrollLimit)) { return; }\n\n this.currentSlide = this.currentSlide + sliderDif;\n if ((this.currentSlide >= (this.items.length - this.slidesN)) && (this.loop)) {\n this.currentSlideShown = (this.items.length - this.slidesN) - 2;\n } else {\n this.currentSlideShown = this.currentSlide - (this.loop ? 2 : 0);\n }\n\n if (this.loop) {\n if (this.currentSlide === ((this.items.length - this.slidesN))) {\n restart = true;\n }\n }\n\n } else {\n\n if ((!this.loop) && (this.currentSlide === 0)) { return; }\n\n this.currentSlide = this.currentSlide + sliderDif;\n\n if (this.loop) {\n if (this.currentSlide < 2) {\n this.currentSlideShown = this.currentSlide + (this.scrollLimit - 2);\n } else {\n this.currentSlideShown = this.currentSlide - 2;\n }\n } else { this.currentSlideShown = this.currentSlide; }\n\n if (this.loop) {\n if (this.currentSlide === 0) {\n reend = true;\n }\n }\n }\n\n const offset = this.currentSlide * this.itemWidth;\n const myAnimation: AnimationFactory = this.buildAnimation(offset);\n this.player = myAnimation.create(this.ng2CustomCarousel.nativeElement);\n this.player.play();\n\n if (restart) {\n this.player.onDone(() => {\n this.currentSlide = 1;\n this.currentSlideShown = (this.items.length - this.slidesN) - 2;\n const myAnimationAux: AnimationFactory = this.buildAnimationStart();\n this.playerRestart = myAnimationAux.create(this.ng2CustomCarousel.nativeElement);\n this.playerRestart.play();\n });\n\n }\n\n if (reend) {\n this.player.onDone(() => {\n this.currentSlide = (this.items.length - this.slidesN) - 1;\n this.currentSlideShown = this.currentSlide - 2;\n const myAnimationAux: AnimationFactory = this.buildAnimationEnd();\n this.playerReend = myAnimationAux.create(this.ng2CustomCarousel.nativeElement);\n this.playerReend.play();\n });\n\n }\n\n this.stopScrool();\n this.startScroll();\n\n }\n\n private buildAnimation(offset: number) {\n return this.builder.build([\n animate(this.timing, style({ left: `-` + offset + `px` }))\n ]);\n }\n\n private buildAnimationStart() {\n return this.builder.build([\n animate('1ms ease-in', style({ left: `-` + this.itemWidth + `px` }))\n ]);\n }\n\n private buildAnimationEnd() {\n return this.builder.build([\n animate('1ms ease-in', style({ left: `-` + (this.itemWidth * ((this.items.length - this.slidesN) - 1)) + `px` }))\n ]);\n }\n\n public stopScrool() {\n if (this.autoScroll > 0) {\n clearInterval(this.intervalTransition);\n }\n }\n\n public startScroll() {\n if (this.autoScroll > 0) {\n this.intervalTransition = setInterval(() => {\n if (this.scrollDirection === 'right') {\n this.goToSlide(this.currentSlide - 1);\n } else {\n this.goToSlide(this.currentSlide + 1);\n }\n }, this.autoScroll);\n }\n }\n\n ngAfterContentInit() {\n if (this.slidesN === 0) { this.slidesN = this.items.length; }\n\n if (this.items.length <= this.slidesN) {\n this.slidesN = this.items.length;\n }\n\n if (this.items.length < 2) {\n this.autoScroll = 0;\n this.showControls = false;\n this.showNavigation = 'none';\n }\n this.startScroll();\n }\n\n ngAfterViewInit() {\n\n if (this.items.length > 0) {\n\n this.scrollLimit = this.items.length;\n if (!this.loop) { this.scrollLimit = (this.items.length - this.slidesN) + 1; }\n\n for (let i = 0; i < this.scrollLimit; i++) { this.navigationIndexes.push(i); }\n\n this.itemWidth = this.itemsElements.first.nativeElement.getBoundingClientRect().width + (this.slidesMargin ? this.slidesMargin : 0);\n\n this.onResize();\n\n if (this.loop) {\n const lastSlice = this.items.length - 1;\n const addedSlices = [];\n for (let i = 0; i < (this.slidesN - 1); i++) {\n addedSlices.push(this.items.toArray()[i]);\n }\n this.items.reset([this.items.toArray()[lastSlice - 1], this.items.toArray()[lastSlice], this.items.toArray(), addedSlices]);\n\n this.currentSlide = 2;\n this.ng2CustomCarousel.nativeElement.style.left = '-' + (2 * this.itemWidth) + 'px';\n }\n\n this.ng2CustomCarousel.nativeElement.style.width = ((this.itemWidth * this.items.length) - this.slidesMargin) + `px`;\n\n }\n }\n\n ngOnDestroy() {\n clearTimeout(this.intervalTransition);\n }\n\n}\n","<div class=\"ng2-custom-carousel-panel\" #ng2CustomCarouselCover>\n <section class=\"ng2-custom-carousel-wrapper\" [ngStyle]=\"ng2CustomCarouselWrapperStyle\" (mouseenter)=\"stopScrool()\"\n (mouseleave)=\"startScroll()\">\n <ul class=\"ng2-custom-carousel-inner\" #ng2CustomCarousel>\n <li *ngFor=\"let item of items;\" class=\"ng2-custom-carousel-item\"\n [ngStyle]=\"{'marginRight': slidesMargin + 'px'}\">\n <ng-container [ngTemplateOutlet]=\"item !== undefined?item.tpl:items.last.tpl\"></ng-container>\n </li>\n </ul>\n </section>\n <div class=\"ng2-custom-carousel-controls-wrapper\">\n <div class=\"ng2-custom-carousel-controls\">\n <button *ngIf=\"showControls\" (click)=\"goToSlide(currentSlide - 1)\">Prev</button>\n <div *ngIf=\"showNavigation === 'numbers'\" class=\"ng2-custom-carousel-navigation\">\n <button *ngFor=\"let item of navigationIndexes, let i = index\" (click)=\"goToSlide(i + (loop? 2 : 0))\"\n [class.ng2CustomCarouselSlideSelected]=\"i === currentSlideShown\">{{i + 1}}</button>\n </div>\n <form #searchPackDiscountForm=\"ngForm\" *ngIf=\"showNavigation === 'radio'\"\n class=\"ng2-custom-carousel-navigation\">\n <input *ngFor=\"let item of navigationIndexes, let i = index\" type=\"radio\" name=\"currentSlideShown\"\n [(ngModel)]=\"currentSlideString\" value=\"{{i}}\">\n </form>\n <button *ngIf=\"showControls\" (click)=\"goToSlide(currentSlide + 1)\">Next</button>\n </div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { Ng2CustomCarouselComponent, Ng2CustomCarouselItemElement } from './ng2-custom-carousel.component';\nimport { Ng2CustomCarouselItemDirective } from './ng2-custom-carousel-item.directive';\n\n@NgModule({\n declarations: [\n Ng2CustomCarouselComponent,\n Ng2CustomCarouselItemElement,\n Ng2CustomCarouselItemDirective\n ],\n imports: [\n CommonModule,\n FormsModule\n ],\n exports: [\n Ng2CustomCarouselComponent,\n Ng2CustomCarouselItemDirective\n ]\n})\nexport class Ng2CustomCarouselModule { }\n","/*\n * Public API Surface of ng2-custom-carousel\n */\n\nexport * from './lib/ng2-custom-carousel.component';\nexport * from './lib/ng2-custom-carousel-item.directive';\nexport * from './lib/ng2-custom-carousel.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}