UNPKG

@flatbiz/antd

Version:
164 lines (161 loc) 6.1 kB
import { TAny, TPlainObject } from '@flatbiz/utils'; import { DatePicker, FormItemProps, GetProps } from 'antd'; import { CSSProperties, ReactElement, ReactNode } from 'react'; export type TDayjsDateType = "YYYY-MM-DD HH:mm:ss" | "YYYY-MM-DD HH:mm" | "YYYY-MM-DD HH" | "YYYY-MM-DD" | (string & {}); export type RangePickerDateProps = GetProps<typeof DatePicker.RangePicker>; export type DateRangePickerWrapperProps = Omit<RangePickerDateProps, "value" | "onChange" | "onCalendarChange" | "format"> & { value?: [ string, string ]; onChange?: (value?: [ string, string ]) => void; /** * 1. minDate、maxDate 与 format格式相同;默认:YYYY-MM-DD * 2. maxDays 最大可选的天数 */ disabledDateConfig?: { minDate?: TDayjsDateType; maxDate?: TDayjsDateType; maxDays?: number; /** 禁用 小时 刻度列表,与日期无关 */ disabledHourList?: number[]; /** 禁用 分钟 刻度列表,与日期无关 */ disabledMinuteList?: number[]; /** 禁用 秒钟 刻度列表,与日期无关 */ disabledSecondList?: number[]; }; format?: TDayjsDateType; /** value 输出适配 */ outputNormalize?: (value: [ string, string ]) => TAny; /** value 输入适配 */ inputNormalize?: (value?: TAny) => [ string, string ] | undefined; }; export type TFormItemLayoutPreClassNameProps = { /** * label宽度,Form内部所有FormItem label都生效 * ``` * 1. 可设置数值 * 2. 可设置`auto`自适应 * ``` */ labelWidth?: "auto" | "70" | "80" | "90" | "100" | "110" | "120" | "130" | "140" | "150" | "160" | "170" | "180" | "190" | "200"; /** labelItem 竖直布局 */ labelItemVertical?: boolean; /** label 对齐方式 */ labelAlign?: "left" | "right"; /** * className 中可能会包含 preDefinedClassName.formItem.xx,优先级大于 labelWidth、labelItemVertical、labelAlign */ className?: string; }; export type FormItemWrapperProps = Omit<FormItemProps, "hidden" | "children" | "noStyle"> & TFormItemLayoutPreClassNameProps & { wrapper?: (children: ReactNode) => ReactElement; /** 设置wrapper后,before、after失效 */ before?: ReactNode; /** 设置wrapper后,before、after失效 */ after?: ReactNode; /** 设置 before、after 属性的包装结构style */ beforeAfterStyle?: CSSProperties; /** value 序列化处理 */ inputNormalize?: (value?: TAny) => TAny; /** * onChange 参数序列化处理 * 如果设置 normalize 属性,outputNormalize将失效 */ outputNormalize?: (value?: TAny) => TAny; /** * 隐藏 Form.Item,同时清除 Form.Item 值 * ``` * 1.与 dependencies 属性配合使用,可实现当前FormItemWrapper的显示隐藏 * 2.提交不校验rules * ``` */ isClear?: boolean | ((formValues: TPlainObject) => boolean); /** * 隐藏 Form.Item,不会清除 Form.Item 值 * ``` * 1.与 dependencies 属性配合使用,可实现当前FormItemWrapper的显示隐藏 * 2.提交会校验rules * ``` */ hidden?: boolean | ((formValues: TPlainObject) => boolean); /** * 栅格占位格数,最大值:24 * ``` * 1. 当前FormItemWrapper处在 EasyForm 直接子节点中有效,即FormItemWrapper在EasyForm栅格中的占位格数; * 2. 父节点使用属性值,当前节点不使用属性值 * ``` */ span?: number; /** 不支持函数式写法,如果需要使用dependencies获取表单值,可使用FormItemWrapperDependencies 组件 */ children?: ReactNode; /** * ``` * 1. 设置noStyle后,可能会导致 FromItemWrapper 在 EasyFrom 内部渲染网格布局时出现异常 * 2. 在FormItemWrapper中使用 dependencies 逻辑不需要设置 noStyle * ``` */ noStyle?: boolean; }; export type FormItemNamePath = string | number | Array<string | number>; export type DateRangePickerWrapperFormItemProps = Omit<FormItemWrapperProps, "name"> & { /** * 开始的时间name */ startName: FormItemNamePath; /** * 结束的时间name */ endName: FormItemNamePath; /** * 如果 DateRangePickerWrapperFormItem 在Form.List场景下 必传 * @deprecated 使用 formListCompleteName 配置 */ formListName?: Array<string | number>; /** * 前端 formItem 前缀FormName,当 TimeRangePickerWrapperFormItem 处在Form.List场景下,必传 * ``` * 例如 处在formList内部时,则 formListCompleteName = ['xxxxList'] * 例如 处在formList套formList内部时,则 formListCompleteName = ['xxxxList', 索引值, 'xxxxList2'] * ``` */ formListCompleteName?: Array<string | number> | string; dateRangePickerWrapperProps?: DateRangePickerWrapperProps; }; /** * 包含了Form.Item组件的时间区间选择组件,时间区间组件可以定义成两个字段操作,不用再通过数组处理 * ``` * 1. 会在form中产生一个 `__#invalid_date_xxxx_xxxx` 的无效字段,可以直接忽略 * 2. 设置日期格式 dateRangePickerWrapperProps={{ format: 'YYYY-MM-DD HH:mm' }} * 使用场景: * 1. 基础使用场景 * <DateRangePickerWrapperFormItem startName={'date1'} endName={'date2'} /> * 2. Form.List 内部使用 * <FormListWrapper name="dataList" prevCompleteName={[]}> * {(data) => { * return <DateRangePickerWrapperFormItem formListCompleteName={data.prevCompleteName} startName={data.getInsideFormItemName('date1')} endName={data.getInsideFormItemName('date2')} /> * }} * </FormListWrapper> * 3. Form.List 套 Form.List 内部使用 * <FormListWrapper name="dataList" prevCompleteName={[]}> * {(data) => { * return <FormListWrapper name={data.getInsideFormItemName('childrenList')} prevCompleteName={data.prevCompleteName}> * {(data2) => { * return <DateRangePickerWrapperFormItem formListCompleteName={data2.prevCompleteName} startName={data2.getInsideFormItemName('date1')} endName={data2.getInsideFormItemName('date2')} /> * }} * </FormListWrapper> * }} * </FormListWrapper> * ``` */ export declare const DateRangePickerWrapperFormItem: (props: DateRangePickerWrapperFormItemProps) => import("react").JSX.Element; export {};