UNPKG

various-ui

Version:

This is a test version of the Vue 3 component library

73 lines (69 loc) 2.05 kB
'use strict'; var mitt = require('mitt'); var vue = require('vue'); require('../../../../utils/index.js'); var lodashEs = require('lodash-es'); const useComposable = (define) => { const variable = { data: lodashEs.cloneDeep(define.data) }; const emitter = mitt(); const refs = { form: vue.ref() }; const methods = { //* 表单重置函数 reset: () => { for (const index in define.rules) { emitter.emit(`reset:${index}`); } for (const index$1 in variable.data) { if (lodashEs.isArray(define.data[index$1]) || lodashEs.isObject(define.data[index$1])) { define.data[index$1] = lodashEs.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 }; }; exports.useComposable = useComposable; //# sourceMappingURL=composable.js.map