Skip to content

Commit 8528972

Browse files
authored
fix(event): assign pointer coords to MouseEvent (#1039)
1 parent 7b11b0e commit 8528972

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/event/createEvent.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,14 @@ function initMouseEvent(
219219
button,
220220
buttons,
221221
relatedTarget,
222-
}: MouseEventInit & {x?: number; y?: number},
222+
offsetX,
223+
offsetY,
224+
pageX,
225+
pageY,
226+
}: MouseEventInit &
227+
Partial<
228+
Pick<MouseEvent, 'x' | 'y' | 'offsetX' | 'offsetY' | 'pageX' | 'pageY'>
229+
>,
223230
) {
224231
assignProps(event, {
225232
screenX: sanitizeNumber(screenX),
@@ -231,6 +238,10 @@ function initMouseEvent(
231238
button: sanitizeNumber(button),
232239
buttons: sanitizeNumber(buttons),
233240
relatedTarget,
241+
offsetX: sanitizeNumber(offsetX),
242+
offsetY: sanitizeNumber(offsetY),
243+
pageX: sanitizeNumber(pageX),
244+
pageY: sanitizeNumber(pageY),
234245
})
235246
}
236247

tests/pointer/move.ts

+22
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,25 @@ test('move touch over elements', async () => {
107107
div - click: primary
108108
`)
109109
})
110+
111+
test('declare pointer coordinates', async () => {
112+
const {element, getEvents, user} = setup(`<div></div>`)
113+
114+
const coords: Partial<MouseEvent> = {
115+
x: 1,
116+
y: 2,
117+
offsetX: 3,
118+
offsetY: 4,
119+
pageX: 5,
120+
pageY: 6,
121+
screenX: 7,
122+
screenY: 8,
123+
}
124+
125+
await user.pointer({target: element, coords})
126+
127+
// .toEqual(expect.objectContaining) yields a misleading diff
128+
Object.entries(coords).forEach(([prop, value]) => {
129+
expect(getEvents('mouseover')[0]).toHaveProperty(prop, value)
130+
})
131+
})

0 commit comments

Comments
 (0)