UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

111 lines 15 kB
import { __decorate, __metadata } from "tslib"; import { ChangeDetectorRef, Component, Input, ViewChild, } from '@angular/core'; import { IonToggle } from '@ionic/angular'; import { TapValueEditorContainerComponent } from '@iotize/ionic'; import { map } from 'rxjs/operators'; import { MonitoringAppGenComponent, } from '../../metadata/decorators'; import * as i0 from "@angular/core"; import * as i1 from "@ionic/angular"; import * as i2 from "@iotize/ionic"; import * as i3 from "@angular/common"; let TapVariableToggleComponent = class TapVariableToggleComponent { constructor(changeDetectorRef) { this.changeDetectorRef = changeDetectorRef; this.textOnLeft = 'Off'; this.textOnRight = 'On'; this.lines = 'none'; this.toggleColor = 'primary'; this.editable = false; this.valueOn = 1; this.valueOff = 0; this.chip = { outline: false, color: '', }; this.chipOutline = false; this.inputOptions = { type: 'toggle', }; } ngAfterViewInit() { this._valueSub = this.ctx?.valueToDisplay .pipe(map((value) => { if (value === this.valueOn) { value = true; } else if (value === this.valueOff) { value = false; } value = !!value; return value; })) .subscribe((value) => { this._lastValueDisplayed = value; if (this.ctx.pendingSubmitValue === undefined) { this.toggle.checked = value; this.changeDetectorRef.detectChanges(); } }); } ngOnDestroy() { this._valueSub?.unsubscribe(); } switchToggle() { if (!this.toggle.disabled) { this.toggle.checked = !this.toggle.checked; } } onValueChange(event) { if (this._lastValueDisplayed !== event.detail.checked) { const value = event.detail.checked ? this.valueOn : this.valueOff; this.ctx?.notifyValueChange(value); } } }; /** @nocollapse */ TapVariableToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapVariableToggleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ TapVariableToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TapVariableToggleComponent, selector: "tap-variable-toggle", inputs: { textOnLeft: "textOnLeft", textOnRight: "textOnRight", lines: "lines", toggleColor: "toggleColor", variable: "variable", editable: "editable", valueOn: "valueOn", valueOff: "valueOff", chip: "chip" }, viewQueries: [{ propertyName: "toggle", first: true, predicate: ["toggle"], descendants: true }, { propertyName: "ctx", first: true, predicate: ["ctx"], descendants: true }], ngImport: i0, template: "<tap-value-editor-container #ctx [variable]=\"variable\" [lines]=\"lines\">\n <ion-chip\n [color]=\"chip?.color\"\n [outline]=\"chip?.outline\"\n (click)=\"switchToggle()\"\n [disabled]=\"!editable || (ctx.loadingChange | async)\"\n >\n <span class=\"spanToggle\"> {{ textOnLeft }} </span>\n <ion-toggle\n [color]=\"toggleColor\"\n #toggle\n [disabled]=\"!editable || (ctx.loadingChange | async)\"\n style=\"pointer-events: none\"\n (ionChange)=\"onValueChange($event)\"\n ></ion-toggle>\n <span class=\"spanToggle\"> {{ textOnRight }} </span>\n </ion-chip>\n</tap-value-editor-container>\n", styles: [".toggle-icon{font-size:5em}\n"], dependencies: [{ kind: "component", type: i1.IonChip, selector: "ion-chip", inputs: ["color", "disabled", "mode", "outline"] }, { kind: "component", type: i1.IonToggle, selector: "ion-toggle", inputs: ["checked", "color", "disabled", "enableOnOffLabels", "mode", "name", "value"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "component", type: i2.TapValueEditorContainerComponent, selector: "tap-value-editor-container", inputs: ["button", "variable", "inputOptions", "showRefreshButton", "showSubmitButton", "showEditButton", "error", "lines", "modalEdition", "value"], outputs: ["submit", "refresh"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); TapVariableToggleComponent = __decorate([ MonitoringAppGenComponent({ constraints: { isArray: 'NO', isNumber: 'YES', }, events: [ { name: 'submit', dataType: 'boolean', }, ], }), __metadata("design:paramtypes", [ChangeDetectorRef]) ], TapVariableToggleComponent); export { TapVariableToggleComponent }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapVariableToggleComponent, decorators: [{ type: Component, args: [{ selector: 'tap-variable-toggle', template: "<tap-value-editor-container #ctx [variable]=\"variable\" [lines]=\"lines\">\n <ion-chip\n [color]=\"chip?.color\"\n [outline]=\"chip?.outline\"\n (click)=\"switchToggle()\"\n [disabled]=\"!editable || (ctx.loadingChange | async)\"\n >\n <span class=\"spanToggle\"> {{ textOnLeft }} </span>\n <ion-toggle\n [color]=\"toggleColor\"\n #toggle\n [disabled]=\"!editable || (ctx.loadingChange | async)\"\n style=\"pointer-events: none\"\n (ionChange)=\"onValueChange($event)\"\n ></ion-toggle>\n <span class=\"spanToggle\"> {{ textOnRight }} </span>\n </ion-chip>\n</tap-value-editor-container>\n", styles: [".toggle-icon{font-size:5em}\n"] }] }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { toggle: [{ type: ViewChild, args: ['toggle'] }], ctx: [{ type: ViewChild, args: ['ctx'] }], textOnLeft: [{ type: Input }], textOnRight: [{ type: Input }], lines: [{ type: Input }], toggleColor: [{ type: Input }], variable: [{ type: Input }], editable: [{ type: Input }], valueOn: [{ type: Input }], valueOff: [{ type: Input }], chip: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXZhcmlhYmxlLXRvZ2dsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvbW9uaXRvcmluZy9zcmMvbGliL3VpLWNvbXBvbmVudHMvdGFwLXZhcmlhYmxlLXRvZ2dsZS90YXAtdmFyaWFibGUtdG9nZ2xlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvdGl6ZS1pb25pYy9tb25pdG9yaW5nL3NyYy9saWIvdWktY29tcG9uZW50cy90YXAtdmFyaWFibGUtdG9nZ2xlL3RhcC12YXJpYWJsZS10b2dnbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUVMLHlCQUF5QixHQUMxQixNQUFNLDJCQUEyQixDQUFDOzs7OztBQXdCNUIsSUFBTSwwQkFBMEIsR0FBaEMsTUFBTSwwQkFBMEI7SUE4Q3JDLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBdkN4RCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBR25CLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBR25CLFVBQUssR0FBRyxNQUFNLENBQUM7UUFHZixnQkFBVyxHQUFHLFNBQVMsQ0FBQztRQU14QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFHWixhQUFRLEdBQUcsQ0FBQyxDQUFD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b3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvblRvZ2dsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRhcFZhbHVlRWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnQGlvdGl6ZS9pb25pYyc7XG5pbXBvcnQgeyBFZGl0YWJsZVZhbHVlRGF0YVN0cmVhbUludGVyZmFjZSB9IGZyb20gJ0Bpb3RpemUvdGFwL2RhdGEnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBBcHBHZW5GaWVsZCxcbiAgTW9uaXRvcmluZ0FwcEdlbkNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vbWV0YWRhdGEvZGVjb3JhdG9ycyc7XG5pbXBvcnQge1xuICBDT0xPUl9TQ0hFTUVfU0NIRU1BLFxuICBJT05JQ19DT0xPUl9TQ0hFTUEsXG4gIFRBUF9WQVJJQUJMRV9TQ0hFTUEsXG59IGZyb20gJy4uL3NoYXJlZC1zY2hlbWEnO1xuXG5ATW9uaXRvcmluZ0FwcEdlbkNvbXBvbmVudCh7XG4gIGNvbnN0cmFpbnRzOiB7XG4gICAgaXNBcnJheTogJ05PJyxcbiAgICBpc051bWJlcjogJ1lFUycsXG4gIH0sXG4gIGV2ZW50czogW1xuICAgIHtcbiAgICAgIG5hbWU6ICdzdWJtaXQnLFxuICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICB9LFxuICBdLFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RhcC12YXJpYWJsZS10b2dnbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFwLXZhcmlhYmxlLXRvZ2dsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhcC12YXJpYWJsZS10b2dnbGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFwVmFyaWFibGVUb2dnbGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCd0b2dnbGUnKSB0b2dnbGUhOiBJb25Ub2dnbGU7XG4gIEBWaWV3Q2hpbGQoJ2N0eCcpIGN0eCE6IFRhcFZhbHVlRWRpdG9yQ29udGFpbmVyQ29tcG9uZW50O1xuXG4gIGVycm9yPzogRXJyb3I7XG5cbiAgQElucHV0KClcbiAgdGV4dE9uTGVmdCA9ICdPZmYnO1xuXG4gIEBJbnB1dCgpXG4gIHRleHRPblJpZ2h0ID0gJ09uJztcblxuICBASW5wdXQoKVxuICBsaW5lcyA9ICdub25lJztcblxuICBASW5wdXQoKVxuICB0b2dnbGVDb2xvciA9ICdwcmltYXJ5JztcblxuICBASW5wdXQoKVxuICB2YXJpYWJsZT86IEVkaXRhYmxlVmFsdWVEYXRhU3RyZWFtSW50ZXJmYWNlPG51bWJlciwgYW55PjtcblxuICBASW5wdXQoKVxuICBlZGl0YWJsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlT24gPSAxO1xuXG4gIEBJbnB1dCgpXG4gIHZhbHVlT2ZmID0gMDtcblxuICBASW5wdXQoKVxuICBjaGlwOiB7IG91dGxpbmU/OiBib29sZWFuOyBjb2xvcj86IHN0cmluZyB9ID0ge1xuICAgIG91dGxpbmU6IGZhbHNlLFxuICAgIGNvbG9yOiAnJyxcbiAgfTtcblxuICBjaGlwT3V0bGluZSA9IGZhbHNlO1xuXG4gIF92YWx1ZVN1Yj86IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIF9sYXN0VmFsdWVEaXNwbGF5ZWQ/OiBib29sZWFuO1xuXG4gIGlucHV0T3B0aW9ucyA9IHtcbiAgICB0eXBlOiAndG9nZ2xlJyxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWVTdWIgPSB0aGlzLmN0eD8udmFsdWVUb0Rpc3BsYXlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKHZhbHVlID09PSB0aGlzLnZhbHVlT24pIHtcbiAgICAgICAgICAgIHZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSB0aGlzLnZhbHVlT2ZmKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YWx1ZSA9ICEhdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5fbGFzdFZhbHVlRGlzcGxheWVkID0gdmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmN0eC5wZW5kaW5nU3VibWl0VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMudG9nZ2xlLmNoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZVN1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHN3aXRjaFRvZ2dsZSgpIHtcbiAgICBpZiAoIXRoaXMudG9nZ2xlLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnRvZ2dsZS5jaGVja2VkID0gIXRoaXMudG9nZ2xlLmNoZWNrZWQ7XG4gICAgfVxuICB9XG5cbiAgb25WYWx1ZUNoYW5nZShldmVudDogQ3VzdG9tRXZlbnQ8eyB2YWx1ZTogc3RyaW5nOyBjaGVja2VkOiBib29sZWFuIH0+KSB7XG4gICAgaWYgKHRoaXMuX2xhc3RWYWx1ZURpc3BsYXllZCAhPT0gZXZlbnQuZGV0YWlsLmNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuZGV0YWlsLmNoZWNrZWQgPyB0aGlzLnZhbHVlT24gOiB0aGlzLnZhbHVlT2ZmO1xuICAgICAgdGhpcy5jdHg/Lm5vdGlmeVZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjx0YXAtdmFsdWUtZWRpdG9yLWNvbnRhaW5lciAjY3R4IFt2YXJpYWJsZV09XCJ2YXJpYWJsZVwiIFtsaW5lc109XCJsaW5lc1wiPlxuICA8aW9uLWNoaXBcbiAgICBbY29sb3JdPVwiY2hpcD8uY29sb3JcIlxuICAgIFtvdXRsaW5lXT1cImNoaXA/Lm91dGxpbmVcIlxuICAgIChjbGljayk9XCJzd2l0Y2hUb2dnbGUoKVwiXG4gICAgW2Rpc2FibGVkXT1cIiFlZGl0YWJsZSB8fCAoY3R4LmxvYWRpbmdDaGFuZ2UgfCBhc3luYylcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJzcGFuVG9nZ2xlXCI+IHt7IHRleHRPbkxlZnQgfX0gPC9zcGFuPlxuICAgIDxpb24tdG9nZ2xlXG4gICAgICBbY29sb3JdPVwidG9nZ2xlQ29sb3JcIlxuICAgICAgI3RvZ2dsZVxuICAgICAgW2Rpc2FibGVkXT1cIiFlZGl0YWJsZSB8fCAoY3R4LmxvYWRpbmdDaGFuZ2UgfCBhc3luYylcIlxuICAgICAgc3R5bGU9XCJwb2ludGVyLWV2ZW50czogbm9uZVwiXG4gICAgICAoaW9uQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwvaW9uLXRvZ2dsZT5cbiAgICA8c3BhbiBjbGFzcz1cInNwYW5Ub2dnbGVcIj4ge3sgdGV4dE9uUmlnaHQgfX0gPC9zcGFuPlxuICA8L2lvbi1jaGlwPlxuPC90YXAtdmFsdWUtZWRpdG9yLWNvbnRhaW5lcj5cbiJdfQ==