diff --git a/CHANGELOG.md b/CHANGELOG.md index b56587df39646db0c4a03b4bc2239c3667600444..b45a715152ac1e97f53eaf3305577384c43a55b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ ## [Unreleased] +### Changed + +- 更新树支持根据prsop里传递的defaultExpandedKeys设置默认展开节点 +- 树在simple模式下,点击树节点会向上抛出节点点击事件 + ## [0.7.38-alpha.10] - 2024-09-25 ### Changed diff --git a/src/control/tree/tree.tsx b/src/control/tree/tree.tsx index ac1a532caec44b39ff4bfb29bde9d7080eed9465..6b2cd040d7bc1466ad73967c4e45d980ca14e8ff 100644 --- a/src/control/tree/tree.tsx +++ b/src/control/tree/tree.tsx @@ -77,11 +77,16 @@ export const TreeControl = defineComponent({ isSimple: { type: Boolean, default: false }, data: { type: Array, default: () => [] }, }, - setup(props) { + emits: ['nodeClick'], + setup(props, { emit }) { const c = useControlController( (...args) => new TreeController(...args), ); + if (props.defaultExpandedKeys) { + // 设置默认展开 + c.state.defaultExpandedKeys = props.defaultExpandedKeys; + } const cascadeSelect = ref(false); const counterData = reactive({}); const fn = (counter: IData) => { @@ -321,6 +326,10 @@ export const TreeControl = defineComponent({ */ const onNodeClick = (nodeData: ITreeNodeData, evt: MouseEvent) => { evt.stopPropagation(); + if (props.isSimple) { + // 向上抛出事件 + emit('nodeClick', { nodeData, evt }); + } if (nodeData._disableSelect) return; if (forbidClick) { return; @@ -759,7 +768,15 @@ export const TreeControl = defineComponent({ > {{ default: ({ data }: { node: IData; data: IData }) => { - const nodeData = this.findNodeData(data._uuid, this.c)!; + let nodeData: ITreeNodeData | undefined; + if (this.isSimple) { + nodeData = this.data.find((item: IData) => { + return item._uuid === data._uuid; + }) as ITreeNodeData; + } else { + nodeData = this.findNodeData(data._uuid, this.c); + } + if (!nodeData) { return null; } @@ -822,9 +839,9 @@ export const TreeControl = defineComponent({ return (
this.onNodeDbClick(nodeData, evt)} + onDblclick={evt => this.onNodeDbClick(nodeData!, evt)} onClick={evt => this.onNodeClick(nodeData, evt)} - onContextmenu={evt => this.onNodeContextmenu(nodeData, evt)} + onContextmenu={evt => this.onNodeContextmenu(nodeData!, evt)} class={[ this.ns.b('node'), nodeData._disableSelect