UNPKG

yanzhen-design-vue

Version:

79 lines (78 loc) 2.39 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); const utilsVue = require("@yanzhen-libs/utils-vue"); const lodashEs = require("lodash-es"); const selectCommonProps = require("../../../select/src/hooks/select-common-props.cjs"); const contacts = require("../contacts.cjs"); require("../constants/index.cjs"); const handleDataType = require("../utils/handleDataType.cjs"); const useContactsSelectedData = require("./use-contacts-selected-data.cjs"); const base = require("../constants/base.cjs"); const ns = contacts.contactsOptions.ns; function contactsOptionsProps() { return selectCommonProps.optionsProps([...base.contactsOptionType]); } function useContactsItemProps() { return utilsVue.buildProps({ value: utilsVue.definePropType([String, Number]), avatar: String, errorImg: String, label: String, type: String }); } function useContactsOptions() { const options = utilsVue.useOptions([...base.contactsOptionType]); const config = vue.reactive({ map: {}, disabledIds: [] }); const optionsMap = vue.computed(() => { return config.map; }); const optionsDisabledIds = vue.computed(() => { return config.disabledIds; }); const watcher = utilsVue.createWatcher(); function handleOptions(list = []) { const disabledIds = []; if (lodashEs.isArray(list)) { useContactsSelectedData.handleContactsData([], list, (item) => { if (!item) return item ?? {}; item.type = handleDataType.handleDataType(item); item.class = item.isLeaf ? ns.is("leaf") : ""; if (item.value) { config.map[item.value] = item; if ((item == null ? void 0 : item.disabled) === true) { disabledIds.push(item.value); } } return item; }); } config.disabledIds = disabledIds; } watcher.set("options", { source: utilsVue.unref(options), handler(list) { handleOptions(list); }, deep: true, debounce: 300 }); vue.onMounted(() => { handleOptions(utilsVue.unref(options)); }); vue.onUnmounted(() => { watcher.stop(); }); return { options, optionsMap, optionsDisabledIds }; } exports.contactsOptionsProps = contactsOptionsProps; exports.useContactsItemProps = useContactsItemProps; exports.useContactsOptions = useContactsOptions;