Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7c0323a

Browse files
Merge pull request #110 from zl0110/dev
fix: issue #109
2 parents daf9227 + 29e3d8d commit 7c0323a

File tree

3 files changed

+29
-15
lines changed

3 files changed

+29
-15
lines changed

‎src/components/Tree.vue

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,10 +220,10 @@ export interface TreeProps {
220220
221221
/** 渲染节点数量,可见节点数大于此值且高度超过(容器可视高度能容纳节点数 + bufferNodeAmount)则不会渲染所有可见节点 */
222222
renderNodeAmount?: number,
223-
223+
224224
/** 根据节点最小高度计算数据总高度 */
225225
nodeMinHeight?: number,
226-
226+
227227
/** 当滚动到视野外的节点个数大于此值时刷新渲染节点 */
228228
bufferNodeAmount?: number,
229229
}
@@ -288,6 +288,7 @@ import { usePublicTreeAPI } from '../hooks/usePublicTreeAPI'
288288
import { FilterFunctionType } from '../store/tree-store'
289289
import { pickReadonly } from '../utils'
290290
import { useExpandAnimation } from '../hooks/useExpandAnimation'
291+
import {ArgumentsType} from "vitest";
291292
292293
const props = withDefaults(defineProps<TreeProps>(), DEFAULT_TREE_PROPS)
293294
@@ -677,6 +678,17 @@ const treeNodePropKeys = [
677678
678679
const treeNodeProps = reactive(pickReadonly(toRefs(props), ...treeNodePropKeys))
679680
681+
const setExpandExpose = (...args: ArgumentsType<typeof setExpand>) => {
682+
if (props.animation) {
683+
const node = getNode(args[0]);
684+
if(node) {
685+
expandAnimation.updateBeforeExpand(node)
686+
}
687+
}
688+
689+
setExpand(...args)
690+
}
691+
680692
defineExpose({
681693
setData,
682694
setChecked,
@@ -685,7 +697,7 @@ defineExpose({
685697
clearChecked,
686698
setSelected,
687699
clearSelected,
688-
setExpand,
700+
setExpand: setExpandExpose,
689701
setExpandKeys,
690702
setExpandAll,
691703
getCheckedNodes,

‎src/hooks/usePublicTreeAPI.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ITreeNodeOptions } from "../store/tree-node"
55
import { FilterFunctionType } from "../store/tree-store"
66
import { TreeProps } from "../components/Tree.vue"
77

8-
type IUsePublicTreeAPIProps = Required<Pick<TreeProps,
8+
type IUsePublicTreeAPIProps = Required<Pick<TreeProps,
99
'selectable' |
1010
'checkable' |
1111
'separator' |
@@ -82,8 +82,8 @@ export const usePublicTreeAPI = (
8282
key: TreeNodeKeyType,
8383
value: boolean,
8484
expandParent: boolean = true
85-
): void {
86-
nonReactive.store.setExpand(key, value, expandParent)
85+
): Promise<void> {
86+
returnnonReactive.store.setExpand(key, value, expandParent)
8787
}
8888
function setExpandKeys(keys: TreeNodeKeyType[], value: boolean): void {
8989
nonReactive.store.setExpandKeys(keys, value)

‎src/store/tree-store.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -366,13 +366,13 @@ export default class TreeStore extends TreeEventTarget {
366366
* @param triggerEvent 是否触发事件
367367
* @param triggerDataChange 是否触发 `data-change` 事件以通知外部刷新视图
368368
*/
369-
setExpand(
369+
asyncsetExpand(
370370
key: TreeNodeKeyType,
371371
value: boolean,
372372
expandParent: boolean = false,
373373
triggerEvent: boolean = true,
374374
triggerDataChange: boolean = true
375-
): void {
375+
): Promise<void> {
376376
const node = this.mapData[key]
377377
if (!node || (!expandParent && node.isLeaf)) return
378378

@@ -386,7 +386,7 @@ export default class TreeStore extends TreeEventTarget {
386386
if (triggerDataChange) {
387387
this.emit('visible-data-change')
388388
}
389-
new Promise((resolve, reject) => {
389+
awaitnew Promise((resolve, reject) => {
390390
const load = this.options.load as Function
391391
load(node, resolve, reject)
392392
})
@@ -446,7 +446,7 @@ export default class TreeStore extends TreeEventTarget {
446446
}
447447

448448
if (expandParent && node._parent && value) {
449-
this.setExpand(
449+
awaitthis.setExpand(
450450
node._parent[this.options.keyField],
451451
value,
452452
expandParent,
@@ -461,14 +461,15 @@ export default class TreeStore extends TreeEventTarget {
461461
* @param keys 展开的节点 key 数组
462462
* @param value 是否展开
463463
*/
464-
setExpandKeys(
464+
asyncsetExpandKeys(
465465
keys: TreeNodeKeyType[],
466466
value: boolean,
467467
triggerDataChange: boolean = true
468-
): void {
469-
keys.forEach(key => {
470-
this.setExpand(key, value, false, false, false)
471-
})
468+
): Promise<void> {
469+
470+
for (const key of keys) {
471+
await this.setExpand(key, value, false, false, false)
472+
}
472473

473474
if (triggerDataChange) {
474475
this.emit('visible-data-change')
@@ -1271,6 +1272,7 @@ export default class TreeStore extends TreeEventTarget {
12711272
* @param node 需要勾选的节点
12721273
*/
12731274
private checkParentNode(node: TreeNode): void {
1275+
if(!this.options.cascade) return
12741276
const length = node.children.length
12751277
if (!length) return
12761278
let hasChecked = false

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /