@iladiro/angular-slider
Version:
Angular Slider plugin is flexible and easily customizable
331 lines (323 loc) • 40.6 kB
JavaScript
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