import { Validators } from '@angular/forms'; import { AbstractModel, BeverageLookupService, FilterData, SortData } from '@ngvip/service'; import { BehaviorSubject, Observable, Subject } from 'rxjs'; export interface Validator { name: string; formControlName?: string; validator: Validators; message: string; } export interface ListSet { id: string | number; text: string; suffix?: string; suffixTooltip?: string; } export interface DependentFields { fieldNames: string[]; disableDependents: (currentValue: any) => boolean; disableTracker?: Subject; } export interface FieldGroupConfig { title: string; description?: string; expanded?: boolean; } export interface FieldConfig { controlName: string; label: string; controlType: string; placeholder?: string; hint?: string; validators?: Validator[]; warningValidators?: Validator[]; group?: string; styles?: { [key: string]: string; }; min?: string | number; max?: string | number; options?: ListSet[] | BehaviorSubject; suffix?: string; suffixTooltip?: string; disabled?: Observable; hidden?: Observable; initialValue?: string | number; multiple?: boolean; acceptedFileTypes?: string[]; dependentFields?: DependentFields; comboList?: object[] | Observable; required?: boolean; autoFocus?: boolean; inputOnly?: boolean; initializeWithErrors?: boolean; submitField?: string; localLookupFields?: string[]; triggerDisplay?: (value?: any) => string; requireSelection?: boolean; lookupStyle?: (data: AbstractModel) => { [key: string]: string; }; lookupValue?: string; lookupSecondaryValue?: string; lookupSmallValue?: string; lookupSmallText?: string; lookupService?: BeverageLookupService; lookupDefaultFilter?: FilterData[]; lookupDefaultSort?: SortData[]; }