import { AsyncValidatorFn, FormControl, FormControlOptions, FormControlState, ValidatorFn } from "@angular/forms"; import { AutocompleteComponent, CheckboxComponent, ColorPickerComponent, DateTimePickerComponent, DropdownComponent, InputNumberComponent, InputTextareaComponent, InputTextComponent, ListboxComponent, MediaFiles, MediaManagerComponent, MediaManagerConfiguration, RadioComponent, SwitchComponent, TagsComponent, TreeComponent } from "../../../features"; import { TreeLike } from "../../../interfaces"; import { CfFormErrors } from "./formerrors.class"; export declare enum CfFormControlType { GENERAL = "GENERAL", AUTOCOMPLETE = "AUTOCOMPLETE", CHECKBOX = "CHECKBOX", COLORPICKER = "COLORPICKER", DATETIMEPICKER = "DATETIMEPICKER", DROPDOWN = "DROPDOWN", INPUTTEXT = "INPUTTEXT", INPUTTEXTAREA = "INPUTTEXTAREA", INPUTNUMBER = "INPUTNUMBER", LISTBOX = "LISTBOX", MEDIAMANAGER = "MEDIAMANAGER", SWITCH = "SWITCH", RADIO = "RADIO", TAGS = "TAGS", TREE = "TREE" } export interface CfFormControlOptions { label?: string; tags?: string[]; permanentTags?: string[]; } export interface CfFormControlOptionsAutocomplete extends CfFormControlOptions { labelId?: string; valueId?: string; selectMode?: 'label' | 'value' | 'object'; } export interface CfFormControlOptionsDateTimePicker extends CfFormControlOptions { mode?: 'date' | 'time' | 'datetime'; local?: boolean; } export interface CfFormControlOptionsDrodown extends CfFormControlOptions { values?: any[]; labelId?: string; valueId?: string; } export interface CfFormControlOptionsCheckbox extends CfFormControlOptions { triState?: boolean; } export interface CfFormControlOptionsListbox extends CfFormControlOptions { labelId?: string; valueId?: string; multiple?: boolean; values?: any[]; checkbox?: boolean; } export interface CfFormControlOptionsMediaManager extends CfFormControlOptions { configuration?: MediaManagerConfiguration; modalMode?: boolean; } export interface CfFormControlOptionsRadio extends CfFormControlOptions { group?: string; } export interface CfFormControlOptionsTags extends CfFormControlOptions { values?: string[]; } export interface CfFormControlOptionsTree extends CfFormControlOptions { values?: TreeLike; labelId?: string; valueId?: string; } export interface CfFormControlTypeComponentMap { [CfFormControlType.GENERAL]: null; [CfFormControlType.AUTOCOMPLETE]: AutocompleteComponent; [CfFormControlType.CHECKBOX]: CheckboxComponent; [CfFormControlType.COLORPICKER]: ColorPickerComponent; [CfFormControlType.DATETIMEPICKER]: DateTimePickerComponent; [CfFormControlType.DROPDOWN]: DropdownComponent; [CfFormControlType.INPUTTEXT]: InputTextComponent; [CfFormControlType.INPUTTEXTAREA]: InputTextareaComponent; [CfFormControlType.INPUTNUMBER]: InputNumberComponent; [CfFormControlType.LISTBOX]: ListboxComponent; [CfFormControlType.MEDIAMANAGER]: MediaManagerComponent; [CfFormControlType.RADIO]: RadioComponent; [CfFormControlType.SWITCH]: SwitchComponent; [CfFormControlType.TAGS]: TagsComponent; [CfFormControlType.TREE]: TreeComponent; } export interface CfFormControlTypeValueMap { [CfFormControlType.GENERAL]: any; [CfFormControlType.AUTOCOMPLETE]: string; [CfFormControlType.CHECKBOX]: boolean; [CfFormControlType.COLORPICKER]: string; [CfFormControlType.DATETIMEPICKER]: string | Date | null; [CfFormControlType.DROPDOWN]: string | null; [CfFormControlType.INPUTTEXT]: string; [CfFormControlType.INPUTTEXTAREA]: string; [CfFormControlType.INPUTNUMBER]: number | null; [CfFormControlType.LISTBOX]: any[]; [CfFormControlType.MEDIAMANAGER]: MediaFiles; [CfFormControlType.RADIO]: any; [CfFormControlType.SWITCH]: boolean; [CfFormControlType.TAGS]: string[]; [CfFormControlType.TREE]: any[]; } export interface CfFormControlTypeOptionsMap { [CfFormControlType.GENERAL]: CfFormControlOptions; [CfFormControlType.AUTOCOMPLETE]: CfFormControlOptionsAutocomplete; [CfFormControlType.CHECKBOX]: CfFormControlOptionsCheckbox; [CfFormControlType.COLORPICKER]: CfFormControlOptions; [CfFormControlType.DATETIMEPICKER]: CfFormControlOptionsDateTimePicker; [CfFormControlType.DROPDOWN]: CfFormControlOptionsDrodown; [CfFormControlType.INPUTTEXT]: CfFormControlOptions; [CfFormControlType.INPUTTEXTAREA]: CfFormControlOptions; [CfFormControlType.INPUTNUMBER]: CfFormControlOptions; [CfFormControlType.LISTBOX]: CfFormControlOptionsListbox; [CfFormControlType.MEDIAMANAGER]: CfFormControlOptionsMediaManager; [CfFormControlType.RADIO]: CfFormControlOptionsRadio; [CfFormControlType.SWITCH]: CfFormControlOptions; [CfFormControlType.TAGS]: CfFormControlOptionsTags; [CfFormControlType.TREE]: CfFormControlOptionsTree; } export interface CfFormControl extends FormControl { type: TType | null; tags: string[]; component: CfFormControlTypeComponentMap[TType] | null; cfOptions: CfFormControlTypeOptionsMap[TType]; setCfOptions(cfOptions: Partial): CfFormControl; applyCfOptions(): void; setComponent(component: CfFormControlTypeComponentMap[TType]): void; clearComponent(): void; collectErrors(errors?: CfFormErrors, labelPath?: string[]): CfFormErrors; setType(type: TType): void; } export type CfFormControlInputNumber = CfFormControl; interface ɵCfFormControlCtor { new (): CfFormControl; new (value: FormControlState | T, opts: FormControlOptions & { nonNullable: true; }): CfFormControl; new (value: FormControlState | T, validatorOrOpts?: ValidatorFn | ValidatorFn[] | FormControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null): CfFormControl; prototype: CfFormControl; } export declare let cfFormControlPermanentTagsOptions: { tags: string[] | null; }; export declare const CfFormControl: ɵCfFormControlCtor; export {};