UNPKG

yanzhen-design-vue

Version:

39 lines (38 loc) 1.39 kB
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 };