Skip to content

Commit acc6065

Browse files
authored
fix: fix issue where clicking the collapse icon does not close the popover (opentiny#1477)
1 parent 11d52a0 commit acc6065

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

packages/plugins/page/src/Tree.vue

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
@drop="handleDrop($event, node)"
2626
@dragend="handleDragEnd"
2727
>
28-
<div class="content" @click="handleClickRow(node)">
28+
<div class="content" @click="handleClickRow($event, node)">
2929
<layer-lines :line-data="layerLine[rowIndex]" :level="node.level"></layer-lines>
30-
<div class="prefix-icon" @click.stop="handleSwitchCollapse(node)">
30+
<div class="prefix-icon" @click="handleSwitchCollapse(node)">
3131
<svg-icon v-if="node.rawData.isPage" :name="collapseMap[node.id] ? 'page-collection' : 'page'"></svg-icon>
3232
<svg-icon v-else :name="collapseMap[node.id] ? 'folder' : 'folder-wold'"></svg-icon>
3333
</div>
@@ -235,7 +235,13 @@ const layerLine = computed(() => {
235235
return result
236236
})
237237
238-
const handleClickRow = (node: TreeNode) => {
238+
const handleClickRow = (event: MouseEvent, node: TreeNode) => {
239+
// 点击事件来自折叠图标,不触发 clickRow 事件。点击事件仍然可以冒泡
240+
const currentTarget = event.currentTarget as HTMLElement
241+
if (currentTarget.querySelector('div.prefix-icon')?.contains(event.target as Node)) {
242+
return
243+
}
244+
239245
emit('clickRow', node)
240246
}
241247

0 commit comments

Comments
 (0)