import { Component, Input, Output, EventEmitter, ElementRef, forwardRef, ExistingProvider, OnInit, OnChanges } from '@angular/core';
import { InputBase } from './inputBase';
const provider: ExistingProvider = { provide: InputBase, useExisting: forwardRef(() => InputTextArea) }
export interface IElementAttr {
id: string;
class: string;
}
@Component({
selector: "rd-input-text-area",
template: `
`,
providers: [provider]
})
export class InputTextArea extends InputBase implements OnInit, OnChanges {
constructor(private element: ElementRef) { super(); }
@Input("rd-model") model: string;
@Output("rd-modelChange") modelChange: EventEmitter = new EventEmitter();
@Output("rd-change") changeEvent: EventEmitter = new EventEmitter();
@Output("rd-keyUp") onKeyUp: EventEmitter = new EventEmitter();
@Input("rd-warning-text") warningText: string;
@Input("rd-default") default: string;
@Input("rd-disabled") disabled: boolean;
@Input("rd-readOnly") readOnly: boolean;
@Input("rd-required") required: boolean;
@Input("rd-height") height: number | string = "70";
@Input("rd-elementAttr") elementAttr: Object = {};
ngOnInit() {
this.checkDefault();
this.container = this.jQuery(this.element.nativeElement).find("#dxElement");
this.container.dxTextArea({
onChange: (e) => {
if (this.dxElement.hasOwnProperty("_value")) this.onChange(this.dxElement._value);
else this.onChange(e.component._options.value);
},
onKeyUp: (e) => {
this.onKeyUp.emit(this.dxElement.option('text'));
},
value: this.model,
readOnly: this.readOnly,
elementAttr: this.elementAttr
});
this.dxElement = this.container.dxTextArea('instance');
if (this.dxElement.hasOwnProperty("_value")) this.model = this.dxElement._value;
//this.updateValidator();
}
ngOnChanges(changes) {
this.checkDevExpressChange();
if (!this.dxElement) return;
if (changes.required) this.updateValidator();
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);
}
private checkDevExpressChange() {
setTimeout(() => {
if (this.dxElement.hasOwnProperty("_value") && this.model != this.dxElement._value) {
this.onChange(this.dxElement._value);
}
});
};
}