flexacore-ui-dev
Version:
Universal UI Framework for CDN, React, Angular, Vue, Svelte with TypeScript support
78 lines (68 loc) • 1.84 kB
text/typescript
import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
export class FCTextareaComponent implements ControlValueAccessor {
placeholder: string = '';
disabled: boolean = false;
readonly: boolean = false;
rows: number = 3;
cols: number = 50;
size: 'sm' | 'md' | 'lg' = 'md';
valueChange = new EventEmitter<string>();
value: string = '';
private onChange = (value: string) => {};
private onTouched = () => {};
get classes() {
return [
'fc-textarea',
`fc-textarea-${this.size}`
];
}
onInput(event: Event) {
const target = event.target as HTMLTextAreaElement;
this.value = target.value;
this.onChange(this.value);
this.valueChange.emit(this.value);
}
onBlur() {
this.onTouched();
}
onFocus() {
// Focus event handling if needed
}
writeValue(value: string): void {
this.value = value || '';
}
registerOnChange(fn: any): void {
this.onChange = fn;
}
registerOnTouched(fn: any): void {
this.onTouched = fn;
}
setDisabledState(isDisabled: boolean): void {
this.disabled = isDisabled;
}
}