@uozi-admin/curd
Version:
Easy to implement curd.
69 lines (68 loc) • 3.07 kB
TypeScript
import { ColProps, FormItemProps } from 'ant-design-vue';
import { DefineComponent, DefineSetupFnComponent, VNodeChild } from 'vue';
import { JSX } from 'vue/jsx-runtime';
import { AutoCompleteConfig, CascaderConfig, CheckboxGroupConfig, DatePickerConfig, InputConfig, InputNumberConfig, MonthPickerConfig, PasswordConfig, RadioGroupConfig, RangePickerConfig, RateConfig, SelectConfig, SelectorConfig, SliderConfig, SwitchConfig, TextareaConfig, TimePickerConfig, UploadConfig, WeekPickerConfig } from './formItem';
import { StdTableColumn } from './index';
export type FormItemType = 'input' | 'password' | 'inputNumber' | 'select' | 'autoComplete' | 'selector' | 'date' | 'datetime' | 'year' | 'month' | 'week' | 'time' | 'textarea' | 'radioGroup' | 'checkboxGroup' | 'switch' | 'rate' | 'slider' | 'upload' | 'cascader' | 'transfer' | 'dateRange' | 'datetimeRange' | 'yearRange' | 'monthRange' | 'weekRange' | 'timeRange' | ((context: {
formData: any;
column: StdTableColumn;
config: Record<any, any>;
mode: 'edit' | 'add';
}) => VNodeChild) | JSX.Element | VNodeChild | DefineComponent<any, any, any> | DefineSetupFnComponent<any, any, any>;
export type StdFormItemConfig = Omit<FormItemProps, 'required'> & {
name?: string | string[];
label?: string | (() => string);
hiddenLabelInEdit?: boolean;
hiddenLabelInSearch?: boolean;
hiddenLabelInDetail?: boolean;
required?: boolean | ((context: {
formData: Record<string, any>;
}) => boolean);
};
export interface StdFormConfig extends Record<any, any> {
type: FormItemType;
defaultValue?: any;
valueKey?: string;
col?: ColProps;
showInForm?: boolean | ((context: {
formData: Record<string, any>;
}) => boolean);
disabled?: boolean | ((context: {
formData: Record<string, any>;
}) => boolean);
required?: boolean | ((context: {
formData: Record<string, any>;
}) => boolean);
rules?: FormItemProps['rules'];
password?: PasswordConfig;
input?: InputConfig;
inputNumber?: InputNumberConfig;
textarea?: TextareaConfig;
select?: SelectConfig;
autoComplete?: AutoCompleteConfig;
selector?: SelectorConfig;
cascader?: CascaderConfig;
date?: DatePickerConfig;
datetime?: DatePickerConfig;
year?: DatePickerConfig;
week?: WeekPickerConfig;
month?: MonthPickerConfig;
time?: TimePickerConfig;
dateRange?: RangePickerConfig;
datetimeRange?: RangePickerConfig;
yearRange?: RangePickerConfig;
monthRange?: RangePickerConfig;
weekRange?: RangePickerConfig;
timeRange?: RangePickerConfig;
radioGroup?: RadioGroupConfig;
checkboxGroup?: CheckboxGroupConfig;
rate?: RateConfig;
slider?: SliderConfig;
switch?: SwitchConfig;
transfer?: TimePickerConfig;
upload?: UploadConfig;
customComponent?: Record<string | number | symbol, any>;
dependencies?: string[];
onChange?: (value: any, formData: Record<string, any>, dependencies: Record<string, any>) => void;
formItem?: StdFormItemConfig;
}