ng2-ui-kit
Version:
Angular2 UI Kit
67 lines (54 loc) • 1.56 kB
text/typescript
import { Component, ElementRef, forwardRef, Input } from '@angular/core';
import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';
export const INPUT_CONTROL_VALUE_ACCESSOR: any = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => InputComponent),
multi: true
};
({
selector: 'ui-kit-input',
templateUrl: './input.component.html',
styleUrls: ['../../../styles/css/input.css'],
providers: [INPUT_CONTROL_VALUE_ACCESSOR]
})
export class InputComponent {
() required: boolean = false;
() placeholder: string = '';
() type: string = '';
() prefix: string = '';
() label: string = '';
() inputType: string = 'text';
private el: Element;
private active: boolean = false;
private classList: DOMTokenList;
private internalValue: any;
private onTouchedCallback: () => void = () => { };
private onChangeCallback: (_: any) => void = () => { };
get value(): any {
return this.internalValue;
};
set value(value: any) {
this.internalValue = value;
this.onChangeCallback(value);
}
constructor(elementRef: ElementRef) {
this.el = elementRef.nativeElement;
}
modelChange(data: any) {
this.classList = this.el.classList;
this.value = data;
}
writeValue(value: any) {
this.internalValue = value;
}
onBlur() {
this.active = false;
this.onTouchedCallback();
}
registerOnChange(fn: any) {
this.onChangeCallback = fn;
}
registerOnTouched(fn: any) {
this.onTouchedCallback = fn;
}
}