mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
65 lines (64 loc) • 2.91 kB
TypeScript
import { TextFieldProps } from './TextField';
import { MoneyFieldProps } from './MoneyField';
import { ImageFieldProps } from './ImageField';
import { DateFieldProps } from './DateField';
import { IndexFieldProps } from './IndexField';
import { PercentFieldProps } from './PercentField';
import { ProgressFieldProps } from './ProgressField';
import { ColorFieldProps } from './ColorField';
import { EnumFieldProps } from './EnumField';
type ExtendProps<T extends {
value?: any;
}> = T & {
/**
* 自定义处理值。
*
* @param value 当前值。
* @returns 处理后的值。
*/
formatValue?: (value: any) => T['value'];
};
type BizFieldTextProps = {
valueType: 'text';
} & ExtendProps<TextFieldProps>;
type BizFieldMoneyProps = {
valueType: 'money';
} & ExtendProps<MoneyFieldProps>;
type BizFieldImageProps = {
valueType: 'image';
} & ExtendProps<ImageFieldProps>;
type BizFieldDateProps = {
valueType: DateFieldProps['type'];
} & ExtendProps<Omit<DateFieldProps, 'type'>>;
type BizFieldIndexProps = {
valueType: 'index' | 'indexBorder';
} & ExtendProps<Omit<IndexFieldProps, 'bordered'>>;
type BizFieldProgressProps = {
valueType: 'progress';
} & ExtendProps<ProgressFieldProps>;
type BizFieldPercentProps = {
valueType: 'percent';
} & ExtendProps<PercentFieldProps>;
type BizFieldEnumProps<T = any> = {
valueType: 'enum' | 'enumTag';
} & ExtendProps<Omit<EnumFieldProps<T>, 'type'>>;
type BizFieldColorProps = {
valueType: 'color';
} & ExtendProps<ColorFieldProps>;
export type BizFieldProps<T = any> = BizFieldTextProps | BizFieldMoneyProps | BizFieldImageProps | BizFieldDateProps | BizFieldIndexProps | BizFieldProgressProps | BizFieldPercentProps | BizFieldEnumProps<T> | BizFieldColorProps | {
value: T;
valueType?: undefined;
formatValue?: (value: any) => T;
};
export type BizFieldValueType = NonNullable<BizFieldProps['valueType']>;
type ExtendFieldProps<FieldProps extends BizFieldProps, DataType = any> = Pick<FieldProps, 'valueType'> & {
field?: Partial<FieldProps> | ((value: any, record: DataType, index: number) => Partial<FieldProps>);
};
export type WithFieldProps<DataType = any> = ExtendFieldProps<BizFieldTextProps, DataType> | ExtendFieldProps<BizFieldMoneyProps, DataType> | ExtendFieldProps<BizFieldImageProps, DataType> | ExtendFieldProps<BizFieldDateProps, DataType> | ExtendFieldProps<BizFieldIndexProps, DataType> | ExtendFieldProps<BizFieldProgressProps, DataType> | ExtendFieldProps<BizFieldPercentProps, DataType> | ExtendFieldProps<BizFieldColorProps, DataType> | (ExtendFieldProps<BizFieldEnumProps<DataType>, DataType> & {
valueEnum: BizFieldEnumProps<DataType>['valueEnum'];
}) | {
valueType?: undefined;
valueEnum?: BizFieldEnumProps<DataType>['valueEnum'];
field?: BizFieldProps | ((value: any, record: DataType, index: number) => BizFieldProps);
};
export {};