@coreui/angular
Version:
CoreUI Components Library for Angular
44 lines • 7.18 kB
JavaScript
import { Component } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "../carousel.service";
import * as i2 from "../carousel-state";
export class CarouselIndicatorsComponent {
constructor(carouselService, carouselState) {
this.carouselService = carouselService;
this.carouselState = carouselState;
this.items = [];
this.active = 0;
}
ngOnInit() {
this.carouselStateSubscribe();
}
ngOnDestroy() {
this.carouselStateSubscribe(false);
}
onClick(index) {
if (index !== this.active) {
const direction = index < this.active ? 'prev' : 'next';
this.carouselState.state = { direction, activeItemIndex: index };
}
}
carouselStateSubscribe(subscribe = true) {
if (subscribe) {
this.carouselIndexSubscription = this.carouselService.carouselIndex$.subscribe((nextIndex) => {
this.items = this.carouselState?.state?.items?.map(item => item.index) ?? [];
if ('active' in nextIndex) {
this.active = nextIndex.active ?? 0;
}
});
}
else {
this.carouselIndexSubscription?.unsubscribe();
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CarouselIndicatorsComponent, deps: [{ token: i1.CarouselService }, { token: i2.CarouselState }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: CarouselIndicatorsComponent, isStandalone: true, selector: "c-carousel-indicators", ngImport: i0, template: "<div class=\"carousel-indicators\">\n @for (item of items; track item; let i = $index) {\n <button\n [attr.data-coreui-target]=\"i\"\n type=\"button\"\n (click)=\"onClick(i)\"\n [class]=\"{ active: active === i }\"\n [attr.aria-current]=\"active === i\">\n </button>\n }\n</div>\n" }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CarouselIndicatorsComponent, decorators: [{
type: Component,
args: [{ selector: 'c-carousel-indicators', standalone: true, template: "<div class=\"carousel-indicators\">\n @for (item of items; track item; let i = $index) {\n <button\n [attr.data-coreui-target]=\"i\"\n type=\"button\"\n (click)=\"onClick(i)\"\n [class]=\"{ active: active === i }\"\n [attr.aria-current]=\"active === i\">\n </button>\n }\n</div>\n" }]
}], ctorParameters: () => [{ type: i1.CarouselService }, { type: i2.CarouselState }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtaW5kaWNhdG9ycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2Nhcm91c2VsL2Nhcm91c2VsLWluZGljYXRvcnMvY2Fyb3VzZWwtaW5kaWNhdG9ycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2Nhcm91c2VsL2Nhcm91c2VsLWluZGljYXRvcnMvY2Fyb3VzZWwtaW5kaWNhdG9ycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQzs7OztBQVc3RCxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFlBQ1UsZUFBZ0MsRUFDaEMsYUFBNEI7UUFENUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBR3RDLFVBQUssR0FBMkIsRUFBRSxDQUFDO1FBQ25DLFdBQU0sR0FBRyxDQUFDLENBQUM7SUFIUixDQUFDO0lBTUosUUFBUTtRQUNOLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYTtRQUNuQixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsTUFBTSxTQUFTLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFlBQXFCLElBQUk7UUFDdEQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDM0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDN0UsSUFBSSxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7b0JBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHlCQUF5QixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDOytHQXBDVSwyQkFBMkI7bUdBQTNCLDJCQUEyQixpRkNYeEMsMlRBV0E7OzRGREFhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSx1QkFBdUIsY0FFckIsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDYXJvdXNlbFN0YXRlIH0gZnJvbSAnLi4vY2Fyb3VzZWwtc3RhdGUnO1xuaW1wb3J0IHsgQ2Fyb3VzZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2Fyb3VzZWwuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtY2Fyb3VzZWwtaW5kaWNhdG9ycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC1pbmRpY2F0b3JzLmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbEluZGljYXRvcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Fyb3VzZWxTZXJ2aWNlOiBDYXJvdXNlbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYXJvdXNlbFN0YXRlOiBDYXJvdXNlbFN0YXRlXG4gICkge31cblxuICBpdGVtczogKG51bWJlciB8IHVuZGVmaW5lZClbXSA9IFtdO1xuICBhY3RpdmUgPSAwO1xuICBwcml2YXRlIGNhcm91c2VsSW5kZXhTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXJvdXNlbFN0YXRlU3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhcm91c2VsU3RhdGVTdWJzY3JpYmUoZmFsc2UpO1xuICB9XG5cbiAgb25DbGljayhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGluZGV4ICE9PSB0aGlzLmFjdGl2ZSkge1xuICAgICAgY29uc3QgZGlyZWN0aW9uID0gaW5kZXggPCB0aGlzLmFjdGl2ZSA/ICdwcmV2JyA6ICduZXh0JztcbiAgICAgIHRoaXMuY2Fyb3VzZWxTdGF0ZS5zdGF0ZSA9IHsgZGlyZWN0aW9uLCBhY3RpdmVJdGVtSW5kZXg6IGluZGV4IH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYXJvdXNlbFN0YXRlU3Vic2NyaWJlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLmNhcm91c2VsSW5kZXhTdWJzY3JpcHRpb24gPSB0aGlzLmNhcm91c2VsU2VydmljZS5jYXJvdXNlbEluZGV4JC5zdWJzY3JpYmUoKG5leHRJbmRleCkgPT4ge1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5jYXJvdXNlbFN0YXRlPy5zdGF0ZT8uaXRlbXM/Lm1hcChpdGVtID0+IGl0ZW0uaW5kZXgpID8/IFtdO1xuICAgICAgICBpZiAoJ2FjdGl2ZScgaW4gbmV4dEluZGV4KSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmUgPSBuZXh0SW5kZXguYWN0aXZlID8/IDA7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhcm91c2VsSW5kZXhTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaW5kaWNhdG9yc1wiPlxuICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayBpdGVtOyBsZXQgaSA9ICRpbmRleCkge1xuICAgIDxidXR0b25cbiAgICAgIFthdHRyLmRhdGEtY29yZXVpLXRhcmdldF09XCJpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2soaSlcIlxuICAgICAgW2NsYXNzXT1cInsgYWN0aXZlOiBhY3RpdmUgPT09IGkgfVwiXG4gICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYWN0aXZlID09PSBpXCI+XG4gICAgPC9idXR0b24+XG4gIH1cbjwvZGl2PlxuIl19