UNPKG

tav-ui

Version:
91 lines (88 loc) 2.65 kB
import { ref, unref, nextTick, onUnmounted, watch } from 'vue'; import { getDynamicProps } from '../../../../utils/basic2.mjs'; import { error } from '../../../../utils/log2.mjs'; const isProdMode = () => true; function useForm(props) { const formRef = ref(null); const loadedRef = ref(false); async function getForm() { const form = unref(formRef); if (!form) { error("The form instance has not been obtained, please make sure that the form has been rendered when performing the form operation!"); } await nextTick(); return form; } function register(instance) { isProdMode() && onUnmounted(() => { formRef.value = null; loadedRef.value = null; }); if (unref(loadedRef) && isProdMode() && instance === unref(formRef)) return; formRef.value = instance; loadedRef.value = true; watch(() => props, () => { props && instance.setProps(getDynamicProps(props)); }, { immediate: true, deep: true }); } const methods = { scrollToField: async (name, options) => { const form = await getForm(); form.scrollToField(name, options); }, setProps: async (formProps) => { const form = await getForm(); form.setProps(formProps); }, updateSchema: async (data) => { const form = await getForm(); form.updateSchema(data); }, resetSchema: async (data) => { const form = await getForm(); form.resetSchema(data); }, clearValidate: async (name) => { const form = await getForm(); form.clearValidate(name); }, resetFields: async () => { getForm().then(async (form) => { await form.resetFields(); }); }, removeSchemaByFiled: async (field) => { unref(formRef)?.removeSchemaByFiled(field); }, getFieldsValue: () => { return unref(formRef)?.getFieldsValue(); }, setFieldsValue: async (values, useValidate = true) => { const form = await getForm(); form.setFieldsValue(values, useValidate); }, appendSchemaByField: async (schema, prefixField, first) => { const form = await getForm(); form.appendSchemaByField(schema, prefixField, first); }, submit: async () => { const form = await getForm(); return form.submit(); }, validate: async (nameList) => { const form = await getForm(); return form.validate(nameList); }, validateFields: async (nameList) => { const form = await getForm(); return form.validateFields(nameList); } }; return [register, methods]; } export { useForm }; //# sourceMappingURL=useForm2.mjs.map