Skip to content

Commit ae31438

Browse files
committed
Bubble original event rather than a new custom one
We decided we could use the `dragover` and `dragenter` events directly instead of wrapping them with a custom one. We're still calling `preventDefault()` so we won't accidentally trigger any native behavior downstream.
1 parent 312836e commit ae31438

File tree

2 files changed

+22
-21
lines changed

2 files changed

+22
-21
lines changed

src/file-attachment-element.ts

-11
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,6 @@ function onDragenter(event: DragEvent) {
7474
clearTimeout(dragging)
7575
}
7676

77-
const dragEvent = new CustomEvent('file-attachment-dragged', {
78-
bubbles: true,
79-
cancelable: true,
80-
detail: {
81-
dragEvent: event,
82-
target
83-
}
84-
})
85-
target.dispatchEvent(dragEvent)
86-
8777
dragging = window.setTimeout(() => target.removeAttribute('hover'), 200)
8878

8979
const transfer = event.dataTransfer
@@ -92,7 +82,6 @@ function onDragenter(event: DragEvent) {
9282
transfer.dropEffect = 'copy'
9383
target.setAttribute('hover', '')
9484

95-
event.stopPropagation()
9685
event.preventDefault()
9786
}
9887

test/test.js

+22-10
Original file line numberDiff line numberDiff line change
@@ -125,22 +125,34 @@ describe('file-attachment', function () {
125125
assert.equal(0, input.files.length)
126126
})
127127

128-
it('fires a file-attachment-dragged event on dragenter', async function () {
129-
const listener = once('file-attachment-dragged')
130-
const dragEvent = new Event('dragenter', {bubbles: true})
128+
it('bubbles the dragenter event after cancelling its default behavior', async function () {
129+
const dataTransfer = new DataTransfer()
130+
const file = new File(['hubot'], 'test.txt', {type: 'text/plain'})
131+
dataTransfer.items.add(file)
132+
133+
const dragEvent = new DragEvent('dragenter', {bubbles: true, cancelable: true, dataTransfer})
134+
135+
const listener = once('dragenter')
131136
input.dispatchEvent(dragEvent)
137+
132138
const event = await listener
133-
assert.equal(dragEvent, event.detail.dragEvent)
134-
assert.equal(fileAttachment, event.detail.target)
139+
assert.equal(dragEvent, event)
140+
assert.equal(true, event.defaultPrevented)
135141
})
136142

137-
it('fires a file-attachment-dragged event on dragover', async function () {
138-
const listener = once('file-attachment-dragged')
139-
const dragEvent = new Event('dragover', {bubbles: true})
143+
it('bubbles the dragover event after cancelling its default behavior', async function () {
144+
const dataTransfer = new DataTransfer()
145+
const file = new File(['hubot'], 'test.txt', {type: 'text/plain'})
146+
dataTransfer.items.add(file)
147+
148+
const dragEvent = new DragEvent('dragover', {bubbles: true, cancelable: true, dataTransfer})
149+
150+
const listener = once('dragover')
140151
input.dispatchEvent(dragEvent)
152+
141153
const event = await listener
142-
assert.equal(dragEvent, event.detail.dragEvent)
143-
assert.equal(fileAttachment, event.detail.target)
154+
assert.equal(dragEvent, event)
155+
assert.equal(true, event.defaultPrevented)
144156
})
145157
})
146158
})

0 commit comments

Comments
 (0)