yanzhen-design-vue
Version:
79 lines (78 loc) • 2.39 kB
JavaScript
;
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;