import { inject, InjectionKey, provide, ComputedRef, computed } from 'vue'; import { ColProps } from '../grid'; import { RequiredMark } from './Form'; import { ValidateStatus } from './FormItem'; import { FormLabelAlign } from './interface'; export interface FormContextProps { vertical: ComputedRef; name?: ComputedRef; colon?: ComputedRef; labelAlign?: ComputedRef; labelCol?: ComputedRef; wrapperCol?: ComputedRef; requiredMark?: ComputedRef; //itemRef: (name: (string | number)[]) => (node: React.ReactElement) => void; } export const FormContextKey: InjectionKey = Symbol('formContextKey'); export const useProvideForm = (state: FormContextProps) => { provide(FormContextKey, state); }; export const useInjectForm = () => { return inject(FormContextKey, { labelAlign: computed(() => 'right' as FormLabelAlign), vertical: computed(() => false), }); }; /** Used for ErrorList only */ export interface FormItemPrefixContextProps { prefixCls: ComputedRef; status?: ComputedRef; } export const FormItemPrefixContextKey: InjectionKey = Symbol( 'formItemPrefixContextKey', ); export const useProvideFormItemPrefix = (state: FormItemPrefixContextProps) => { provide(FormItemPrefixContextKey, state); }; export const useInjectFormItemPrefix = () => { return inject(FormItemPrefixContextKey, { prefixCls: computed(() => ''), }); };