import { Directive } from '@angular/core';
import {
  ControlValueAccessor,
  NG_VALUE_ACCESSOR,
} from '@angular/forms';

@Directive({
  // eslint-disable-next-line @angular-eslint/directive-selector
  selector: 'input[type=file]',
  // eslint-disable-next-line @angular-eslint/no-host-metadata-property
  host: {
    '(change)': 'onChange($event.target.files)',
    '(blur)': 'onTouched()',
  },
  providers: [
    { provide: NG_VALUE_ACCESSOR, useExisting: FileValueAccessorDirective, multi: true },
  ],
  standalone: true,
})
/**
 * Value accessor directive for inputs of type 'file'
 */
export class FileValueAccessorDirective implements ControlValueAccessor {
  value: any;
  onChange = (_) => { /* empty */ };
  onTouched = () => { /* empty */};

  writeValue(value) { /* empty */}
  registerOnChange(fn: any) { this.onChange = fn; }
  registerOnTouched(fn: any) { this.onTouched = fn; }
}