Skip to content

Commit 8c6f68e

Browse files
committed
fix(event): assign pointer coords to MouseEvent
1 parent 63f7468 commit 8c6f68e

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/event/createEvent.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,14 @@ function initMouseEvent(
211211
button,
212212
buttons,
213213
relatedTarget,
214-
}: MouseEventInit & {x?: number; y?: number},
214+
offsetX,
215+
offsetY,
216+
pageX,
217+
pageY,
218+
}: MouseEventInit &
219+
Partial<
220+
Pick<MouseEvent, 'x' | 'y' | 'offsetX' | 'offsetY' | 'pageX' | 'pageY'>
221+
>,
215222
) {
216223
assignProps(event, {
217224
screenX: sanitizeNumber(screenX),
@@ -223,6 +230,10 @@ function initMouseEvent(
223230
button: sanitizeNumber(button),
224231
buttons: sanitizeNumber(buttons),
225232
relatedTarget,
233+
offsetX: sanitizeNumber(offsetX),
234+
offsetY: sanitizeNumber(offsetY),
235+
pageX: sanitizeNumber(pageX),
236+
pageY: sanitizeNumber(pageY),
226237
})
227238
}
228239

tests/pointer/move.ts

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

0 commit comments

Comments
 (0)