@opentiny/vue-renderless
Version:
An enterprise-class UI component library, support both Vue.js 2 and Vue.js 3, as well as PC and mobile.
87 lines (86 loc) • 2.13 kB
JavaScript
import "../chunk-G2ADBYYC.js";
import {
initData,
computedPlaceholder,
hideNodeText,
filterNode,
searchNodeText,
nodeClick,
nodeExpand,
nodeCollapse,
nodeDragEnd,
nodeDragEnter,
nodeDragLeave,
nodeDragOver,
nodeDragStart,
nodeDrop,
clickA
} from "./index";
import { setMenuKey } from "../tree-menu";
const api = [
"state",
"setMenuKey",
"initData",
"hideNodeText",
"filterNode",
"searchNodeText",
"nodeClick",
"nodeExpand",
"nodeCollapse",
"nodeDragEnd",
"nodeDragEnter",
"nodeDragLeave",
"nodeDragOver",
"nodeDragStart",
"nodeDrop",
"clickA"
];
const renderless = (props, { reactive, watch, computed, onMounted }, { t, service, nextTick, constants, emit, refs }) => {
const api2 = {};
const state = reactive({
datas: [],
toggleIcon: true,
showNode: true,
filterText: "",
placeholder: computed(() => api2.computedPlaceholder())
});
service = service || { base: {} };
service = {
getMenuDataSync: props.getMenuDataSync || service.base.getMenuDataSync,
// deprecated v3.4.0废弃, v3.16.0移除;移除原因:如果是同步数据则和:data功能重复
getMenuDataAsync: props.getMenuDataAsync
};
Object.assign(api2, {
state,
clickA,
nodeDrop: nodeDrop(emit),
filterNode: filterNode(props),
nodeClick: nodeClick(emit),
nodeExpand: nodeExpand(emit),
nodeDragEnd: nodeDragEnd(emit),
hideNodeText: hideNodeText(state),
nodeDragOver: nodeDragOver(emit),
nodeCollapse: nodeCollapse(emit),
nodeDragStart: nodeDragStart(emit),
nodeDragLeave: nodeDragLeave(emit),
nodeDragEnter: nodeDragEnter(emit),
searchNodeText: searchNodeText({ state, refs, nextTick }),
computedPlaceholder: computedPlaceholder({ constants, props, t }),
setMenuKey: setMenuKey(api2),
initData: initData({ state, props, service, api: api2 })
});
watch(
() => state.filterText,
(value) => {
if (props.automaticFiltering) {
nextTick(() => refs.tree.filter(value));
}
}
);
onMounted(api2.initData);
return api2;
};
export {
api,
renderless
};