various-ui
Version:
This is a test version of the Vue 3 component library
73 lines (69 loc) • 2.05 kB
JavaScript
;
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