@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
55 lines • 7.78 kB
JavaScript
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==