ideaz-element
Version:
<p align="center"> <a href="" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/logo.svg" alt="Ideaz Element" width="180" style="width: 180px;" /> </a> </p>
1 lines • 5.36 kB
Source Map (JSON)
{"version":3,"file":"useFormMethods.mjs","sources":["../../../../../../packages/element/form/src/hooks/useFormMethods.ts"],"sourcesContent":["import { getCurrentInstance } from 'vue'\nimport { cloneDeep } from 'lodash-unified'\nimport { isFunction, isObject } from '@ideaz/utils'\nimport type { ComponentInternalInstance } from 'vue'\nimport type { FormProps } from '../props'\nimport type { ValidateField, validateCallback, validateFieldCallback } from '../../../types'\n\ninterface ElForm {\n validate: (callback?: validateCallback) => Promise<boolean>\n validateField: (\n props: string[] | string,\n callback: validateFieldCallback\n ) => Promise<boolean>\n resetFields: () => void\n clearValidate: (props: string[] | string) => void\n scrollToField: (prop: string) => void\n}\n\nexport function useFormMethods(props?: FormProps) {\n const { proxy: ctx } = getCurrentInstance() as ComponentInternalInstance\n const originModelValue\n = (isObject(props) && isObject(props.modelValue))\n ? cloneDeep(props.modelValue)\n : null\n\n const runArrayFormMethods = (method: string, props?: any, callback?: validateCallback | validateFieldCallback) => {\n Object.keys(ctx!.$refs).forEach((key) => {\n if (key.includes('arrayForm'))\n (ctx!.$refs[key] as ElForm)[method as keyof ElForm](props, callback as validateFieldCallback)\n })\n }\n\n const validate = async (callback?: validateFieldCallback | validateCallback) => {\n try {\n if (props && props.type === 'array') {\n let isPassValidate = true\n const keys = Object.keys(ctx!.$refs)\n let fields: ValidateField = {}\n for (let index = 0; index < keys.length; index++) {\n const key = keys[index]\n if (key.includes('arrayForm') && ctx!.$refs[key]) {\n await (ctx!.$refs[key] as ElForm).validate((val: boolean, field: ValidateField) => {\n if (!val) {\n isPassValidate = false\n fields = { ...fields, ...field }\n }\n })\n }\n }\n return isFunction(callback) ? (callback as validateCallback)(isPassValidate, fields) : isPassValidate\n }\n else {\n const res = await (ctx?.$refs.formRef as ElForm).validate(callback as validateCallback)\n return res\n }\n }\n catch (error) {\n return false\n }\n }\n\n const validateField = async (\n props: string[] | string,\n callback: validateFieldCallback,\n ) => {\n try {\n const res = await (ctx?.$refs.formRef as ElForm).validateField(\n props,\n callback,\n )\n return res\n }\n catch (error) {\n return false\n }\n }\n\n const resetFields = () => {\n if (props && props.type === 'array') {\n runArrayFormMethods('resetFields')\n }\n else {\n (ctx?.$refs.formRef as ElForm).resetFields()\n // If you use hide for form entries, the form entry data may not be reset. Manual clearing\n if (originModelValue) {\n Object.keys(originModelValue).forEach((key) => {\n props!.modelValue[key] = originModelValue[key]\n })\n }\n }\n }\n\n const scrollToField = (prop: string) => {\n (ctx?.$refs.formRef as ElForm).scrollToField(prop)\n }\n\n const clearValidate = (attrs: string[] | string) => {\n if (props && props.type === 'array')\n runArrayFormMethods('clearValidate', props)\n\n else\n (ctx?.$refs.formRef as ElForm).clearValidate(attrs)\n }\n\n return { resetFields, validate, validateField, clearValidate, scrollToField }\n}\n"],"names":["useFormMethods","props","ctx","getCurrentInstance","originModelValue","isObject","cloneDeep","runArrayFormMethods","method","props2","callback","key","isPassValidate","keys","fields","index","val","field","isFunction","attrs","prop"],"mappings":";;;;;AAkBO,SAAAA,EAAAC,GAAA;AACL,QAAA,EAAA,OAAAC,EAAA,IAAAC,EAAA,GACAC,IAAAC,EAAAJ,CAAA,KAAAI,EAAAJ,EAAA,UAAA,IAAAK,EAAAL,EAAA,UAAA,IAAA,MAKAM,IAAA,CAAAC,GAAAC,GAAAC,MAAA;AACE,WAAA,KAAAR,EAAA,KAAA,EAAA,QAAA,CAAAS,MAAA;AACE,MAAAA,EAAA,SAAA,WAAA,KACET,EAAA,MAAAS,CAAA,EAAAH,CAAA,EAAAC,GAAAC,CAAA;AAAA,IAA4F,CAAA;AAAA,EAC/F;AA2EH,SAAA,EAAA,aA3BA,MAAA;AACE,IAAAT,KAAAA,EAAA,SAAA,UACEM,EAAA,aAAA,MAGAL,KAAA,gBAAAA,EAAA,MAAA,SAAA,YAAA,GAEAE,KACE,OAAA,KAAAA,CAAA,EAAA,QAAA,CAAAO,MAAA;AACE,MAAAV,EAAA,WAAAU,CAAA,IAAAP,EAAAO,CAAA;AAAA,IAA6C,CAAA;AAAA,EAGnD,GAeF,UAxEA,OAAAD,MAAA;AACE,QAAA;AACE,UAAAT,KAAAA,EAAA,SAAA,SAAA;AACE,YAAAW,IAAA;AACA,cAAAC,IAAA,OAAA,KAAAX,EAAA,KAAA;AACA,YAAAY,IAAA,CAAA;AACA,iBAAAC,IAAA,GAAAA,IAAAF,EAAA,QAAAE,KAAA;AACE,gBAAAJ,IAAAE,EAAAE,CAAA;AACA,UAAAJ,EAAA,SAAA,WAAA,KAAAT,EAAA,MAAAS,CAAA,KACE,MAAAT,EAAA,MAAAS,CAAA,EAAA,SAAA,CAAAK,GAAAC,MAAA;AACE,YAAAD,MACEJ,IAAA,IACAE,IAAA,EAAA,GAAAA,GAAA,GAAAG,EAAA;AAAA,UACF,CAAA;AAAA,QAEJ;AAEF,eAAAC,EAAAR,CAAA,IAAAA,EAAAE,GAAAE,CAAA,IAAAF;AAAA,MAAuF;AAIvF,eADA,OAAAV,KAAA,gBAAAA,EAAA,MAAA,SAAA,SAAAQ,CAAA;AAAA,IAEF,QAAA;AAGA,aAAA;AAAA,IAAO;AAAA,EACT,GA8CF,eA3CA,OAAAD,GAAAC,MAAA;AAIE,QAAA;AAKE,aAJA,OAAAR,KAAA,gBAAAA,EAAA,MAAA,SAAA;AAAA,QAAiDO;AAAA,QAC/CC;AAAA,MACA;AAAA,IAEK,QAAA;AAGP,aAAA;AAAA,IAAO;AAAA,EACT,GA8BF,eARA,CAAAS,MAAA;AACE,IAAAlB,KAAAA,EAAA,SAAA,UACEM,EAAA,iBAAAN,CAAA,KAGAC,KAAA,gBAAAA,EAAA,MAAA,SAAA,cAAAiB,CAAA;AAAA,EAAkD,GAGtD,eAZA,CAAAC,MAAA;AACE,KAAAlB,KAAA,gBAAAA,EAAA,MAAA,SAAA,cAAAkB,CAAA;AAAA,EAAiD,EAWnD;AACF;"}