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 74f7991

Browse files
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‎

Lines changed: 3 additions & 3 deletions
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‎

Lines changed: 20 additions & 0 deletions
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‎

Lines changed: 1 addition & 1 deletion
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‎

Lines changed: 6 additions & 6 deletions
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‎

Lines changed: 29 additions & 0 deletions
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)

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