diff --git a/src/components/Tree/src/Tree.vue b/src/components/Tree/src/Tree.vue index d21d7ff8..2bae83ff 100644 --- a/src/components/Tree/src/Tree.vue +++ b/src/components/Tree/src/Tree.vue @@ -11,6 +11,7 @@ toRaw, watch, CSSProperties, + onMounted, } from 'vue'; import { Tree, Empty } from 'ant-design-vue'; import { TreeIcon } from './TreeIcon'; @@ -209,6 +210,16 @@ treeDataRef.value = props.treeData as TreeItem[]; }); + onMounted(() => { + if (props.defaultExpandLevel === '') return; + const level = parseInt(props.defaultExpandLevel); + if (level === -1) { + expandAll(true); + } else if (level > 0) { + state.expandedKeys = filterByLevel(level); + } + }); + watchEffect(() => { state.expandedKeys = props.expandedKeys; }); diff --git a/src/components/Tree/src/props.ts b/src/components/Tree/src/props.ts index 2d83aa88..59323067 100644 --- a/src/components/Tree/src/props.ts +++ b/src/components/Tree/src/props.ts @@ -23,6 +23,10 @@ export const basicProps = { checkStrictly: propTypes.bool, clickRowToExpand: propTypes.bool.def(true), checkable: propTypes.bool.def(false), + defaultExpandLevel: { + type: [String, Number] as PropType, + default: '', + }, replaceFields: { type: Object as PropType, diff --git a/src/views/demo/tree/data.ts b/src/views/demo/tree/data.ts index 585f8ce5..8fb40bf8 100644 --- a/src/views/demo/tree/data.ts +++ b/src/views/demo/tree/data.ts @@ -10,7 +10,7 @@ export const treeData: TreeItem[] = [ title: 'leaf', key: '0-0-1', children: [ - { title: 'leaf', key: '0-0-0-0' }, + { title: 'leaf', key: '0-0-0-0', children: [{ title: 'leaf', key: '0-0-0-0-1' }] }, { title: 'leaf', key: '0-0-0-1' }, ], }, diff --git a/src/views/demo/tree/index.vue b/src/views/demo/tree/index.vue index c6ecea62..7d3f5aa9 100644 --- a/src/views/demo/tree/index.vue +++ b/src/views/demo/tree/index.vue @@ -1,18 +1,24 @@