Skip to content

Commit 5cc9107

Browse files
authored
Merge pull request #14 from github/bestra/file-attachment-dragged-event
Bubble dragover and dragenter events
2 parents f76fcae + e6bda71 commit 5cc9107

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/file-attachment-element.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ function onDragenter(event: DragEvent) {
7373
if (dragging) {
7474
clearTimeout(dragging)
7575
}
76+
7677
dragging = window.setTimeout(() => target.removeAttribute('hover'), 200)
7778

7879
const transfer = event.dataTransfer
@@ -81,7 +82,6 @@ function onDragenter(event: DragEvent) {
8182
transfer.dropEffect = 'copy'
8283
target.setAttribute('hover', '')
8384

84-
event.stopPropagation()
8585
event.preventDefault()
8686
}
8787

test/test.js

+30
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,36 @@ describe('file-attachment', function () {
142142
assert.equal('test.png', event.detail.attachments[0].file.name)
143143
assert.equal(0, input.files.length)
144144
})
145+
146+
it('bubbles the dragenter event after cancelling its default behavior', async function () {
147+
const dataTransfer = new DataTransfer()
148+
const file = new File(['hubot'], 'test.txt', {type: 'text/plain'})
149+
dataTransfer.items.add(file)
150+
151+
const dragEvent = new DragEvent('dragenter', {bubbles: true, cancelable: true, dataTransfer})
152+
153+
const listener = once('dragenter')
154+
input.dispatchEvent(dragEvent)
155+
156+
const event = await listener
157+
assert.equal(dragEvent, event)
158+
assert.equal(true, event.defaultPrevented)
159+
})
160+
161+
it('bubbles the dragover event after cancelling its default behavior', async function () {
162+
const dataTransfer = new DataTransfer()
163+
const file = new File(['hubot'], 'test.txt', {type: 'text/plain'})
164+
dataTransfer.items.add(file)
165+
166+
const dragEvent = new DragEvent('dragover', {bubbles: true, cancelable: true, dataTransfer})
167+
168+
const listener = once('dragover')
169+
input.dispatchEvent(dragEvent)
170+
171+
const event = await listener
172+
assert.equal(dragEvent, event)
173+
assert.equal(true, event.defaultPrevented)
174+
})
145175
})
146176
})
147177

0 commit comments

Comments
 (0)