yanzhen-design-vue
Version:
39 lines (38 loc) • 1.39 kB
JavaScript
import { isEmptyValue } from "@yanzhen-libs/utils";
import { buildProp, definePropType, buildProps, buildEmits, propsSeparate, useDynamicProps, unref, useProps, useModel } from "@yanzhen-libs/utils-vue";
import { contactsModelValueType } from "../constants/contacts.mjs";
function contactsModelValueProp() {
return buildProp({
type: definePropType([String, Number, Array])
});
}
function contactsModelValueProps() {
const props = {};
const emits = {};
for (const key of contactsModelValueType) {
props[key] = contactsModelValueProp();
emits[`onUpdate:${key}`] = Function;
}
return buildProps({ ...props, ...emits });
}
const contactsModelValueEmits = buildEmits(propsSeparate(contactsModelValueProps()).emits);
function useContactsVModels(prop, emit) {
const updatePropsKey = useDynamicProps({ update: true });
let types = [...contactsModelValueType].filter(
(key) => updatePropsKey.includes(key)
);
if (prop && !types.includes(prop)) prop = null;
if (!isEmptyValue(prop) && types.includes(prop)) types = [prop];
const props = unref(useProps(types));
if (!isEmptyValue(prop)) return useModel(props, prop, emit);
return Object.keys(props).reduce((prev, key) => {
prev[key] = useModel(props, key, emit);
return prev;
}, {});
}
export {
contactsModelValueEmits,
contactsModelValueProp,
contactsModelValueProps,
useContactsVModels
};