@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
111 lines • 15 kB
JavaScript
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==