@sishuguojixuefu/react-native-form
Version:
220 lines (197 loc) • 4.82 kB
text/typescript
import { KeyboardTypeOptions, ImageSourcePropType } from 'react-native'
export declare type TextAreaEventHandle = (val?: string) => void
/**
* 正则规则类型定义
*/
export interface RulePatternPropsType {
pattern?: RegExp
message?: string
}
/**
* 正则规则类型定义
*/
export interface RuleRequiredPropsType {
required?: boolean
message?: string
}
/**
* 正则函数类型定义
*/
export interface RuleValidatorPropsType {
pattern?: RegExp
validator?: boolean
message?: string
}
/**
* 正则自定义规则类型定义
*/
export interface RuleMessagePropsType {
type:
| 'zip'
| 'email'
| 'zh'
| 'zhName'
| 'url'
| 'phone'
| 'mobilePhone'
| 'telephone'
| 'idCard'
| 'money'
| 'date'
| 'number'
| 'integer'
| 'floating'
| 'twoTimes'
| 'threeTimes'
| 'fourTimes'
| 'fiveTimes'
message?: string
}
export declare type RulePropsType = (
| string
| RulePatternPropsType
| RuleRequiredPropsType
| RuleMessagePropsType
| RuleValidatorPropsType)[]
/**
* FormItems属性的类型定义
*/
export interface FormItemPropsType {
componentName: string
props: FormItemOptionPropsType
}
/**
* FormItem 类型定义
*/
export interface FormItemOptionPropsType {
name?: string // 组件名
id: string // id
placeholder?: string // 备注
initialValue?: string // 初始值
required?: boolean // 是否必要
rules?: RulePropsType // 规则
form?: any
}
/**
* SsDescription组件PropsType
*/
export interface SsDescriptionPropsType {
name?: string // 组件名
id: string // id
initialValue?: string // 初始值
icon?: string
}
/**
* Input组件PropsType
*/
export interface SwitchPropsType extends FormItemOptionPropsType {
label: string // 标签
onChange?: (checked: boolean) => void
last?: boolean
}
/**
* Input组件PropsType
*/
export interface InputPropsType extends FormItemOptionPropsType {
icon?: ImageSourcePropType
label: string // 标签
onChange?: (value: string) => void
type?: 'text' | 'bankCard' | 'phone' | 'password' | 'number' | 'digit' | KeyboardTypeOptions // 类型
textAlign?: 'left' | 'center' | 'right'
extra?: React.ReactNode
maxLength?: number
last?: boolean
multiline?: boolean
height?: number
}
/**
* Textarea组件PropsType
*/
export interface TextareaPropsType extends FormItemOptionPropsType {
label: string // 标签
onChange?: TextAreaEventHandle
count?: number // 计数功能,兼具最大长度,默认为0,代表不开启计数功能
last?: boolean
}
/**
* SsSelect组件PropsType
*/
export interface SsSelectPropsType extends FormItemOptionPropsType {
icon?: ImageSourcePropType
label: string // 标签
onChange?: (value?: React.ReactText[]) => void
options: ({ label: string; value: string } | string)[] // 选项
cols?: number // 列数
last?: boolean
}
/**
* SsMultiSelect组件PropsType
*/
export interface SsMultiSelectPropsType extends FormItemOptionPropsType {
label: string // 标签
onChange?: (value?: React.ReactText[]) => void // onChange事件
options: ({ label: string; value: string } | string)[] // 选项
}
/**
* SsDropDown组件PropsType
*/
export interface SsDropDownPropsType extends FormItemOptionPropsType {
icon?: ImageSourcePropType
label: string // 标签
onChange?: (value?: React.ReactText[]) => void // onChange事件
options: ({ label: string; value: string } | string)[] // 选项
multiple: boolean
}
/**
* SsDate组件PropsType
*/
export interface SsDateProps extends FormItemOptionPropsType {
label: string // 标签
onChange?: (value: Date) => void
type: 'year' | 'month' | 'date' | 'datetime' | 'time'
minDate: Date
maxDate: Date
}
/**
* SsDateRange组件PropsType
*/
export interface SsDateRangeProps {
name?: string // 组件名
id: string[] // id
placeholder?: string[] // 备注
initialValue?: string[] // 初始值
required?: boolean // 是否必要
rules?: RulePropsType // 规则
form?: any
label: string[] // 标签
onChange?: (value: Date | Date[]) => void
}
/**
* SsAmount组件PropsType
*/
export interface SsAmountProps extends InputPropsType {
upper?: boolean // 是否显示大写
}
export interface RatingProps {
form?: any
id: string
label: string
rules?: RulePropsType // 规则
allowHalf?: boolean
onChange?: (value: number) => void
initialValue: number
required?: boolean
}
export interface ImagePickerProps extends FormItemOptionPropsType {
label: string
onChange?: (value: any[]) => void
}
export interface LocationProps extends FormItemOptionPropsType {
label: string
onChange?: (value: any) => void
}
export interface CalculateProps extends FormItemOptionPropsType {
label: string
formula: any[]
onChange?: (value: any) => void
}