import { DaffFormFieldControl } from '@daffodil/design/form-field'
The class that a form control must implement in order to be used with the DaffFormFieldComponent.
You may ask: "Why are you implementing an abstract class, not extending it?" We do this so that the Angular DI container can match the class token. A typical interface would be "more accurate" here, but since interfaces don't exist in javascript, they get thrown out by the typescript compiler and cannot be used for the necessary dependency injection.
abstract class DaffFormFieldControl<<T>> {
abstract readonly controlType: any
readonly supportsAutoLabelling: boolean = true
abstract readonly focused: boolean
abstract readonly required: boolean
abstract readonly disabled: boolean
readonly id: string
get raised(): boolean
abstract readonly value: T
ngControl: NgControl | null
get state(): DaffFormFieldState
_stateChanges: BehaviorSubject = new BehaviorSubject({
focused: false,
filled: false,
disabled: false,
error: false,
valid: true,
})
stateChanges: Observable<DaffFormFieldState>
abstract focus(event?: Event): void
emitState(deferred: boolean = false): void
}