UNPKG

ng2-ui-kit

Version:
67 lines (54 loc) 1.56 kB
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 }; @Component({ selector: 'ui-kit-input', templateUrl: './input.component.html', styleUrls: ['../../../styles/css/input.css'], providers: [INPUT_CONTROL_VALUE_ACCESSOR] }) export class InputComponent { @Input() required: boolean = false; @Input() placeholder: string = ''; @Input() type: string = ''; @Input() prefix: string = ''; @Input() label: string = ''; @Input() 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; } }