UNPKG

@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
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 };