@clr/angular
Version:
Angular components for Clarity
55 lines • 7.54 kB
JavaScript
/*
* Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.
* This software is released under MIT license.
* The full license information can be found in LICENSE in the root directory of this project.
*/
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { distinctUntilChanged, map } from 'rxjs/operators';
import { AccordionService } from '../../providers/accordion.service';
import { StepperModel } from '../models/stepper.model';
import * as i0 from "@angular/core";
export class StepperService extends AccordionService {
constructor() {
super();
this.panelsCompleted = this.getAllCompletedPanelChanges();
this.accordion = new StepperModel();
this._activeStepChanges = new Subject();
this.activeStep = this._activeStepChanges.asObservable();
}
resetPanels() {
this.accordion.resetPanels();
this.emitUpdatedPanels();
}
setPanelsWithErrors(ids) {
this.accordion.setPanelsWithErrors(ids);
this.emitUpdatedPanels();
}
navigateToNextPanel(currentPanelId, currentPanelValid = true) {
this.accordion.navigateToNextPanel(currentPanelId, currentPanelValid);
this.updateNextStep(currentPanelId, currentPanelValid);
this.emitUpdatedPanels();
}
overrideInitialPanel(panelId) {
this.accordion.overrideInitialPanel(panelId);
this.emitUpdatedPanels();
}
updateNextStep(currentPanelId, currentPanelValid) {
const nextPanel = this.accordion.getNextPanel(currentPanelId);
if (currentPanelValid && nextPanel) {
this._activeStepChanges.next(nextPanel.id);
}
else if (currentPanelValid) {
this._activeStepChanges.next(currentPanelId);
}
}
getAllCompletedPanelChanges() {
return this._panelsChanges.pipe(map(() => this.accordion.allPanelsCompleted), distinctUntilChanged());
}
}
StepperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: StepperService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
StepperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: StepperService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: StepperService, decorators: [{
type: Injectable
}], ctorParameters: function () { return []; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvYWNjb3JkaW9uL3N0ZXBwZXIvcHJvdmlkZXJzL3N0ZXBwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBR3ZELE1BQU0sT0FBTyxjQUFlLFNBQVEsZ0JBQWdCO0lBUWxEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFQRCxvQkFBZSxHQUFHLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBRTNDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFLakQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFhO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELG1CQUFtQixDQUFDLGNBQXNCLEVBQUUsaUJBQWlCLEdBQUcsSUFBSTtRQUNsRSxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELG9CQUFvQixDQUFDLE9BQWU7UUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sY0FBYyxDQUFDLGNBQXNCLEVBQUUsaUJBQTBCO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTlELElBQUksaUJBQWlCLElBQUksU0FBUyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQzVDO2FBQU0sSUFBSSxpQkFBaUIsRUFBRTtZQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUM3QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUM1QyxvQkFBb0IsRUFBRSxDQUN2QixDQUFDO0lBQ0osQ0FBQzs7MkdBbERVLGNBQWM7K0dBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIzIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBBY2NvcmRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2FjY29yZGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFN0ZXBwZXJNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zdGVwcGVyLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFN0ZXBwZXJTZXJ2aWNlIGV4dGVuZHMgQWNjb3JkaW9uU2VydmljZSB7XG4gIHJlYWRvbmx5IGFjdGl2ZVN0ZXA6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcmVhZG9ubHkgcGFuZWxzQ29tcGxldGVkID0gdGhpcy5nZXRBbGxDb21wbGV0ZWRQYW5lbENoYW5nZXMoKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYWNjb3JkaW9uID0gbmV3IFN0ZXBwZXJNb2RlbCgpO1xuXG4gIHByaXZhdGUgX2FjdGl2ZVN0ZXBDaGFuZ2VzID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmFjdGl2ZVN0ZXAgPSB0aGlzLl9hY3RpdmVTdGVwQ2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHJlc2V0UGFuZWxzKCkge1xuICAgIHRoaXMuYWNjb3JkaW9uLnJlc2V0UGFuZWxzKCk7XG4gICAgdGhpcy5lbWl0VXBkYXRlZFBhbmVscygpO1xuICB9XG5cbiAgc2V0UGFuZWxzV2l0aEVycm9ycyhpZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5hY2NvcmRpb24uc2V0UGFuZWxzV2l0aEVycm9ycyhpZHMpO1xuICAgIHRoaXMuZW1pdFVwZGF0ZWRQYW5lbHMoKTtcbiAgfVxuXG4gIG5hdmlnYXRlVG9OZXh0UGFuZWwoY3VycmVudFBhbmVsSWQ6IHN0cmluZywgY3VycmVudFBhbmVsVmFsaWQgPSB0cnVlKSB7XG4gICAgdGhpcy5hY2NvcmRpb24ubmF2aWdhdGVUb05leHRQYW5lbChjdXJyZW50UGFuZWxJZCwgY3VycmVudFBhbmVsVmFsaWQpO1xuICAgIHRoaXMudXBkYXRlTmV4dFN0ZXAoY3VycmVudFBhbmVsSWQsIGN1cnJlbnRQYW5lbFZhbGlkKTtcbiAgICB0aGlzLmVtaXRVcGRhdGVkUGFuZWxzKCk7XG4gIH1cblxuICBvdmVycmlkZUluaXRpYWxQYW5lbChwYW5lbElkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFjY29yZGlvbi5vdmVycmlkZUluaXRpYWxQYW5lbChwYW5lbElkKTtcbiAgICB0aGlzLmVtaXRVcGRhdGVkUGFuZWxzKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU5leHRTdGVwKGN1cnJlbnRQYW5lbElkOiBzdHJpbmcsIGN1cnJlbnRQYW5lbFZhbGlkOiBib29sZWFuKSB7XG4gICAgY29uc3QgbmV4dFBhbmVsID0gdGhpcy5hY2NvcmRpb24uZ2V0TmV4dFBhbmVsKGN1cnJlbnRQYW5lbElkKTtcblxuICAgIGlmIChjdXJyZW50UGFuZWxWYWxpZCAmJiBuZXh0UGFuZWwpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZVN0ZXBDaGFuZ2VzLm5leHQobmV4dFBhbmVsLmlkKTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRQYW5lbFZhbGlkKSB7XG4gICAgICB0aGlzLl9hY3RpdmVTdGVwQ2hhbmdlcy5uZXh0KGN1cnJlbnRQYW5lbElkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEFsbENvbXBsZXRlZFBhbmVsQ2hhbmdlcygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcGFuZWxzQ2hhbmdlcy5waXBlKFxuICAgICAgbWFwKCgpID0+IHRoaXMuYWNjb3JkaW9uLmFsbFBhbmVsc0NvbXBsZXRlZCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKTtcbiAgfVxufVxuIl19