import { Subtract } from 'utility-types'; import type { RuleItem } from 'async-validator'; import { Options as ScrollIntoViewOptions } from 'scroll-into-view-if-needed'; import type { BaseFormApi as FormApi, FormState, WithFieldOption, AllErrors, FieldValidateTriggerType } from '@douyinfe/semi-foundation/lib/es/form/interface'; import type { SelectProps } from '../select/index'; import Option from '../select/option'; import OptGroup from '../select/optionGroup'; import type { CheckboxProps } from '../checkbox/index'; import type { RadioProps } from '../radio/index'; import type { ReactFieldError as FieldError } from './errorMessage'; import type { LabelProps } from './label'; import type { VueJsxNode } from "../interface"; import type { CSSProperties, DefineComponent, VNode } from "vue"; import type { AriaAttributes } from "../AriaAttributes"; export type { FormState, FormApi, WithFieldOption, RuleItem }; export type CommonFieldProps = { id?: string; className?: string; prefix?: string; /** Field is required (except Form. Checkbox within the Group, Form. Radio) */ field: string; /** The label text of the form control is the same name as the field by default when it is not passed */ label?: LabelProps | VueJsxNode; labelPosition?: 'top' | 'left' | 'inset'; labelAlign?: 'left' | 'right'; labelWidth?: number | string; noLabel?: boolean; noErrorMessage?: boolean; name?: string; fieldClassName?: string; fieldStyle?: CSSProperties; initValue?: any; validate?: (fieldValue: any, values: Record) => string | Promise | VNode; /** Check rules, check library based on async-validator */ rules?: Array; /** Check trigger timing */ trigger?: 'blur' | 'change' | 'custom' | 'mount' | Array; /** Converts form control values before validation */ transform?: (fieldValue: any) => any; /** Make a second change to the component's value before the UI update */ convert?: (fieldValue: any) => any; allowEmptyString?: boolean; /** When true, use rules verification, after encountering the first rule that fails the test, the verification of subsequent rules will no longer be triggered */ stopValidateWithError?: boolean; helpText?: VueJsxNode; extraText?: VueJsxNode; extraTextPosition?: 'middle' | 'bottom'; /** These declaration just hack for Subtract, not valid props in CommonFieldProps */ defaultValue?: any; /** Whether to take over only the data stream, when true, it will not automatically insert modules such as ErrorMessage, Label, extraText, etc. The style and DOM structure are consistent with the original component */ pure?: boolean; }; export type CommonexcludeType = { defaultValue?: any; value?: any; checked?: boolean; defaultChecked?: boolean; }; export type RadioCheckboxExcludeProps = { defaultValue?: any; checked?: boolean; defaultChecked?: boolean; field: string; }; export type RCIncludeType = { field?: string; }; export declare const FormSelect: { Option: DefineComponent | { type: import("vue").PropType; default?: any; required?: false; }; label: import("vue").PropType | VNode[]> | { type: import("vue").PropType | VNode[]>; default?: any; required?: false; }; children: import("vue").PropType | VNode[]> | { type: import("vue").PropType | VNode[]>; default?: any; required?: false; }; disabled: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; showTick: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; className: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; style: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; selected: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; empty: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; emptyContent: import("vue").PropType | VNode[] | (() => VNode)> | { type: import("vue").PropType | VNode[] | (() => VNode)>; default?: any; required?: false; }; inputValue: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; renderOptionItem: import("vue").PropType<(...args: any) => VNode> | { type: import("vue").PropType<(...args: any) => VNode>; default?: any; required?: false; }; onMouseEnter: import("vue").PropType<(e: MouseEvent) => any> | { type: import("vue").PropType<(e: MouseEvent) => any>; default?: any; required?: false; }; focused: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; onSelect: import("vue").PropType<(opts: import("../select/option").OptionProps, e: MouseEvent) => any> | { type: import("vue").PropType<(opts: import("../select/option").OptionProps, e: MouseEvent) => any>; default?: any; required?: false; }; prefixCls: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _scrollIndex: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _selected: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _show: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; semiOptionId: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; key_: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _parentGroup: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _keyInOptionList: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _keyInJsx: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _inputCreateOnly: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; optionRest: import("vue").PropType> | { type: import("vue").PropType>; default?: any; required?: false; }; }>, () => VNode, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly | { type: import("vue").PropType; default?: any; required?: false; }; label: import("vue").PropType | VNode[]> | { type: import("vue").PropType | VNode[]>; default?: any; required?: false; }; children: import("vue").PropType | VNode[]> | { type: import("vue").PropType | VNode[]>; default?: any; required?: false; }; disabled: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; showTick: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; className: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; style: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; selected: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; empty: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; emptyContent: import("vue").PropType | VNode[] | (() => VNode)> | { type: import("vue").PropType | VNode[] | (() => VNode)>; default?: any; required?: false; }; inputValue: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; renderOptionItem: import("vue").PropType<(...args: any) => VNode> | { type: import("vue").PropType<(...args: any) => VNode>; default?: any; required?: false; }; onMouseEnter: import("vue").PropType<(e: MouseEvent) => any> | { type: import("vue").PropType<(e: MouseEvent) => any>; default?: any; required?: false; }; focused: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; onSelect: import("vue").PropType<(opts: import("../select/option").OptionProps, e: MouseEvent) => any> | { type: import("vue").PropType<(opts: import("../select/option").OptionProps, e: MouseEvent) => any>; default?: any; required?: false; }; prefixCls: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _scrollIndex: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _selected: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _show: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; semiOptionId: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; key_: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _parentGroup: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _keyInOptionList: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _keyInJsx: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; _inputCreateOnly: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; optionRest: import("vue").PropType> | { type: import("vue").PropType>; default?: any; required?: false; }; }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>; OptGroup: DefineComponent | VNode[]> | { type: import("vue").PropType | VNode[]>; default?: any; required?: false; }; label: import("vue").PropType | VNode[]> | { type: import("vue").PropType | VNode[]>; default?: any; required?: false; }; className: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; style: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly | VNode[]> | { type: import("vue").PropType | VNode[]>; default?: any; required?: false; }; label: import("vue").PropType | VNode[]> | { type: import("vue").PropType | VNode[]>; default?: any; required?: false; }; className: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; style: import("vue").PropType | { type: import("vue").PropType; default?: any; required?: false; }; }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>; }; export interface SelectStatic { Option: typeof Option; OptGroup: typeof OptGroup; } export type Field

= Subtract

; export declare let FormSelectType: DefineComponent & SelectStatic>; export declare let FormCheckboxType: DefineComponent & CheckboxProps & RCIncludeType>; export declare let FormRadioType: DefineComponent & RadioProps & RCIncludeType>; export interface ErrorMsg { [optionalKey: string]: FieldError; } export interface FormFCChild = any> { formState: FormState; values: K; formApi: FormApi; } type BatchValidateResult = string | Partial>; export interface BaseFormProps = any> { 'aria-label'?: AriaAttributes['aria-label']; onSubmit?: (values: Values, e?: any) => void; onSubmitFail?: (errors: Record, values: Partial, e?: any) => void; onReset?: () => void; onValueChange?: (values: Values, changedValue: Partial) => void; onErrorChange?: (errors: Record, changedError?: Partial>) => void; onChange?: (formState: FormState) => void; allowEmpty?: boolean; validateFields?: (values: Values) => BatchValidateResult | Promise>; /** Use this if you want to populate the form with initial values. */ initValues?: Values; id?: string; /** getFormApi will be call once when Form mounted, u can save formApi reference in your component */ getFormApi?: (formApi: FormApi) => void; style?: CSSProperties; className?: string; extraTextPosition?: 'middle' | 'bottom'; layout?: 'horizontal' | 'vertical'; labelPosition?: 'top' | 'left' | 'inset'; labelWidth?: number | string; labelAlign?: 'left' | 'right'; labelCol?: Record; wrapperCol?: Record; render?: (internalProps: FormFCChild) => VueJsxNode; component?: VNode | string; autoScrollToError?: boolean | ScrollIntoViewOptions; disabled?: boolean; showValidateIcon?: boolean; stopValidateWithError?: boolean; stopPropagation?: { submit?: boolean; reset?: boolean; }; trigger?: FieldValidateTriggerType; }