import { Component, Input, Output, EventEmitter, ElementRef, forwardRef, ExistingProvider, OnInit, OnChanges } from '@angular/core'; import { InputBase } from './inputBase'; import { RdLib } from '../../base/rdLib'; const provider: ExistingProvider = { provide: InputBase, useExisting: forwardRef(() => InputSwitch) } @Component({ selector: "rd-input-switch", template: `
`, providers: [provider] }) export class InputSwitch extends InputBase implements OnInit, OnChanges { constructor(private element: ElementRef) { super(); } @Input("rd-model") model: boolean; @Output("rd-modelChange") modelChange: EventEmitter = new EventEmitter(); @Output("rd-change") changeEvent: EventEmitter = new EventEmitter(); @Input("rd-disabled") disabled: boolean; @Input("rd-readOnly") readOnly: boolean; @Input("rd-onText") onText: string = RdLib.localization.translateEn("On"); @Input("rd-offText") offText: string = RdLib.localization.translateEn("Off"); ngOnInit() { this.container = this.jQuery(this.element.nativeElement).find("#dxElement"); this.container.dxSwitch({ onValueChanged: (e) => this.onChange(e.value), value: this.model == true ? true : false, disabled: this.disabled, onText: this.onText, offText: this.offText, readOnly: this.readOnly }); this.dxElement = this.container.dxSwitch('instance'); this.onChange(this.dxElement.option('value')); } ngOnChanges(changes) { if (!this.dxElement) return; if (changes.model) this.dxElement.option('value', this.model); if (changes.disabled) this.dxElement.option('disabled', this.disabled); if (changes.readOnly) this.dxElement.option('readOnly', this.readOnly); } }