UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

55 lines 7.78 kB
import { Component, ViewChild } from '@angular/core'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { BulkOperationStepper } from './bulk-operation-stepper.component'; import * as i0 from "@angular/core"; export class BaseStepperComponent { constructor() { /** * A map holding step data. The order of properties need to match the order of * the steps they hold data for as the index of the property is used to clear * step data when navigating forth after changing data at an earlier step. */ this.stepData = {}; this.endSubscriptions = new Subject(); } set deviceTypes(deviceTypes) { if (this.operationStepper) { this.operationStepper.changeDeviceTypes(deviceTypes); } } ngOnInit() { this.operationStepper.retrieveOperationDetails = this.retrieveOperationPrototype.bind(this); this.operationStepper.selectionChange .pipe(takeUntil(this.endSubscriptions)) .subscribe(this.onSelectionChange.bind(this)); } ngOnDestroy() { this.endSubscriptions.next(); this.endSubscriptions.complete(); } onSelectionChange(event) { const { selectedIndex, previouslySelectedIndex } = event; if (selectedIndex > previouslySelectedIndex && selectedIndex < Object.keys(this.stepData).length) { // TODO clear step data only if previous step is "dirty" this.stepData[this.getStepDataKeyByIndex(selectedIndex)] = undefined; } } getStepDataKeyByIndex(index) { return Object.keys(this.stepData)[index]; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BaseStepperComponent, selector: "c8y-base-stepper", viewQueries: [{ propertyName: "operationStepper", first: true, predicate: BulkOperationStepper, descendants: true, static: true }], ngImport: i0, template: '', isInline: true }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BaseStepperComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-base-stepper', template: '' }] }], propDecorators: { operationStepper: [{ type: ViewChild, args: [BulkOperationStepper, { static: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdGVwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvYnVsay1vcGVyYXRpb24tc3RlcHBlci9iYXNlLXN0ZXBwZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFPMUUsTUFBTSxPQUFnQixvQkFBb0I7SUFKMUM7UUFhRTs7OztXQUlHO1FBQ0gsYUFBUSxHQUFzQyxFQUFFLENBQUM7UUFFekMscUJBQWdCLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7S0ErQnpEO0lBNUNDLElBQUksV0FBVyxDQUFDLFdBQThCO1FBQzVDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBV0QsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlO2FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUlTLGlCQUFpQixDQUFDLEtBQTRCO1FBQ3RELE1BQU0sRUFBRSxhQUFhLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDekQsSUFDRSxhQUFhLEdBQUcsdUJBQXVCO1lBQ3ZDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQ2pELENBQUM7WUFDRCx3REFBd0Q7WUFDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxLQUFhO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQzsrR0E5Q21CLG9CQUFvQjttR0FBcEIsb0JBQW9CLDBHQUM3QixvQkFBb0IsOERBSHJCLEVBQUU7OzRGQUVRLG9CQUFvQjtrQkFKekMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixRQUFRLEVBQUUsRUFBRTtpQkFDYjs4QkFFb0QsZ0JBQWdCO3NCQUFsRSxTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0ZXBwZXJTZWxlY3Rpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCdWxrT3BlcmF0aW9uU3RlcHBlciB9IGZyb20gJy4vYnVsay1vcGVyYXRpb24tc3RlcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3BlcmF0aW9uRGV0YWlscyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9idWxrLW9wZXJhdGlvbnMtc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1iYXNlLXN0ZXBwZXInLFxuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVN0ZXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoQnVsa09wZXJhdGlvblN0ZXBwZXIsIHsgc3RhdGljOiB0cnVlIH0pIG9wZXJhdGlvblN0ZXBwZXI6IEJ1bGtPcGVyYXRpb25TdGVwcGVyO1xuXG4gIHNldCBkZXZpY2VUeXBlcyhkZXZpY2VUeXBlczogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBpZiAodGhpcy5vcGVyYXRpb25TdGVwcGVyKSB7XG4gICAgICB0aGlzLm9wZXJhdGlvblN0ZXBwZXIuY2hhbmdlRGV2aWNlVHlwZXMoZGV2aWNlVHlwZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBIG1hcCBob2xkaW5nIHN0ZXAgZGF0YS4gVGhlIG9yZGVyIG9mIHByb3BlcnRpZXMgbmVlZCB0byBtYXRjaCB0aGUgb3JkZXIgb2ZcbiAgICogdGhlIHN0ZXBzIHRoZXkgaG9sZCBkYXRhIGZvciBhcyB0aGUgaW5kZXggb2YgdGhlIHByb3BlcnR5IGlzIHVzZWQgdG8gY2xlYXJcbiAgICogc3RlcCBkYXRhIHdoZW4gbmF2aWdhdGluZyBmb3J0aCBhZnRlciBjaGFuZ2luZyBkYXRhIGF0IGFuIGVhcmxpZXIgc3RlcC5cbiAgICovXG4gIHN0ZXBEYXRhOiB7IFtrZXk6IHN0cmluZ106IElNYW5hZ2VkT2JqZWN0IH0gPSB7fTtcblxuICBwcml2YXRlIGVuZFN1YnNjcmlwdGlvbnM6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlcmF0aW9uU3RlcHBlci5yZXRyaWV2ZU9wZXJhdGlvbkRldGFpbHMgPSB0aGlzLnJldHJpZXZlT3BlcmF0aW9uUHJvdG90eXBlLmJpbmQodGhpcyk7XG5cbiAgICB0aGlzLm9wZXJhdGlvblN0ZXBwZXIuc2VsZWN0aW9uQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5lbmRTdWJzY3JpcHRpb25zKSlcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5vblNlbGVjdGlvbkNoYW5nZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZW5kU3Vic2NyaXB0aW9ucy5uZXh0KCk7XG4gICAgdGhpcy5lbmRTdWJzY3JpcHRpb25zLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmV0cmlldmVPcGVyYXRpb25Qcm90b3R5cGUoKTogT3BlcmF0aW9uRGV0YWlscyB8IFByb21pc2U8T3BlcmF0aW9uRGV0YWlscz47XG5cbiAgcHJvdGVjdGVkIG9uU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBTdGVwcGVyU2VsZWN0aW9uRXZlbnQpIHtcbiAgICBjb25zdCB7IHNlbGVjdGVkSW5kZXgsIHByZXZpb3VzbHlTZWxlY3RlZEluZGV4IH0gPSBldmVudDtcbiAgICBpZiAoXG4gICAgICBzZWxlY3RlZEluZGV4ID4gcHJldmlvdXNseVNlbGVjdGVkSW5kZXggJiZcbiAgICAgIHNlbGVjdGVkSW5kZXggPCBPYmplY3Qua2V5cyh0aGlzLnN0ZXBEYXRhKS5sZW5ndGhcbiAgICApIHtcbiAgICAgIC8vIFRPRE8gY2xlYXIgc3RlcCBkYXRhIG9ubHkgaWYgcHJldmlvdXMgc3RlcCBpcyBcImRpcnR5XCJcbiAgICAgIHRoaXMuc3RlcERhdGFbdGhpcy5nZXRTdGVwRGF0YUtleUJ5SW5kZXgoc2VsZWN0ZWRJbmRleCldID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RlcERhdGFLZXlCeUluZGV4KGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnN0ZXBEYXRhKVtpbmRleF07XG4gIH1cbn1cbiJdfQ==