ngx-carousel-ease
Version:
ngx-carousel-ease is a versatile Angular library providing a feature-rich, simple, and performant carousel component. This library supports infinite and responsive mode, mouse and touch event. Attention has been put to accessibility, performance, and frie
37 lines • 6.49 kB
JavaScript
export class Validation {
constructor(carousel, slideWidth, slideMaxWidth, gap, slideToScroll) {
this.carousel = carousel;
this.slideWidth = slideWidth;
this.slideMaxWidth = slideMaxWidth;
this.gap = gap;
this.slideToScroll = slideToScroll;
this.carouselSlides = this.carousel.querySelectorAll('.carousel-slide');
this.slideMaxWidthShouldBeGreaterThanSlideWidth();
this.slideWidthAndGapShouldBeGreaterThanZero();
this.requiredClassShouldBeAdded();
this.slideToScrollNotGreaterThanTotalSlides();
}
slideMaxWidthShouldBeGreaterThanSlideWidth() {
if (this.slideMaxWidth < this.slideWidth) {
throw new Error(`slideMaxWidth (value: ${this.slideMaxWidth}) is lower than slideWidth (value: ${this.slideWidth}). Please increase the max width or decrease the slide width.`);
}
}
slideWidthAndGapShouldBeGreaterThanZero() {
const slideWidthPlusGap = this.slideWidth + this.gap;
if (slideWidthPlusGap <= 0) {
throw new Error('Unable to construct Carousel. SlideWidth and gap lower or equal than zero. Please add a positive value for the slideWidth and gap.');
}
}
requiredClassShouldBeAdded() {
if (this.carouselSlides === undefined || this.carouselSlides.length === 0) {
throw new Error('No elements with "carousel-slide" as class have been found. Please add this class to each of your slides.');
}
}
slideToScrollNotGreaterThanTotalSlides() {
if (this.carouselSlides &&
this.slideToScroll > this.carouselSlides.length) {
throw new Error(`slideToScroll value (${this.slideToScroll}) is greater than the total amount of slide (${this.carouselSlides.length}). This can cause invisible cards in infinite mode. Please lower the slideToScroll value.`);
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nhcm91c2VsL3NyYy9saWIvdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUdyQixZQUNtQixRQUF3QixFQUN4QixVQUFrQixFQUNsQixhQUFxQixFQUNyQixHQUFXLEVBQ1gsYUFBcUI7UUFKckIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ1gsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFFdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELDBDQUEwQztRQUN4QyxJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQ2IseUJBQXlCLElBQUksQ0FBQyxhQUFhLHNDQUFzQyxJQUFJLENBQUMsVUFBVSwrREFBK0QsQ0FDaEssQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsdUNBQXVDO1FBQ3JDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBRXJELElBQUksaUJBQWlCLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FDYixvSUFBb0ksQ0FDckksQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUUsTUFBTSxJQUFJLEtBQUssQ0FDYiwyR0FBMkcsQ0FDNUcsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsc0NBQXNDO1FBQ3BDLElBQ0UsSUFBSSxDQUFDLGNBQWM7WUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFDL0MsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isd0JBQXdCLElBQUksQ0FBQyxhQUFhLGdEQUFnRCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sMkZBQTJGLENBQ2hOLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFZhbGlkYXRpb24ge1xyXG4gIGNhcm91c2VsU2xpZGVzITogTm9kZUxpc3RPZjxIVE1MRGl2RWxlbWVudD4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXJvdXNlbDogSFRNTERpdkVsZW1lbnQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNsaWRlV2lkdGg6IG51bWJlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2xpZGVNYXhXaWR0aDogbnVtYmVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBnYXA6IG51bWJlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2xpZGVUb1Njcm9sbDogbnVtYmVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNhcm91c2VsU2xpZGVzID0gdGhpcy5jYXJvdXNlbC5xdWVyeVNlbGVjdG9yQWxsKCcuY2Fyb3VzZWwtc2xpZGUnKTtcclxuICAgIHRoaXMuc2xpZGVNYXhXaWR0aFNob3VsZEJlR3JlYXRlclRoYW5TbGlkZVdpZHRoKCk7XHJcbiAgICB0aGlzLnNsaWRlV2lkdGhBbmRHYXBTaG91bGRCZUdyZWF0ZXJUaGFuWmVybygpO1xyXG4gICAgdGhpcy5yZXF1aXJlZENsYXNzU2hvdWxkQmVBZGRlZCgpO1xyXG4gICAgdGhpcy5zbGlkZVRvU2Nyb2xsTm90R3JlYXRlclRoYW5Ub3RhbFNsaWRlcygpO1xyXG4gIH1cclxuXHJcbiAgc2xpZGVNYXhXaWR0aFNob3VsZEJlR3JlYXRlclRoYW5TbGlkZVdpZHRoKCkge1xyXG4gICAgaWYgKHRoaXMuc2xpZGVNYXhXaWR0aCA8IHRoaXMuc2xpZGVXaWR0aCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgYHNsaWRlTWF4V2lkdGggKHZhbHVlOiAke3RoaXMuc2xpZGVNYXhXaWR0aH0pIGlzIGxvd2VyIHRoYW4gc2xpZGVXaWR0aCAodmFsdWU6ICR7dGhpcy5zbGlkZVdpZHRofSkuIFBsZWFzZSBpbmNyZWFzZSB0aGUgbWF4IHdpZHRoIG9yIGRlY3JlYXNlIHRoZSBzbGlkZSB3aWR0aC5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzbGlkZVdpZHRoQW5kR2FwU2hvdWxkQmVHcmVhdGVyVGhhblplcm8oKSB7XHJcbiAgICBjb25zdCBzbGlkZVdpZHRoUGx1c0dhcCA9IHRoaXMuc2xpZGVXaWR0aCArIHRoaXMuZ2FwO1xyXG5cclxuICAgIGlmIChzbGlkZVdpZHRoUGx1c0dhcCA8PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnVW5hYmxlIHRvIGNvbnN0cnVjdCBDYXJvdXNlbC4gU2xpZGVXaWR0aCBhbmQgZ2FwIGxvd2VyIG9yIGVxdWFsIHRoYW4gemVyby4gUGxlYXNlIGFkZCBhIHBvc2l0aXZlIHZhbHVlIGZvciB0aGUgc2xpZGVXaWR0aCBhbmQgZ2FwLidcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlcXVpcmVkQ2xhc3NTaG91bGRCZUFkZGVkKCkge1xyXG4gICAgaWYgKHRoaXMuY2Fyb3VzZWxTbGlkZXMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmNhcm91c2VsU2xpZGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgJ05vIGVsZW1lbnRzIHdpdGggXCJjYXJvdXNlbC1zbGlkZVwiIGFzIGNsYXNzIGhhdmUgYmVlbiBmb3VuZC4gUGxlYXNlIGFkZCB0aGlzIGNsYXNzIHRvIGVhY2ggb2YgeW91ciBzbGlkZXMuJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2xpZGVUb1Njcm9sbE5vdEdyZWF0ZXJUaGFuVG90YWxTbGlkZXMoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY2Fyb3VzZWxTbGlkZXMgJiZcclxuICAgICAgdGhpcy5zbGlkZVRvU2Nyb2xsID4gdGhpcy5jYXJvdXNlbFNsaWRlcy5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgICAgYHNsaWRlVG9TY3JvbGwgdmFsdWUgKCR7dGhpcy5zbGlkZVRvU2Nyb2xsfSkgaXMgZ3JlYXRlciB0aGFuIHRoZSB0b3RhbCBhbW91bnQgb2Ygc2xpZGUgKCR7dGhpcy5jYXJvdXNlbFNsaWRlcy5sZW5ndGh9KS4gVGhpcyBjYW4gY2F1c2UgaW52aXNpYmxlIGNhcmRzIGluIGluZmluaXRlIG1vZGUuIFBsZWFzZSBsb3dlciB0aGUgc2xpZGVUb1Njcm9sbCB2YWx1ZS5gXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==