veui
Version:
Baidu Enterprise UI for Vue.js.
54 lines (42 loc) • 1.3 kB
TypeScript
import { VeuiDefineComponent, VeuiDefineInstance, UiMixin } from '../common'
type Validities = boolean | undefined | Record<any, unknown>
type ValidiateFn = (submitData: Record<any, unknown>) => Validities
type ValidatorItem = {
fields: Array<string>
validate: (...args: any[]) => Validities
triggers?: string | Array<string>
}
type Props = {
validators?: Array<ValidatorItem>
beforeValidate?: ValidiateFn
afterValidate?: ValidiateFn
disabled?: boolean
readonly?: boolean
labelPosition?: 'side' | 'top'
data?: Record<any, unknown>
}
type Emits = {
submit(data: Record<any, unknown>, evt: Event): void
invalid(errors: Record<any, unknown>): void
}
type Mixins = UiMixin
type Slots = {
default(): unknown
actions(slotProps: { submit: () => unknown }): unknown
}
type InputValidity = {
status: 'success' | 'warning' | 'error'
message: string
}
type Methods = {
submit(): void
validate(
fieldNames?: Array<string> | null
): Promise<true | Record<string, Record<any, unknown>>>
clearValidities(fieldNames?: Array<string> | null): void
setValidities(validities: Record<string, string | InputValidity>): void
}
type Form = VeuiDefineComponent<{
new (...args: any[]): VeuiDefineInstance<Props, Emits, Slots, Mixins, Methods>
}>
export default Form