UNPKG

yanzhen-design-vue

Version:

162 lines (161 loc) 5.26 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const vue = require("vue"); const core = require("@vueuse/core"); const utilsVue = require("@yanzhen-libs/utils-vue"); const lodashEs = require("lodash-es"); const utils = require("@yanzhen-libs/utils"); require("../../../../utils/index.cjs"); require("../../../list/index.cjs"); const contacts = require("../constants/contacts.cjs"); const handleTreeNode = require("../utils/handleTreeNode.cjs"); const handleDataType = require("../utils/handleDataType.cjs"); const list = require("../../../list/src/list.cjs"); const log = require("../../../../utils/log.cjs"); const useContactsList = (props, emit) => { const $attrs = vue.useAttrs(); const $slots = vue.useSlots(); const { selectedIds, selectedValue, multiple, activeTab, ...refs } = vue.toRefs(props); const _loading = utilsVue.useVModel(props, "loading", emit); const _childActiveTab = utilsVue.useVModel(props, "childActiveTab", emit); const _selectedIds = vue.computed(() => { if (vue.unref(selectedValue)) { const values = lodashEs.flattenDeep([vue.unref(selectedValue)]); if (!vue.unref(activeTab)) return values.map((item) => item.value); return values.reduce( (prev, item) => { const type = handleDataType.handleDataType(item); switch (true) { case type === vue.unref(activeTab): case (vue.unref(activeTab) === contacts.Contacts.USUALLY && [contacts.Contacts.USUALLY, contacts.Contacts.USER].includes(type)): prev.push(item.value); break; } return prev; }, [] ); } return lodashEs.flattenDeep([vue.unref(selectedIds)]).filter(Boolean); }); const [DefineHeaderTemplate, ReusableHeaderTemplate] = core.createReusableTemplate(); const [DefineContactsItemTemplate, ReusableContactsItemTemplate] = core.createReusableTemplate(); const [DefineContactsCardItemTemplate, ReusableContactsCardItemTemplate] = core.createReusableTemplate(); const [DefineSelectedIconTemplate, ReusableSelectedIconTemplate] = core.createReusableTemplate(); const [DefineTreeTemplate, ReusableTreeTemplate] = core.createReusableTemplate(); const [DefineTreeItemTemplate, ReusableTreeItemTemplate] = core.createReusableTemplate(); const _listProps = vue.computed( () => lodashEs.pick(vue.mergeProps($attrs, vue.unref(props)), ...Object.keys(list.listProps)) ); const _disabledIds = vue.computed(() => lodashEs.flattenDeep([props.disableIds])); const selectedIconClass = vue.computed(() => { return vue.mergeProps( { class: [] }, { class: props.selectedIconClass } ).class; }); function handleUpdateChildActiveTab(value) { if (props["onUpdate:childActiveTab"]) { props["onUpdate:childActiveTab"](value); } else { emit("update:child-active-tab", value); } } const optionKey = utilsVue.useOptionKey(); const listConfig = vue.computed(() => { return vue.mergeProps(vue.unref(_listProps), { "onUpdate:loading": props["onUpdate:loading"], onLoadMore: props.onLoadMore }); }); function handleLoadMore(...args) { if (props.onLoadMore) { props.onLoadMore(...args); } else { emit("load-more", ...args); } } async function handleTreeExpand(...args) { if (props.onTreeExpand) { props.onTreeExpand(...args); } else { emit("tree-expand", ...args); } } function handleTreeSelect(...args) { const [, info] = args; if ((info == null ? void 0 : info.node) && props.onItemClick) { handleItemClick(info == null ? void 0 : info.node); return; } if (props.onTreeSelect) { props.onTreeSelect(...args); } else { emit("tree-select", ...args); } } function handleItemClick(item) { switch (true) { case item.disabled: case item.disableCheckbox: case vue.unref(_disabledIds).includes(item.value): return; } switch (vue.unref(activeTab)) { case contacts.Contacts.USER: if (!item.isCard && utils.isEmptyArray(item.children)) { log.message.warning("请展开数据").then((r) => r); return; } break; } if (props.onItemClick) { props.onItemClick(item); } else { emit("item-click", item); } } const ctx = { ...refs, multiple, activeTab, optionKey, _loading, _disabledIds, _selectedIds, _listProps, _childActiveTab, selectedIconClass, listConfig, $slots }; const templates = { DefineHeaderTemplate, ReusableHeaderTemplate, DefineContactsItemTemplate, ReusableContactsItemTemplate, DefineContactsCardItemTemplate, ReusableContactsCardItemTemplate, DefineSelectedIconTemplate, ReusableSelectedIconTemplate, DefineTreeTemplate, ReusableTreeTemplate, DefineTreeItemTemplate, ReusableTreeItemTemplate }; return { ctx, templates, handleTreeNode: handleTreeNode.handleTreeNode, handleItemClick, handleTreeSelect, handleTreeExpand, handleLoadMore, handleUpdateChildActiveTab }; }; exports.useContactsList = useContactsList;