UNPKG

tav-ui

Version:
1 lines 6.78 kB
{"version":3,"file":"useForm2.mjs","sources":["../../../../../../../../packages/components/form/src/hooks/useForm.ts"],"sourcesContent":["import { nextTick, onUnmounted, ref, unref, watch } from 'vue'\nimport { getDynamicProps } from '@tav-ui/utils/basic'\nimport { error } from '@tav-ui/utils/log'\nimport type { NamePath } from 'ant-design-vue/lib/form/interface'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { FormActionType, FormProps, FormSchema, UseFormReturnType } from '../types/form'\n\ntype Recordable<T = any> = Record<string, T>\ntype Nullable<T> = T | null\ntype DynamicProps<T> = {\n [P in keyof T]: Ref<T[P]> | T[P] | ComputedRef<T[P]>\n}\nconst isProdMode = () => true\n\nexport declare type ValidateFields = (nameList?: NamePath[]) => Promise<Recordable>\n\ntype Props = Partial<DynamicProps<FormProps>>\n\nexport function useForm(props?: Props): UseFormReturnType {\n const formRef = ref<Nullable<FormActionType>>(null)\n const loadedRef = ref<Nullable<boolean>>(false)\n\n async function getForm() {\n const form = unref(formRef)\n if (!form) {\n error(\n 'The form instance has not been obtained, please make sure that the form has been rendered when performing the form operation!'\n )\n }\n await nextTick()\n return form as FormActionType\n }\n\n function register(instance: FormActionType) {\n isProdMode() &&\n onUnmounted(() => {\n formRef.value = null\n loadedRef.value = null\n })\n if (unref(loadedRef) && isProdMode() && instance === unref(formRef)) return\n\n formRef.value = instance\n loadedRef.value = true\n\n watch(\n () => props,\n () => {\n props && instance.setProps(getDynamicProps(props))\n },\n {\n immediate: true,\n deep: true,\n }\n )\n }\n\n const methods: FormActionType = {\n scrollToField: async (name: NamePath, options?: ScrollOptions | undefined) => {\n const form = await getForm()\n form.scrollToField(name, options)\n },\n setProps: async (formProps: Partial<FormProps>) => {\n const form = await getForm()\n form.setProps(formProps)\n },\n\n updateSchema: async (data: Partial<FormSchema> | Partial<FormSchema>[]) => {\n const form = await getForm()\n form.updateSchema(data)\n },\n\n resetSchema: async (data: Partial<FormSchema> | Partial<FormSchema>[]) => {\n const form = await getForm()\n form.resetSchema(data)\n },\n\n clearValidate: async (name?: string | string[]) => {\n const form = await getForm()\n form.clearValidate(name)\n },\n\n resetFields: async () => {\n getForm().then(async (form) => {\n await form.resetFields()\n })\n },\n\n removeSchemaByFiled: async (field: string | string[]) => {\n unref(formRef)?.removeSchemaByFiled(field)\n },\n\n // TODO promisify\n getFieldsValue: <T>() => {\n return unref(formRef)?.getFieldsValue() as T\n },\n\n setFieldsValue: async <T>(values: T, useValidate = true) => {\n const form = await getForm()\n form.setFieldsValue<T>(values, useValidate)\n },\n\n appendSchemaByField: async (\n schema: FormSchema,\n prefixField: string | undefined,\n first?: boolean\n ) => {\n const form = await getForm()\n form.appendSchemaByField(schema, prefixField!, first)\n },\n\n submit: async (): Promise<any> => {\n const form = await getForm()\n return form.submit()\n },\n\n validate: async (nameList?: NamePath[]): Promise<Recordable> => {\n const form = await getForm()\n return form.validate(nameList)\n },\n\n validateFields: async (nameList?: NamePath[]): Promise<Recordable> => {\n const form = await getForm()\n return form.validateFields(nameList)\n },\n }\n\n return [register, methods]\n}\n"],"names":[],"mappings":"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"}