comic-plus
Version:
<p align="center"> <img width="200px" src="./logo.png"/> </p>
31 lines (30 loc) • 727 B
JavaScript
import { inject, computed } from "vue";
import { FORMITEM_PROVIDE } from "../components/form/src/type.mjs";
function flattenArray(a) {
let n = [];
a.forEach((o) => {
if (Array.isArray(o)) {
n = n.concat(flattenArray(o));
} else {
n.push(o);
}
});
return Array.from(new Set(n));
}
function useItemValidate() {
const validate = inject(FORMITEM_PROVIDE, void 0);
const validateTriggers = computed(() => {
return flattenArray((validate == null ? void 0 : validate.trigger) ?? []);
});
const itemValidate = function(trigger) {
if (validate && validateTriggers.value.includes(trigger)) {
validate.fn();
}
};
return {
itemValidate
};
}
export {
useItemValidate
};