Skip to content

Commit 4c543db

Browse files
authored
fix(tree): preserve consumer drag text (#85)
Sync react-component/tree#1071.
1 parent 135449f commit 4c543db

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

packages/tree/src/TreeNode.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,11 @@ const TreeNode = defineComponent<TreeNodeProps>(
108108
const onDragStart = (e: DragEvent) => {
109109
e.stopPropagation()
110110
dragNodeHighlight.value = true
111-
context.onNodeDragStart(e, props)
112111
try {
113112
e.dataTransfer?.setData('text/plain', '')
114113
}
115114
catch {}
115+
context.onNodeDragStart(e, props)
116116
}
117117

118118
const onDragEnter = (e: DragEvent) => {

packages/tree/tests/index.test.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,26 @@ import { describe, expect, it, vi } from 'vitest'
33
import Tree from '../src'
44

55
describe('tree', () => {
6+
it('preserves drag text set by consumers', async () => {
7+
const dragData = new Map<string, string>()
8+
const dataTransfer = {
9+
setData: (type: string, value: string) => dragData.set(type, value),
10+
}
11+
const wrapper = mount(Tree, {
12+
props: {
13+
draggable: true,
14+
treeData: [{ key: '0', title: 'node' }] as any,
15+
onDragStart: ({ event }) => event.dataTransfer?.setData('text/plain', 'custom drag text'),
16+
},
17+
})
18+
19+
const event = new Event('dragstart', { bubbles: true })
20+
Object.defineProperty(event, 'dataTransfer', { value: dataTransfer })
21+
wrapper.get('.vc-tree-node-content-wrapper').element.dispatchEvent(event)
22+
23+
expect(dragData.get('text/plain')).toBe('custom drag text')
24+
})
25+
626
it('supports switcher semantic styles and class names', () => {
727
const wrapper = mount(() => (
828
<Tree

0 commit comments

Comments
 (0)