Skip to content

Commit 74f7991

Browse files
authored
Merge pull request #69 from wsfe/feat/mouse-event
feat: add mouse event parameter
2 parents 7c3cb49 + 71fb76b commit 74f7991

File tree

5 files changed

+59
-10
lines changed

5 files changed

+59
-10
lines changed

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,9 @@ import '@wsfe/vue-tree/style.css'
101101
| select | 选中时触发(单选) | 被选中的节点信息 |
102102
| unselect | 取消选中时触发(单选) | 被取消选中的节点信息 |
103103
| selected-change | 选中/取消选中时触发(单选) | 被选中节点 |
104-
| click | 点击节点时触发 | 节点信息 |
105-
| node-dblclick | 双击节点时触发 | 节点信息 |
106-
| node-right-click | 右击节点时触发 | 节点信息 |
104+
| click | 点击节点时触发 | 节点信息, 鼠标事件 |
105+
| node-dblclick | 双击节点时触发 | 节点信息, 鼠标事件 |
106+
| node-right-click | 右击节点时触发 | 节点信息, 鼠标事件 |
107107
| node-dragstart | 开始拖拽节点时触发 | 节点信息, 拖拽事件对象 |
108108
| node-dragenter | dragenter 时触发 | 节点信息 , 拖拽事件对象, 事件触发的节点部位 `'before' \| 'body' \| 'after'` |
109109
| node-dragover | dragover 时触发 | 节点信息 , 拖拽事件对象, 事件触发的节点部位 `'before' \| 'body' \| 'after'` |

examples/Feature.vue

+20
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
ref="basicTreeRef"
1111
:data="basicUsage"
1212
:nodeClassName="node => `generated-class-${node.id}`"
13+
@click="handleClick"
14+
@node-dblclick="handleDblClick"
15+
@node-right-click="handleRightClick"
1316
/>
1417
</div>
1518
</div>
@@ -268,10 +271,27 @@ export default defineComponent({
268271
basicTreeRef.value.scrollTo(basicUsage.value[0].id, 0)
269272
}
270273
274+
const handleClick = (node: TreeNode, e: MouseEvent) => {
275+
console.log('click', node, e)
276+
console.log('click mouse position', e.x, e.y)
277+
}
278+
const handleDblClick = (node: TreeNode, e: MouseEvent) => {
279+
console.log('node-dblclick', node, e)
280+
console.log('node-dblclick mouse position', e.x, e.y)
281+
}
282+
const handleRightClick = (node: TreeNode, e: MouseEvent) => {
283+
e.preventDefault()
284+
console.log('node-right-click', node, e)
285+
console.log('node-right-click mouse position', e.x, e.y)
286+
}
287+
271288
return {
272289
// 基本用法
273290
basicUsage,
274291
basicTreeRef,
292+
handleClick,
293+
handleDblClick,
294+
handleRightClick,
275295
handleExpandAll,
276296
handleCollapseAll,
277297

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@wsfe/vue-tree",
3-
"version": "3.0.10",
3+
"version": "3.1.0",
44
"types": "./types",
55
"description": "A vue tree component using virtual list.",
66
"main": "./dist/v3/vue-tree.umd.js",

src/components/TreeNode.vue

+6-6
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,8 @@ export default defineComponent({
219219
emit('check', fullData.value)
220220
}
221221
222-
function handleSelect(): void {
223-
emit('click', fullData.value)
222+
function handleSelect(e: MouseEvent): void {
223+
emit('click', fullData.value, e)
224224
if (props.selectable) {
225225
if (props.disableAll || props.data?.disabled) return
226226
if (props.data?.selected && !props.unselectOnClick) return
@@ -232,12 +232,12 @@ export default defineComponent({
232232
}
233233
}
234234
235-
function handleDblclick(): void {
236-
emit('node-dblclick', fullData.value)
235+
function handleDblclick(e: MouseEvent): void {
236+
emit('node-dblclick', fullData.value, e)
237237
}
238238
239-
function handleRightClick(): void {
240-
emit('node-right-click', fullData.value)
239+
function handleRightClick(e: MouseEvent): void {
240+
emit('node-right-click', fullData.value, e)
241241
}
242242
243243
//#region Drag handlers

tests/unit/tree.spec.ts

+29
Original file line numberDiff line numberDiff line change
@@ -611,3 +611,32 @@ describe('节点拖拽测试', () => {
611611
})
612612
})
613613
})
614+
615+
describe('节点鼠标事件', () => {
616+
it('点击、双击与右键', done => {
617+
const data = genData().data
618+
const wrapper = mount(VTree as any, {
619+
propsData: {
620+
data,
621+
}
622+
})
623+
const vm = wrapper.vm
624+
625+
vm.$nextTick(() => {
626+
const treeNodes: any[] = wrapper.findAllComponents({ name: 'CTreeNode' })
627+
628+
treeNodes[0].find('.ctree-tree-node__title').trigger('click')
629+
treeNodes[0].find('.ctree-tree-node__title').trigger('dblclick')
630+
treeNodes[0].find('.ctree-tree-node__title').trigger('contextmenu')
631+
vm.$nextTick(() => {
632+
expect(wrapper.emitted('click')).toHaveLength(1)
633+
expect((wrapper.emitted('click')?.[0] as any)?.[1]).toBeInstanceOf(MouseEvent)
634+
expect(wrapper.emitted('node-dblclick')).toHaveLength(1)
635+
expect((wrapper.emitted('node-dblclick')?.[0] as any)?.[1]).toBeInstanceOf(MouseEvent)
636+
expect(wrapper.emitted('node-right-click')).toHaveLength(1)
637+
expect((wrapper.emitted('node-right-click')?.[0] as any)?.[1]).toBeInstanceOf(MouseEvent)
638+
done()
639+
})
640+
})
641+
})
642+
})

0 commit comments

Comments
 (0)