import { AsyncValidatorFn, ValidatorFn } from '@angular/forms'; import { TemplateRef } from '@angular/core'; export interface JdDyFormSubmitOrRest { color?: 'primary' | 'warn' | '' | 'accent'; text?: any; isShow?: boolean; } export interface JdDyFormAllowInputByChange { isShowButton?: boolean; isGroup?: boolean; controlBreakpointOptions?: ColumnObj; submitButton?: JdDyFormSubmitOrRest; restButton?: JdDyFormSubmitOrRest; isInline?: boolean; isByDepWidthDoResponsive?: boolean; size?: 'default' | 'small' | 'large'; isVertical?: boolean; column?: number; loading?: boolean; loadingTip?: string; } export interface JdDyInfoConfig { title?: string; iconColor?: 'warn' | 'error' | 'primary'; bgColor?: 'warn' | 'error' | 'default'; placement?: 'top' | 'left' | 'right' | 'bottom' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'leftTop' | 'leftBottom' | 'rightTop' | 'rightBottom' | 'topCenter'; } export interface JdDySuffixAction { text?: string | TemplateRef; column?: { control?: Breakpoint; action?: Breakpoint; }; } export interface JdDyInputConfig { addOnAfter?: string | TemplateRef; addOnBefore?: string | TemplateRef; prefixIcon?: string | TemplateRef; suffixIcon?: string | TemplateRef; type?: 'text' | 'password' | 'textarea'; } export interface JdDyContent { label?: string | number | boolean; value?: string | number | boolean; disable?: boolean; preMark?: boolean; } export interface JdDyFormOptionColumn { sm?: number; xs?: number; md?: number; lg?: number; xl?: number; xxl?: number; label?: { sm?: number; xs?: number; md?: number; lg?: number; xl?: number; xxl?: number; }; value?: { sm?: number; xs?: number; md?: number; lg?: number; xl?: number; xxl?: number; }; } export interface Breakpoint { sm?: number; xs?: number; md?: number; lg?: number; xl?: number; xxl?: number; } export interface ColumnObj { label?: Breakpoint; control?: Breakpoint; } export interface JdDySelectConfig { type?: 'loadSelect' | 'default' | 'searchSelect'; mode?: 'multiple' | 'default'; isSearch?: boolean; content?: JdDyContent[]; col?: number; overlayMinWidth?: number; serverSearch?: boolean; labelName?: string | boolean; displayLabel?: 'jdLabel' | 'jdValue'; } export interface JdDyRadioConfig { content?: JdDyContent[]; isVertical?: boolean; } export interface JdDyCheckConfig { content?: JdDyContent[]; isVertical?: boolean; } export interface JdDyPickerConfig { dataFormat?: string; timeFormat?: string; showTime?: boolean; date?: {}; range?: { placeHolder?: string[]; }; } export interface JdTableSelect { data?: T[]; minWidth?: number; isSearch?: boolean; customDisplayLabel?: (data: T) => string; customValue?: (data: T) => string; selectConfig: { label?: string; value?: string; width?: number; }[]; } export interface DyFormDefaultConfig { infoConfig?: JdDyInfoConfig; extraConfig?: JdDyExtraConfig; showType?: JdDyShowType; inputConfig?: JdDyInputConfig; suffixAction?: JdDySuffixAction; selectConfig?: JdDySelectConfig; pickerConfig?: JdDyPickerConfig; radioConfig?: JdDyRadioConfig; tableSelectConfig?: JdTableSelect; checkConfig?: JdDyCheckConfig; } export interface JdDyExtraConfig { color?: 'warn' | 'error' | 'primary' | 'default'; text?: string; } export interface JdDyShowType { errorIsShowInToolTip?: boolean; isShowExtraInfo?: boolean; isShowInfo?: boolean; } export interface JdDyFormOptionItem { label?: string; defaultValue?: any; type?: 'input' | 'select' | 'radio' | 'timePicker' | 'datePicker' | 'rangePicker' | 'tableSelect' | 'custom' | 'checkBox' | 'group'; inputWidth?: string | number; disabled?: boolean; placeHolder?: string; isMust?: boolean; selectConfig?: JdDySelectConfig; radioConfig?: JdDyRadioConfig; pickerConfig?: JdDyPickerConfig; inputConfig?: JdDyInputConfig; tableSelectConfig?: JdTableSelect; checkConfig?: JdDyCheckConfig; name: string; hide?: boolean; labelColor?: string; infoConfig?: JdDyInfoConfig; inputType?: 'text'; validators?: ValidatorFn[]; asyncValidators?: AsyncValidatorFn[]; isCustomizeAfter?: boolean; column?: JdDyFormOptionColumn; errorIsShowInToolTip?: boolean; extraConfig?: JdDyExtraConfig; showType?: JdDyShowType; suffixAction?: JdDySuffixAction; formGroup?: JdDyFormOptionItem[]; invalid?: boolean; validOfIf?: (value: any) => boolean; customLabel?: boolean; groupCol?: number; }