carousel-angular
Version:
A simple carousel component for Angular 14+ based on 'angular-responsive-carousel' by Ivy Laboratory http://ivylab.space
53 lines • 6.85 kB
JavaScript
export class Cells {
constructor(carouselProperties, utils) {
this.carouselProperties = carouselProperties;
this.utils = utils;
this.counter = 0;
this.init(carouselProperties);
}
get cellLength() {
return this.cells ? this.cells.length : 0;
}
get fullCellWidth() {
return this.carouselProperties.cellWidth + this.carouselProperties.margin;
}
get cellLengthInLightDOMMode() {
return this.cellLength;
}
get numberOfVisibleCells() {
return this.utils.numberOfVisibleCells;
}
get overflowCellsLimit() {
return this.utils.overflowCellsLimit;
}
updateProperties(carouselProperties) {
this.carouselProperties = carouselProperties;
}
lineUp() {
const cells = this.element ? this.element.children : [];
for (let i = 0; i < cells.length; i++) {
const cell = cells[i];
const positionX = this.getCellPositionInContainer(i);
cell.style.transform = `translateX(${positionX}px)`;
cell.style.width = `${this.carouselProperties.cellWidth}px`;
}
}
ifSequenceOfCellsIsChanged() {
const cells = this.element.children;
return cells[0].style.transform !== 'translateX(0px)';
}
getCellPositionInContainer(cellIndexInDOMTree) {
return cellIndexInDOMTree * this.fullCellWidth;
}
setCounter(value) {
this.counter = value;
}
init(carouselProperties) {
this.element = this.carouselProperties.cellsElement;
this.cells = this.element.children;
this.visibleWidth =
this.carouselProperties.visibleWidth ||
this.element.parentElement.clientWidth;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jYXJvdXNlbC1hbmd1bGFyL3NyYy9saWIvY2VsbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLEtBQUs7SUE2QmhCLFlBQ1Usa0JBQXNDLEVBQ3RDLEtBQVU7UUFEVix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLFVBQUssR0FBTCxLQUFLLENBQUs7UUF4QnBCLFlBQU8sR0FBRyxDQUFDLENBQUM7UUEwQlYsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUF6QkQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBSSx3QkFBd0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztJQUN2QyxDQUFDO0lBU0QsZ0JBQWdCLENBQUMsa0JBQXNDO1FBQ3JELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFeEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxJQUFvQixDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsY0FBYyxTQUFTLEtBQUssQ0FBQztZQUVuRSxJQUNELENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLElBQUksQ0FBQztTQUMxRDtJQUNILENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsTUFBTSxLQUFLLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDekMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxpQkFBaUIsQ0FBQztJQUN4RCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsa0JBQTBCO1FBQ25ELE9BQU8sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUNqRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksQ0FBQyxrQkFBc0M7UUFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDbkMsSUFBSSxDQUFDLFlBQVk7WUFDZixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWTtnQkFDcEMsSUFBSSxDQUFDLE9BQVEsQ0FBQyxhQUFjLENBQUMsV0FBVyxDQUFDO0lBQzdDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnRpZXMgYXMgQ2Fyb3VzZWxQcm9wZXJ0aWVzIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIENlbGxzIHtcbiAgY2VsbHM6IEhUTUxDb2xsZWN0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGVsZW1lbnQhOiBIVE1MRWxlbWVudDtcblxuICB2aXNpYmxlV2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICBjb3VudGVyID0gMDtcblxuICBnZXQgY2VsbExlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5jZWxscyA/IHRoaXMuY2VsbHMubGVuZ3RoIDogMDtcbiAgfVxuXG4gIGdldCBmdWxsQ2VsbFdpZHRoKCkge1xuICAgIHJldHVybiB0aGlzLmNhcm91c2VsUHJvcGVydGllcy5jZWxsV2lkdGggKyB0aGlzLmNhcm91c2VsUHJvcGVydGllcy5tYXJnaW47XG4gIH1cblxuICBnZXQgY2VsbExlbmd0aEluTGlnaHRET01Nb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmNlbGxMZW5ndGg7XG4gIH1cblxuICBnZXQgbnVtYmVyT2ZWaXNpYmxlQ2VsbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudXRpbHMubnVtYmVyT2ZWaXNpYmxlQ2VsbHM7XG4gIH1cblxuICBnZXQgb3ZlcmZsb3dDZWxsc0xpbWl0KCkge1xuICAgIHJldHVybiB0aGlzLnV0aWxzLm92ZXJmbG93Q2VsbHNMaW1pdDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Fyb3VzZWxQcm9wZXJ0aWVzOiBDYXJvdXNlbFByb3BlcnRpZXMsXG4gICAgcHJpdmF0ZSB1dGlsczogYW55XG4gICkge1xuICAgIHRoaXMuaW5pdChjYXJvdXNlbFByb3BlcnRpZXMpO1xuICB9XG5cbiAgdXBkYXRlUHJvcGVydGllcyhjYXJvdXNlbFByb3BlcnRpZXM6IENhcm91c2VsUHJvcGVydGllcykge1xuICAgIHRoaXMuY2Fyb3VzZWxQcm9wZXJ0aWVzID0gY2Fyb3VzZWxQcm9wZXJ0aWVzO1xuICB9XG5cbiAgbGluZVVwKCkge1xuICAgIGNvbnN0IGNlbGxzID0gdGhpcy5lbGVtZW50ID8gdGhpcy5lbGVtZW50LmNoaWxkcmVuIDogW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjZWxsID0gY2VsbHNbaV07XG4gICAgICBjb25zdCBwb3NpdGlvblggPSB0aGlzLmdldENlbGxQb3NpdGlvbkluQ29udGFpbmVyKGkpO1xuICAgICAgKGNlbGwgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7cG9zaXRpb25YfXB4KWA7XG4gICAgICAoXG4gICAgICAgIGNlbGwgYXMgSFRNTEVsZW1lbnRcbiAgICAgICkuc3R5bGUud2lkdGggPSBgJHt0aGlzLmNhcm91c2VsUHJvcGVydGllcy5jZWxsV2lkdGh9cHhgO1xuICAgIH1cbiAgfVxuXG4gIGlmU2VxdWVuY2VPZkNlbGxzSXNDaGFuZ2VkKCkge1xuICAgIGNvbnN0IGNlbGxzOiBhbnkgPSB0aGlzLmVsZW1lbnQuY2hpbGRyZW47XG4gICAgcmV0dXJuIGNlbGxzWzBdLnN0eWxlLnRyYW5zZm9ybSAhPT0gJ3RyYW5zbGF0ZVgoMHB4KSc7XG4gIH1cblxuICBnZXRDZWxsUG9zaXRpb25JbkNvbnRhaW5lcihjZWxsSW5kZXhJbkRPTVRyZWU6IG51bWJlcikge1xuICAgIHJldHVybiBjZWxsSW5kZXhJbkRPTVRyZWUgKiB0aGlzLmZ1bGxDZWxsV2lkdGg7XG4gIH1cblxuICBzZXRDb3VudGVyKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLmNvdW50ZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIGluaXQoY2Fyb3VzZWxQcm9wZXJ0aWVzOiBDYXJvdXNlbFByb3BlcnRpZXMpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLmNhcm91c2VsUHJvcGVydGllcy5jZWxsc0VsZW1lbnQ7XG4gICAgdGhpcy5jZWxscyA9IHRoaXMuZWxlbWVudC5jaGlsZHJlbjtcbiAgICB0aGlzLnZpc2libGVXaWR0aCA9XG4gICAgICB0aGlzLmNhcm91c2VsUHJvcGVydGllcy52aXNpYmxlV2lkdGggfHxcbiAgICAgIHRoaXMuZWxlbWVudCEucGFyZW50RWxlbWVudCEuY2xpZW50V2lkdGg7XG4gIH1cbn1cbiJdfQ==