UNPKG

@iladiro/angular-slider

Version:

Angular Slider plugin is flexible and easily customizable

331 lines (323 loc) 40.6 kB
import * as i0 from '@angular/core'; import { EventEmitter, Component, Input, Output, ViewChild, ViewChildren, ContentChild, NgModule } from '@angular/core'; import * as i1 from '@angular/common'; import { CommonModule } from '@angular/common'; class IladiroAngularSliderPaginatorComponent { constructor() { this.selectedPageEvent = new EventEmitter(); this.currentPage = 1; this.paginatorList = []; } sendEvent(direction) { this.selectedPageEvent.emit({ page: this.currentPage, index: this.currentPage - 1, direction: direction }); } goTo(page) { const res = page > this.currentPage ? 'next' : 'prev'; this.currentPage = page; this.sendEvent(res); } goNext() { this.currentPage += 1; // da riattivare per implementazione sul template 2 if (this.template === 'templateTwo') { this.increasePagination(); } // end this.sendEvent('next'); } goPrev() { this.currentPage -= 1; // da riattivare per implementazione sul template 2 if (this.template === 'templateTwo') { this.decreasePagination(); } // end this.sendEvent('prev'); } goFirst() { this.currentPage = 1; if (this.template === 'templateTwo') { this.paginatorList = this.generatePaginatorList(1, this.maxVisiblePages); } this.sendEvent('first'); } goLast() { this.currentPage = this.totalPages; if (this.template === 'templateTwo') { this.paginatorList = this.generatePaginatorList(this.currentPage - (this.maxVisiblePages - 1), this.currentPage); } this.sendEvent('last'); } decreasePagination() { if ((this.currentPage <= this.maxVisiblePages)) { if (this.currentPage <= this.totalPages) { console.log("currentPage", this.currentPage); if (this.currentPage >= this.paginatorList[0]) { //console.log("do not anythings"); } else { //console.log("change pagination"); this.paginatorList = this.generatePaginatorList(this.currentPage, this.currentPage + (this.maxVisiblePages - 1)); } } } } increasePagination() { if ((this.currentPage >= this.maxVisiblePages)) { if (this.currentPage <= this.totalPages) { //console.log("currentPage", this.currentPage); if (this.currentPage <= this.paginatorList[this.maxVisiblePages - 1]) { //console.log("do not anythings"); } else { //console.log("change pagination"); this.paginatorList = this.generatePaginatorList(this.currentPage - (this.maxVisiblePages - 1), this.currentPage); } } } } generatePaginatorList(startFrom, untilTo) { /* console.log("startFrom", startFrom); console.log("untilTo", untilTo); */ const pages = []; for (let i = startFrom; i <= untilTo; i++) { pages.push(i); } return pages; } ngOnChanges(changes) { var _a; console.log(changes); if (this.template === 'templateTwo') { if ((_a = changes['maxVisiblePages']) === null || _a === void 0 ? void 0 : _a.currentValue) { this.paginatorList = this.generatePaginatorList(1, this.maxVisiblePages ? this.maxVisiblePages : this.totalPages); } } } } IladiroAngularSliderPaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IladiroAngularSliderPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); IladiroAngularSliderPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: IladiroAngularSliderPaginatorComponent, selector: "iladiro-angular-slider-paginator", inputs: { totalPages: "totalPages", maxVisiblePages: "maxVisiblePages", template: "template", arrowStart: "arrowStart", arrowEnd: "arrowEnd", arrowNext: "arrowNext", arrowPrev: "arrowPrev" }, outputs: { selectedPageEvent: "selectedPageEvent" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"template === 'default'\">\r\n <ul *ngIf=\"totalPages\" class=\"iladiro-angular-slider-paginator iladiro-angular-slider-paginator--default\">\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goFirst()\" [disabled]=\"currentPage === 1\">\r\n <i [class]=\"arrowStart\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goPrev()\" [disabled]=\"currentPage === 1\">\r\n <i [class]=\"arrowPrev\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-numbers\">{{currentPage}} di <span>{{totalPages}}</span></li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goNext()\" [disabled]=\"currentPage === totalPages\">\r\n <i [class]=\"arrowNext\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goLast()\" [disabled]=\"currentPage === totalPages\">\r\n <i [class]=\"arrowEnd\"></i>\r\n </button>\r\n </li>\r\n </ul>\r\n</ng-container>\r\n<ng-container *ngIf=\"template === 'templateOne'\">\r\n <ul *ngIf=\"totalPages\" class=\"iladiro-angular-slider-paginator iladiro-angular-slider-paginator--templateOne\">\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goPrev()\" [disabled]=\"currentPage === 1\">\r\n <i [class]=\"arrowPrev\"></i>\r\n </button>\r\n </li> \r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goNext()\" [disabled]=\"currentPage === totalPages\">\r\n <i [class]=\"arrowNext\"></i>\r\n </button>\r\n </li>\r\n </ul>\r\n</ng-container>\r\n<ng-container *ngIf=\"template === 'templateTwo'\">\r\n <ul *ngIf=\"totalPages\" class=\"iladiro-angular-slider-paginator iladiro-angular-slider-paginator--default\">\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goFirst()\" [disabled]=\"currentPage === 1\">\r\n <i [class]=\"arrowStart\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goPrev()\" [disabled]=\"currentPage === 1\">\r\n <i [class]=\"arrowPrev\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-numbers\" \r\n [class.selected]=\"page === currentPage\" \r\n *ngFor=\"let page of paginatorList\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goTo(page)\" [disabled]=\"page === currentPage\">\r\n {{page}}\r\n </button>\r\n <!-- <ng-template #morePages>\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"loadMorePges()\">...</button>\r\n </ng-template> -->\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goNext()\" [disabled]=\"currentPage === totalPages\">\r\n <i [class]=\"arrowNext\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goLast()\" [disabled]=\"currentPage === totalPages\">\r\n <i [class]=\"arrowEnd\"></i>\r\n </button>\r\n </li>\r\n </ul>\r\n</ng-container>", styles: [".iladiro-angular-slider-paginator{list-style:none;display:flex;align-items:center;font-size:16px;margin-top:10px;padding:0}.iladiro-angular-slider-paginator--default{justify-content:center}.iladiro-angular-slider-paginator--templateOne{justify-content:space-between}.iladiro-angular-slider-paginator__item{margin-right:5px}.iladiro-angular-slider-paginator__item:last-child{margin-right:0}.iladiro-angular-slider-paginator__button{cursor:pointer;padding:10px;background-color:transparent;border:none;color:#003489}.iladiro-angular-slider-paginator__button[disabled]{cursor:unset;opacity:.5}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IladiroAngularSliderPaginatorComponent, decorators: [{ type: Component, args: [{ selector: 'iladiro-angular-slider-paginator', template: "<ng-container *ngIf=\"template === 'default'\">\r\n <ul *ngIf=\"totalPages\" class=\"iladiro-angular-slider-paginator iladiro-angular-slider-paginator--default\">\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goFirst()\" [disabled]=\"currentPage === 1\">\r\n <i [class]=\"arrowStart\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goPrev()\" [disabled]=\"currentPage === 1\">\r\n <i [class]=\"arrowPrev\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-numbers\">{{currentPage}} di <span>{{totalPages}}</span></li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goNext()\" [disabled]=\"currentPage === totalPages\">\r\n <i [class]=\"arrowNext\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goLast()\" [disabled]=\"currentPage === totalPages\">\r\n <i [class]=\"arrowEnd\"></i>\r\n </button>\r\n </li>\r\n </ul>\r\n</ng-container>\r\n<ng-container *ngIf=\"template === 'templateOne'\">\r\n <ul *ngIf=\"totalPages\" class=\"iladiro-angular-slider-paginator iladiro-angular-slider-paginator--templateOne\">\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goPrev()\" [disabled]=\"currentPage === 1\">\r\n <i [class]=\"arrowPrev\"></i>\r\n </button>\r\n </li> \r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goNext()\" [disabled]=\"currentPage === totalPages\">\r\n <i [class]=\"arrowNext\"></i>\r\n </button>\r\n </li>\r\n </ul>\r\n</ng-container>\r\n<ng-container *ngIf=\"template === 'templateTwo'\">\r\n <ul *ngIf=\"totalPages\" class=\"iladiro-angular-slider-paginator iladiro-angular-slider-paginator--default\">\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goFirst()\" [disabled]=\"currentPage === 1\">\r\n <i [class]=\"arrowStart\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goPrev()\" [disabled]=\"currentPage === 1\">\r\n <i [class]=\"arrowPrev\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-numbers\" \r\n [class.selected]=\"page === currentPage\" \r\n *ngFor=\"let page of paginatorList\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goTo(page)\" [disabled]=\"page === currentPage\">\r\n {{page}}\r\n </button>\r\n <!-- <ng-template #morePages>\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"loadMorePges()\">...</button>\r\n </ng-template> -->\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goNext()\" [disabled]=\"currentPage === totalPages\">\r\n <i [class]=\"arrowNext\"></i>\r\n </button>\r\n </li>\r\n <li class=\"iladiro-angular-slider-paginator__item iladiro-angular-slider-paginator__item-arrow\">\r\n <button class=\"iladiro-angular-slider-paginator__button\" (click)=\"goLast()\" [disabled]=\"currentPage === totalPages\">\r\n <i [class]=\"arrowEnd\"></i>\r\n </button>\r\n </li>\r\n </ul>\r\n</ng-container>", styles: [".iladiro-angular-slider-paginator{list-style:none;display:flex;align-items:center;font-size:16px;margin-top:10px;padding:0}.iladiro-angular-slider-paginator--default{justify-content:center}.iladiro-angular-slider-paginator--templateOne{justify-content:space-between}.iladiro-angular-slider-paginator__item{margin-right:5px}.iladiro-angular-slider-paginator__item:last-child{margin-right:0}.iladiro-angular-slider-paginator__button{cursor:pointer;padding:10px;background-color:transparent;border:none;color:#003489}.iladiro-angular-slider-paginator__button[disabled]{cursor:unset;opacity:.5}\n"] }] }], propDecorators: { totalPages: [{ type: Input }], maxVisiblePages: [{ type: Input }], template: [{ type: Input }], arrowStart: [{ type: Input }], arrowEnd: [{ type: Input }], arrowNext: [{ type: Input }], arrowPrev: [{ type: Input }], selectedPageEvent: [{ type: Output }] } }); class IladiroAngularSliderCardComponent { constructor() { this.clickSlideEvent = new EventEmitter(); } clickOnSlide() { this.clickSlideEvent.emit(); } ngOnChanges(changes) { if (changes['activeIndex'].currentValue === this.index) { this.activeClass = 'active'; } else { this.activeClass = ''; } } } IladiroAngularSliderCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IladiroAngularSliderCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); IladiroAngularSliderCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: IladiroAngularSliderCardComponent, selector: "iladiro-angular-slider-card", inputs: { slide: "slide", index: "index", activeIndex: "activeIndex", first: "first", last: "last", direction: "direction", clickableSlide: "clickableSlide" }, outputs: { clickSlideEvent: "clickSlideEvent" }, usesOnChanges: true, ngImport: i0, template: "<div (click)=\"clickOnSlide()\" [class.clickable]=\"clickableSlide\" class=\"iladiro-angular-slider-card {{activeClass}}\">\r\n <figure class=\"iladiro-angular-slider-card__figure\" *ngIf=\"slide?.mediaSrc\">\r\n <img class=\"iladiro-angular-slider-card__figure-image\" [src]=\"slide.mediaSrc\" [alt]=\"slide.tag\" *ngIf=\"slide?.mediaSrc\">\r\n <figcaption class=\"iladiro-angular-slider-card__figure-label text-uppercase\" *ngIf=\"slide?.tag\">\r\n {{slide.tag}}\r\n </figcaption>\r\n </figure>\r\n <div class=\"iladiro-angular-slider-card__body\" *ngIf=\"slide.title || slide.description\">\r\n <h1 class=\"iladiro-angular-slider-card__body--title\" *ngIf=\"slide.title\">{{slide.title}}</h1>\r\n <p class=\"iladiro-angular-slider-card__body--description\" *ngIf=\"slide.description\">{{slide.description}}</p>\r\n <a [href]=\"slide.link\" target=\"_blank\" class=\"iladiro-angular-slider-card__body--cta\" *ngIf=\"slide.link\">\r\n <ng-container *ngIf=\"slide?.cta; else defaultCta\">\r\n {{slide.cta}}\r\n </ng-container>\r\n <ng-template #defaultCta>\r\n Read\r\n </ng-template>\r\n </a>\r\n </div> \r\n</div>\r\n", styles: [".iladiro-angular-slider-card{border:0;border-radius:6px;position:relative;display:block;transition:transform .6s ease-in-out;text-decoration:none}.iladiro-angular-slider-card.clickable{cursor:pointer}.iladiro-angular-slider-card.active{box-shadow:1px 0 9px #888}.iladiro-angular-slider-card__figure{position:relative;width:100%;margin:0}.iladiro-angular-slider-card__figure-label{position:absolute;left:25px;bottom:0;z-index:1;background-color:#fff;border-radius:2px;text-transform:uppercase;color:#003489;text-align:center;padding:.2em .5em;transform:translateY(.6em);-ms-transform:translateY(.6em);-webkit-transform:translateY(.6em)}.iladiro-angular-slider-card__figure-image{border-radius:6px 6px 0 0;width:100%;height:200px;object-fit:cover}.iladiro-angular-slider-card__body{background:linear-gradient(180deg,#0047b9 0%,#003489 100%);border-radius:0 0 6px 6px;padding:25px 25px 70px;font-size:24px;min-height:200px;position:relative}.iladiro-angular-slider-card__body--title{font-weight:300;letter-spacing:0;font-size:1em;color:#fff;line-height:28px;margin-bottom:1em;text-decoration:none}.iladiro-angular-slider-card__body--description{letter-spacing:normal;font-size:.8em;color:#fff;line-height:normal}.iladiro-angular-slider-card__body--cta{position:absolute;left:25px;bottom:25px;border:1px solid white;letter-spacing:normal;font-size:.6em;color:#fff;line-height:normal;text-transform:uppercase;padding:.5em 1em;display:inline-block;border-radius:4px;text-decoration:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IladiroAngularSliderCardComponent, decorators: [{ type: Component, args: [{ selector: 'iladiro-angular-slider-card', template: "<div (click)=\"clickOnSlide()\" [class.clickable]=\"clickableSlide\" class=\"iladiro-angular-slider-card {{activeClass}}\">\r\n <figure class=\"iladiro-angular-slider-card__figure\" *ngIf=\"slide?.mediaSrc\">\r\n <img class=\"iladiro-angular-slider-card__figure-image\" [src]=\"slide.mediaSrc\" [alt]=\"slide.tag\" *ngIf=\"slide?.mediaSrc\">\r\n <figcaption class=\"iladiro-angular-slider-card__figure-label text-uppercase\" *ngIf=\"slide?.tag\">\r\n {{slide.tag}}\r\n </figcaption>\r\n </figure>\r\n <div class=\"iladiro-angular-slider-card__body\" *ngIf=\"slide.title || slide.description\">\r\n <h1 class=\"iladiro-angular-slider-card__body--title\" *ngIf=\"slide.title\">{{slide.title}}</h1>\r\n <p class=\"iladiro-angular-slider-card__body--description\" *ngIf=\"slide.description\">{{slide.description}}</p>\r\n <a [href]=\"slide.link\" target=\"_blank\" class=\"iladiro-angular-slider-card__body--cta\" *ngIf=\"slide.link\">\r\n <ng-container *ngIf=\"slide?.cta; else defaultCta\">\r\n {{slide.cta}}\r\n </ng-container>\r\n <ng-template #defaultCta>\r\n Read\r\n </ng-template>\r\n </a>\r\n </div> \r\n</div>\r\n", styles: [".iladiro-angular-slider-card{border:0;border-radius:6px;position:relative;display:block;transition:transform .6s ease-in-out;text-decoration:none}.iladiro-angular-slider-card.clickable{cursor:pointer}.iladiro-angular-slider-card.active{box-shadow:1px 0 9px #888}.iladiro-angular-slider-card__figure{position:relative;width:100%;margin:0}.iladiro-angular-slider-card__figure-label{position:absolute;left:25px;bottom:0;z-index:1;background-color:#fff;border-radius:2px;text-transform:uppercase;color:#003489;text-align:center;padding:.2em .5em;transform:translateY(.6em);-ms-transform:translateY(.6em);-webkit-transform:translateY(.6em)}.iladiro-angular-slider-card__figure-image{border-radius:6px 6px 0 0;width:100%;height:200px;object-fit:cover}.iladiro-angular-slider-card__body{background:linear-gradient(180deg,#0047b9 0%,#003489 100%);border-radius:0 0 6px 6px;padding:25px 25px 70px;font-size:24px;min-height:200px;position:relative}.iladiro-angular-slider-card__body--title{font-weight:300;letter-spacing:0;font-size:1em;color:#fff;line-height:28px;margin-bottom:1em;text-decoration:none}.iladiro-angular-slider-card__body--description{letter-spacing:normal;font-size:.8em;color:#fff;line-height:normal}.iladiro-angular-slider-card__body--cta{position:absolute;left:25px;bottom:25px;border:1px solid white;letter-spacing:normal;font-size:.6em;color:#fff;line-height:normal;text-transform:uppercase;padding:.5em 1em;display:inline-block;border-radius:4px;text-decoration:none}\n"] }] }], propDecorators: { slide: [{ type: Input }], index: [{ type: Input }], activeIndex: [{ type: Input }], first: [{ type: Input }], last: [{ type: Input }], direction: [{ type: Input }], clickableSlide: [{ type: Input }], clickSlideEvent: [{ type: Output }] } }); class IladiroAngularSliderComponent { constructor(cdRef) { this.cdRef = cdRef; this.slideList = []; this.customClass = ''; this.spaceBetweenSlide = 12; // Paginator config this.paginatorTemplate = 'default'; this.paginatorArrowStart = 'fa fa-angle-double-left'; this.paginatorArrowEnd = 'fa fa-angle-double-right'; this.paginatorArrowNext = 'fa fa-chevron-right'; this.paginatorArrowPrev = 'fa fa-chevron-left'; this.paginatorMaxVisiblePages = 5; this.clickableSlide = false; this.goNextEvent = new EventEmitter(); this.goPrevEvent = new EventEmitter(); this.goFirstEvent = new EventEmitter(); this.goLastEvent = new EventEmitter(); this.clickSlideEvent = new EventEmitter(); this.activeIndex = 0; this.slideWidth = 455; } clickOnSlide(slide) { this.clickSlideEvent.emit(slide); } setSlideByIndex(config) { this.items.forEach(item => { const translate = item.nativeElement.clientWidth * config.index; item.nativeElement.attributes['style'].value = this.calcTranslation(config.index, this.wrapperWidth, translate); }); this.activeIndex = config.index; this.currentDirection = config.direction; this.sendPaginationEvent(config); } sendPaginationEvent(config) { const obj = { page: config.page, direction: config.direction }; if (config.direction === 'next') { this.goNextEvent.emit(obj); } else if (config.direction === 'prev') { this.goPrevEvent.emit(obj); } else if (config.direction === 'first') { this.goFirstEvent.emit(obj); } else if (config.direction === 'last') { this.goLastEvent.emit(obj); } } calcTranslation(index, wrapperWidth, translate) { // Da rivedere perchè al momento funziona sui contenitori piccoli ma non bene su quelli grandi /* if(index == this.slideList.length - 1) { const leftovers = (wrapperWidth - itemWidth); return `transform: translateX(-${translate - leftovers}px);`; } else { return `transform: translateX(-${translate}px);`; } */ return `transform: translateX(-${translate}px); padding-right: ${this.spaceBetweenSlide}px`; } ngOnChanges(changes) { console.log(changes); } ngAfterViewInit() { var _a, _b; if (this.maxVisibleSlides) { this.wrapperWidth = (_b = (_a = this.sliderWrap) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.clientWidth; if (this.slideList.length > this.maxVisibleSlides) { if (this.maxVisibleSlides > 1) { this.slideWidth = (this.wrapperWidth / this.maxVisibleSlides) - this.spaceBetweenSlide; } else { this.slideWidth = (this.wrapperWidth / this.maxVisibleSlides); } } } this.cdRef.detectChanges(); } } IladiroAngularSliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IladiroAngularSliderComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); IladiroAngularSliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: IladiroAngularSliderComponent, selector: "iladiro-angular-slider", inputs: { slideList: "slideList", customClass: "customClass", spaceBetweenSlide: "spaceBetweenSlide", maxVisibleSlides: "maxVisibleSlides", paginatorTemplate: "paginatorTemplate", paginatorArrowStart: "paginatorArrowStart", paginatorArrowEnd: "paginatorArrowEnd", paginatorArrowNext: "paginatorArrowNext", paginatorArrowPrev: "paginatorArrowPrev", paginatorMaxVisiblePages: "paginatorMaxVisiblePages", clickableSlide: "clickableSlide" }, outputs: { goNextEvent: "goNextEvent", goPrevEvent: "goPrevEvent", goFirstEvent: "goFirstEvent", goLastEvent: "goLastEvent", clickSlideEvent: "clickSlideEvent" }, queries: [{ propertyName: "customTemplate", first: true, predicate: ["customTemplate"], descendants: true }], viewQueries: [{ propertyName: "sliderMain", first: true, predicate: ["sliderMain"], descendants: true }, { propertyName: "sliderWrap", first: true, predicate: ["sliderWrap"], descendants: true }, { propertyName: "items", predicate: ["item"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"iladiro-angular-slider {{customClass}}\" [class.onlyOne]=\"slideList.length === 1\">\r\n <div class=\"iladiro-angular-slider__wrap\" #sliderWrap>\r\n <div class=\"iladiro-angular-slider__main\" #sliderMain>\r\n <div #item \r\n class=\"iladiro-angular-slider__item\" \r\n [ngClass]=\"customTemplate ? 'iladiro-angular-slider__item--custom' : 'iladiro-angular-slider__item--default'\" \r\n [ngStyle]=\"{'transform': 'translateX(0px);'}\"\r\n [style.paddingRight]=\"spaceBetweenSlide + 'px'\" \r\n *ngFor=\"let slide of slideList; let i = index; let first = first; let last = last;\"\r\n >\r\n <div class=\"iladiro-angular-slider__content\" [style.width]=\"slideWidth + 'px'\" [class]=\"customTemplate ? 'iladiro-angular-slider__content--custom' : 'iladiro-angular-slider__content--default'\"> \r\n <ng-container \r\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\" \r\n [ngTemplateOutletContext]=\"{\r\n slide: slide, \r\n first: first, \r\n last: last, \r\n index: i, \r\n activeIndex: activeIndex, \r\n direction: currentDirection\r\n }\">\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <iladiro-angular-slider-card \r\n [slide]=\"slide\" \r\n [index]=\"i\"\r\n [activeIndex]=\"activeIndex\"\r\n [first]=\"first\"\r\n [last]=\"last\"\r\n [direction]=\"currentDirection\"\r\n [clickableSlide]=\"clickableSlide\"\r\n (clickSlideEvent)=\"clickOnSlide(slide)\">\r\n </iladiro-angular-slider-card> \r\n </ng-template> \r\n </div>\r\n </div> \r\n </div>\r\n </div> \r\n <iladiro-angular-slider-paginator \r\n [maxVisiblePages]=\"paginatorMaxVisiblePages\"\r\n [arrowStart]=\"paginatorArrowStart\"\r\n [arrowEnd]=\"paginatorArrowEnd\"\r\n [arrowNext]=\"paginatorArrowNext\"\r\n [arrowPrev]=\"paginatorArrowPrev\"\r\n [template]=\"paginatorTemplate\"\r\n [totalPages]=\"slideList.length\" \r\n (selectedPageEvent)=\"setSlideByIndex($event)\"\r\n ></iladiro-angular-slider-paginator>\r\n</div>", styles: [".iladiro-angular-slider{font-family:Lato,sans-serif}.iladiro-angular-slider__wrap{position:relative;overflow-x:hidden;overflow-y:hidden}.iladiro-angular-slider__main{width:max-content;display:flex;align-items:stretch}.iladiro-angular-slider__main .iladiro-angular-slider__item{transition:transform .6s ease-in-out;width:100%}.iladiro-angular-slider__main .iladiro-angular-slider__item .iladiro-angular-slider__content{width:455px;height:100%;position:relative}.iladiro-angular-slider__main .iladiro-angular-slider__item .iladiro-angular-slider__content--default{background:#003489;border-radius:6px}.iladiro-angular-slider.onlyOne .iladiro-angular-slider__main{width:100%}.iladiro-angular-slider.onlyOne .iladiro-angular-slider__main .iladiro-angular-slider__item{padding:0;width:100%}.iladiro-angular-slider.onlyOne .iladiro-angular-slider__main .iladiro-angular-slider__item .iladiro-angular-slider__content{width:100%!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: IladiroAngularSliderPaginatorComponent, selector: "iladiro-angular-slider-paginator", inputs: ["totalPages", "maxVisiblePages", "template", "arrowStart", "arrowEnd", "arrowNext", "arrowPrev"], outputs: ["selectedPageEvent"] }, { kind: "component", type: IladiroAngularSliderCardComponent, selector: "iladiro-angular-slider-card", inputs: ["slide", "index", "activeIndex", "first", "last", "direction", "clickableSlide"], outputs: ["clickSlideEvent"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IladiroAngularSliderComponent, decorators: [{ type: Component, args: [{ selector: 'iladiro-angular-slider', template: "<div class=\"iladiro-angular-slider {{customClass}}\" [class.onlyOne]=\"slideList.length === 1\">\r\n <div class=\"iladiro-angular-slider__wrap\" #sliderWrap>\r\n <div class=\"iladiro-angular-slider__main\" #sliderMain>\r\n <div #item \r\n class=\"iladiro-angular-slider__item\" \r\n [ngClass]=\"customTemplate ? 'iladiro-angular-slider__item--custom' : 'iladiro-angular-slider__item--default'\" \r\n [ngStyle]=\"{'transform': 'translateX(0px);'}\"\r\n [style.paddingRight]=\"spaceBetweenSlide + 'px'\" \r\n *ngFor=\"let slide of slideList; let i = index; let first = first; let last = last;\"\r\n >\r\n <div class=\"iladiro-angular-slider__content\" [style.width]=\"slideWidth + 'px'\" [class]=\"customTemplate ? 'iladiro-angular-slider__content--custom' : 'iladiro-angular-slider__content--default'\"> \r\n <ng-container \r\n [ngTemplateOutlet]=\"customTemplate || defaultTemplate\" \r\n [ngTemplateOutletContext]=\"{\r\n slide: slide, \r\n first: first, \r\n last: last, \r\n index: i, \r\n activeIndex: activeIndex, \r\n direction: currentDirection\r\n }\">\r\n </ng-container>\r\n <ng-template #defaultTemplate>\r\n <iladiro-angular-slider-card \r\n [slide]=\"slide\" \r\n [index]=\"i\"\r\n [activeIndex]=\"activeIndex\"\r\n [first]=\"first\"\r\n [last]=\"last\"\r\n [direction]=\"currentDirection\"\r\n [clickableSlide]=\"clickableSlide\"\r\n (clickSlideEvent)=\"clickOnSlide(slide)\">\r\n </iladiro-angular-slider-card> \r\n </ng-template> \r\n </div>\r\n </div> \r\n </div>\r\n </div> \r\n <iladiro-angular-slider-paginator \r\n [maxVisiblePages]=\"paginatorMaxVisiblePages\"\r\n [arrowStart]=\"paginatorArrowStart\"\r\n [arrowEnd]=\"paginatorArrowEnd\"\r\n [arrowNext]=\"paginatorArrowNext\"\r\n [arrowPrev]=\"paginatorArrowPrev\"\r\n [template]=\"paginatorTemplate\"\r\n [totalPages]=\"slideList.length\" \r\n (selectedPageEvent)=\"setSlideByIndex($event)\"\r\n ></iladiro-angular-slider-paginator>\r\n</div>", styles: [".iladiro-angular-slider{font-family:Lato,sans-serif}.iladiro-angular-slider__wrap{position:relative;overflow-x:hidden;overflow-y:hidden}.iladiro-angular-slider__main{width:max-content;display:flex;align-items:stretch}.iladiro-angular-slider__main .iladiro-angular-slider__item{transition:transform .6s ease-in-out;width:100%}.iladiro-angular-slider__main .iladiro-angular-slider__item .iladiro-angular-slider__content{width:455px;height:100%;position:relative}.iladiro-angular-slider__main .iladiro-angular-slider__item .iladiro-angular-slider__content--default{background:#003489;border-radius:6px}.iladiro-angular-slider.onlyOne .iladiro-angular-slider__main{width:100%}.iladiro-angular-slider.onlyOne .iladiro-angular-slider__main .iladiro-angular-slider__item{padding:0;width:100%}.iladiro-angular-slider.onlyOne .iladiro-angular-slider__main .iladiro-angular-slider__item .iladiro-angular-slider__content{width:100%!important}\n"] }] }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { slideList: [{ type: Input }], customClass: [{ type: Input }], spaceBetweenSlide: [{ type: Input }], maxVisibleSlides: [{ type: Input }], paginatorTemplate: [{ type: Input }], paginatorArrowStart: [{ type: Input }], paginatorArrowEnd: [{ type: Input }], paginatorArrowNext: [{ type: Input }], paginatorArrowPrev: [{ type: Input }], paginatorMaxVisiblePages: [{ type: Input }], clickableSlide: [{ type: Input }], goNextEvent: [{ type: Output }], goPrevEvent: [{ type: Output }], goFirstEvent: [{ type: Output }], goLastEvent: [{ type: Output }], clickSlideEvent: [{ type: Output }], sliderMain: [{ type: ViewChild, args: ['sliderMain'] }], sliderWrap: [{ type: ViewChild, args: ['sliderWrap'] }], items: [{ type: ViewChildren, args: ['item'] }], customTemplate: [{ type: ContentChild, args: ['customTemplate'] }] } }); class IladiroAngularSliderLibraryModule { } IladiroAngularSliderLibraryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IladiroAngularSliderLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); IladiroAngularSliderLibraryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: IladiroAngularSliderLibraryModule, declarations: [IladiroAngularSliderComponent, IladiroAngularSliderPaginatorComponent, IladiroAngularSliderCardComponent], imports: [CommonModule], exports: [IladiroAngularSliderComponent] }); IladiroAngularSliderLibraryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IladiroAngularSliderLibraryModule, imports: [CommonModule] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IladiroAngularSliderLibraryModule, decorators: [{ type: NgModule, args: [{ declarations: [ IladiroAngularSliderComponent, IladiroAngularSliderPaginatorComponent, IladiroAngularSliderCardComponent ], imports: [ CommonModule ], exports: [ IladiroAngularSliderComponent ] }] }] }); /* * Public API Surface of iladiro-angular-slider-library */ /** * Generated bundle index. Do not edit. */ export { IladiroAngularSliderComponent, IladiroAngularSliderLibraryModule }; //# sourceMappingURL=iladiro-angular-slider.mjs.map