@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.
43 lines (42 loc) • 1.17 kB
JavaScript
import "../chunk-G2ADBYYC.js";
import { handelNodeClick } from "./index";
const api = ["state", "handelNodeClick"];
const renderless = (props, { reactive, watch, computed }, { dispatch, nextTick }) => {
const api2 = {};
const state = reactive({
renderNodes: false,
showNodes: false,
activeNodeId: null,
allExpandedKeysPath: computed(() => [...props.expandedKeysPath, ...props.activedKeysPath])
});
Object.assign(api2, {
state,
handelNodeClick: handelNodeClick({ state, dispatch })
});
watch(
() => props.activedKeys,
() => {
if (props.activedKeys && props.nodes.id === props.activedKeys && state.activeNodeId !== props.activedKeys) {
nextTick(() => {
state.activeNodeId = props.activedKeys;
dispatch("Menu", "node-changed", { id: props.activedKeys });
});
}
},
{ immediate: true }
);
watch(
() => state.allExpandedKeysPath,
() => {
if (state.allExpandedKeysPath.length) {
state.showNodes = state.allExpandedKeysPath.includes(props.nodes.id);
}
},
{ deep: true, immediate: true }
);
return api2;
};
export {
api,
renderless
};