UNPKG

element-plus

Version:

A Component Library for Vue 3

35 lines (29 loc) 768 B
import { inject, provide } from 'vue' import type Node from '../model/node' interface NodeMap { treeNodeExpand(node: Node): void children: NodeMap[] } export function useNodeExpandEventBroadcast(props) { const parentNodeMap = inject<NodeMap>('TreeNodeMap', null) const currentNodeMap: NodeMap = { treeNodeExpand: (node) => { if (props.node !== node) { props.node.collapse() } }, children: [], } if (parentNodeMap) { parentNodeMap.children.push(currentNodeMap) } provide('TreeNodeMap', currentNodeMap) return { broadcastExpanded: (node: Node): void => { if (!props.accordion) return for (const childNode of currentNodeMap.children) { childNode.treeNodeExpand(node) } }, } }