UNPKG

various-ui

Version:

This is a test version of the Vue 3 component library

71 lines (68 loc) 2 kB
import mitt from 'mitt'; import { ref } from 'vue'; import '../../../../utils/index.mjs'; import { cloneDeep, isArray, isObject } from 'lodash-es'; const useComposable = (define) => { const variable = { data: cloneDeep(define.data) }; const emitter = mitt(); const refs = { form: ref() }; const methods = { //* 表单重置函数 reset: () => { for (const index in define.rules) { emitter.emit(`reset:${index}`); } for (const index$1 in variable.data) { if (isArray(define.data[index$1]) || isObject(define.data[index$1])) { define.data[index$1] = cloneDeep(variable.data[index$1]); } else { define.data[index$1] = variable.data[index$1]; } } }, //* 表单校验清理函数 clear: (keys) => { for (const index in define.rules) { if (!keys || keys.includes(index)) { emitter.emit(`reset:${index}`); } } }, //* 表单校验函数 validator: async (callBack, list) => { if (!define.rules) return; const errors = []; for (const i in define.rules) { if (list && !list.includes(i)) continue; else { const alignment = []; define.rules[i].forEach((value) => alignment.push(value.verify(define.data))); const result = await Promise.all(alignment); const error = result.filter((value) => (!value.type || value.type == "error") && !value.verify); if (error && error.length) { errors.push({ name: i, result: error[0] }); } else { emitter.emit(`reset:${i}`); } } } if (errors.length) { errors.forEach((error) => emitter.emit(`trigger:${error.name}`, error.result)); callBack && callBack(false); } else { callBack && callBack(true); } } }; return { emitter, methods, refs }; }; export { useComposable }; //# sourceMappingURL=composable.mjs.map