import { ValidatorFn } from '@angular/forms'; import { FormControlErrorStateAgent } from '../form-control-group/index'; import { Hint, Conditional } from './types'; import { MaterialMode } from '../material-design-inputs/index'; import { DatepickerPick } from '../datepicker/index'; export declare type VCLFormFieldSchemaType = 'input' | 'number' | 'password' | 'hidden' | 'textarea' | 'select' | 'select-list' | 'switch' | 'slider' | 'checkbox' | 'rating' | 'radio-group' | 'button-group' | 'token' | 'datepicker' | 'file-input' | 'button' | 'submit' | 'buttons' | 'array' | 'object' | 'form'; export interface VCLFormFieldSchema { type: string; id?: string; visible?: boolean | Conditional; } export interface VCLFormFieldControlSchema extends VCLFormFieldSchema { name: string; label?: string; hints?: (Hint | Conditional)[]; required?: boolean | Conditional; disabled?: boolean | Conditional; validators?: ValidatorFn[]; defaultValue?: any; errorStateAgent?: FormControlErrorStateAgent; params?: any | Conditional; material?: MaterialMode; } export interface VCLFormFieldSchemaInputParams { placeholder?: string; inputType?: string; } export interface VCLFormFieldSchemaInput extends VCLFormFieldControlSchema { type: 'input'; params?: VCLFormFieldSchemaInputParams | Conditional; } export interface VCLFormFieldSchemaPasswordInputParams { placeholder?: string; } export interface VCLFormFieldSchemaPasswordInput extends VCLFormFieldControlSchema { type: 'password-input'; params?: VCLFormFieldSchemaPasswordInputParams | Conditional; } export interface VCLFormFieldSchemaNumber extends VCLFormFieldControlSchema { type: 'number'; params?: VCLFormFieldSchemaInputParams | Conditional; } export interface VCLFormFieldSchemaPassword extends VCLFormFieldControlSchema { type: 'password'; params?: VCLFormFieldSchemaInputParams | Conditional; } export interface VCLFormFieldSchemaHidden extends VCLFormFieldControlSchema { type: 'hidden'; } export interface VCLFormFieldSchemaTextareaParams { placeholder?: string; minRows?: number; maxRows?: number; } export interface VCLFormFieldSchemaTextarea extends VCLFormFieldControlSchema { type: 'textarea'; params?: VCLFormFieldSchemaTextareaParams | Conditional; } export interface VCLFormFieldSchemaOptions { label: string; sublabel?: string; value: any; } export interface VCLFormFieldSchemaSelectParams { selectionMode?: 'multiple' | 'single'; options: VCLFormFieldSchemaOptions[]; placeholder?: string; } export interface VCLFormFieldSchemaSelect extends VCLFormFieldControlSchema { type: 'select'; params?: VCLFormFieldSchemaSelectParams | Conditional; } export interface VCLFormFieldSchemaSelectList extends VCLFormFieldControlSchema { type: 'select-list'; params?: VCLFormFieldSchemaSelectParams | Conditional; } export interface VCLFormFieldSchemaSwitchParams { onLabel?: string; offLabel?: string; } export interface VCLFormFieldSchemaSwitch extends VCLFormFieldControlSchema { params?: VCLFormFieldSchemaSwitchParams | Conditional; type: 'switch'; } export interface VCLFormFieldSchemaSliderParams { scale?: number | string[]; lock?: boolean; min?: number; max?: number; } export interface VCLFormFieldSchemaSlider extends VCLFormFieldControlSchema { type: 'slider'; params?: VCLFormFieldSchemaSliderParams | Conditional; } export interface VCLFormFieldSchemaCheckboxParams { iconPosition?: 'left' | 'right'; } export interface VCLFormFieldSchemaCheckbox extends VCLFormFieldControlSchema { type: 'checkbox'; params?: VCLFormFieldSchemaCheckboxParams | Conditional; } export interface VCLFormFieldSchemaRatingParams { layout?: 'horizontal' | 'vertical'; items?: string[]; ratingFullIcon?: string; ratingHalfIcon?: string; ratingEmptyIcon?: string; ratingItemCount?: number; valueLabel?: (ratingLabel?: string) => string; } export interface VCLFormFieldSchemaRating extends VCLFormFieldControlSchema { type: 'rating'; params?: VCLFormFieldSchemaRatingParams | Conditional; } export interface VCLFormFieldSchemaRadioGroupParams { layout?: 'horizontal' | 'vertical'; iconPosition?: 'left' | 'right'; options: VCLFormFieldSchemaOptions[]; } export interface VCLFormFieldSchemaRadioGroup extends VCLFormFieldControlSchema { type: 'radio-group'; params?: VCLFormFieldSchemaRadioGroupParams | Conditional; } export interface VCLFormFieldSchemaButtonGroupParams { label?: string; selectionMode?: 'multiple' | 'single'; options: VCLFormFieldSchemaOptions[]; } export interface VCLFormFieldSchemaButtonGroup extends VCLFormFieldControlSchema { type: 'button-group'; params?: VCLFormFieldSchemaButtonGroupParams | Conditional; } export interface VCLFormFieldSchemaToken extends VCLFormFieldControlSchema { params?: {} | Conditional<{}>; type: 'token'; } export interface VCLFormFieldSchemaDatePickerParams { pick?: DatepickerPick; placeholder?: string; } export interface VCLFormFieldSchemaDatePicker extends VCLFormFieldControlSchema { type: 'datepicker'; params?: VCLFormFieldSchemaDatePickerParams | Conditional; } export interface VCLFormFieldSchemaFileInputParams { label?: string; multiple: boolean; placeholder?: string; } export interface VCLFormFieldSchemaFileInput extends VCLFormFieldControlSchema { type: 'file-input'; params?: VCLFormFieldSchemaFileInputParams | Conditional; } export interface VCLFormFieldSchemaButton extends VCLFormFieldSchema { type: 'button'; disabled?: boolean | Conditional; label?: string; prepIcon?: string; appIcon?: string; class?: string; action?: string; } export interface VCLFormFieldSchemaSubmit extends VCLFormFieldSchema { type: 'submit'; disabled?: boolean | Conditional; label?: string; prepIcon?: string; appIcon?: string; class?: string; action?: string; } export interface VCLFormFieldSchemaButtons extends VCLFormFieldSchema { type: 'buttons'; buttons: (VCLFormFieldSchemaButton | VCLFormFieldSchemaSubmit)[]; } export interface VCLFormFieldSchemaArray extends VCLFormFieldControlSchema { type: 'array'; noFieldsLabel?: string; fieldLabel?: string | ((index: number) => string); initialFields?: number; field: VCLFormFieldSchemas; } export interface VCLFormFieldSchemaObject extends VCLFormFieldControlSchema { type: 'object'; fields: VCLFormFieldSchemas[]; validators?: ValidatorFn[]; layout?: 'fieldset'; } export interface VCLFormFieldSchemaRoot { type: 'form'; fields: VCLFormFieldSchemas[]; material?: MaterialMode; hints?: (Hint | Conditional)[]; disabled?: boolean | Conditional; validators?: ValidatorFn[]; errorStateAgent?: FormControlErrorStateAgent; } export declare type VCLFormFieldSchemas = VCLFormFieldSchemaInput | VCLFormFieldSchemaPasswordInput | VCLFormFieldSchemaNumber | VCLFormFieldSchemaPassword | VCLFormFieldSchemaTextarea | VCLFormFieldSchemaHidden | VCLFormFieldSchemaFileInput | VCLFormFieldSchemaObject | VCLFormFieldSchemaCheckbox | VCLFormFieldSchemaSelect | VCLFormFieldSchemaSelectList | VCLFormFieldSchemaButtonGroup | VCLFormFieldSchemaSwitch | VCLFormFieldSchemaSlider | VCLFormFieldSchemaRating | VCLFormFieldSchemaRadioGroup | VCLFormFieldSchemaToken | VCLFormFieldSchemaDatePicker | VCLFormFieldSchemaButton | VCLFormFieldSchemaSubmit | VCLFormFieldSchemaButtons | VCLFormFieldSchemaArray | TCustomFields;