Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add pointer API #750

Merged
merged 13 commits into from
Oct 19, 2021
30 changes: 15 additions & 15 deletions src/__tests__/click.js
Original file line number Diff line number Diff line change
Expand Up @@ -370,15 +370,15 @@ test('fires mouse events with the correct properties', () => {
const {element, getClickEventsSnapshot} = setup('<div></div>')
userEvent.click(element)
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerover
pointerenter
pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
pointermove
pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
pointerdown
pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousedown - button=0; buttons=1; detail=1
pointerup
pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseup - button=0; buttons=1; detail=1
click - button=0; buttons=1; detail=1
`)
Expand All @@ -391,15 +391,15 @@ test('fires mouse events with custom button property', () => {
altKey: true,
})
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerover
pointerenter
pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
pointermove
pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
pointerdown
pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousedown - button=1; buttons=4; detail=1
pointerup
pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseup - button=1; buttons=4; detail=1
click - button=1; buttons=4; detail=1
`)
Expand All @@ -410,15 +410,15 @@ test('fires mouse events with custom buttons property', () => {

userEvent.click(element, {buttons: 4})
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerover
pointerenter
pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
pointermove
pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
pointerdown
pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousedown - button=1; buttons=4; detail=1
pointerup
pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseup - button=1; buttons=4; detail=1
click - button=1; buttons=4; detail=1
`)
Expand Down
42 changes: 21 additions & 21 deletions src/__tests__/dblclick.js
Original file line number Diff line number Diff line change
Expand Up @@ -208,20 +208,20 @@ test('fires mouse events with the correct properties', () => {
const {element, getClickEventsSnapshot} = setup('<div></div>')
userEvent.dblClick(element)
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerover
pointerenter
pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
pointermove
pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
pointerdown
pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousedown - button=0; buttons=1; detail=1
pointerup
pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseup - button=0; buttons=1; detail=1
click - button=0; buttons=1; detail=1
pointerdown
pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousedown - button=0; buttons=1; detail=2
pointerup
pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseup - button=0; buttons=1; detail=2
click - button=0; buttons=1; detail=2
dblclick - button=0; buttons=1; detail=2
Expand All @@ -235,20 +235,20 @@ test('fires mouse events with custom button property', () => {
altKey: true,
})
expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerover
pointerenter
pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
pointermove
pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
pointerdown
pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousedown - button=1; buttons=4; detail=1
pointerup
pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseup - button=1; buttons=4; detail=1
click - button=1; buttons=4; detail=1
pointerdown
pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousedown - button=1; buttons=4; detail=2
pointerup
pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseup - button=1; buttons=4; detail=2
click - button=1; buttons=4; detail=2
dblclick - button=1; buttons=4; detail=2
Expand All @@ -261,20 +261,20 @@ test('fires mouse events with custom buttons property', () => {
userEvent.dblClick(element, {buttons: 4})

expect(getClickEventsSnapshot()).toMatchInlineSnapshot(`
pointerover
pointerenter
pointerover - pointerId=undefined; pointerType=undefined; isPrimary=undefined
pointerenter - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseover - button=0; buttons=0; detail=0
mouseenter - button=0; buttons=0; detail=0
pointermove
pointermove - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousemove - button=0; buttons=0; detail=0
pointerdown
pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousedown - button=1; buttons=4; detail=1
pointerup
pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseup - button=1; buttons=4; detail=1
click - button=1; buttons=4; detail=1
pointerdown
pointerdown - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mousedown - button=1; buttons=4; detail=2
pointerup
pointerup - pointerId=undefined; pointerType=undefined; isPrimary=undefined
mouseup - button=1; buttons=4; detail=2
click - button=1; buttons=4; detail=2
dblclick - button=1; buttons=4; detail=2
Expand Down
12 changes: 11 additions & 1 deletion src/__tests__/helpers/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,15 @@ function isElement(target: EventTarget): target is Element {
}

function isMouseEvent(event: Event): event is MouseEvent {
return event.constructor.name === 'MouseEvent'
return (
event.constructor.name === 'MouseEvent' ||
event.type === 'click' ||
event.type.startsWith('mouse')
)
}

function isPointerEvent(event: Event): event is PointerEvent {
return event.type.startsWith('pointer')
}

function addListeners(
Expand Down Expand Up @@ -340,6 +348,8 @@ function addListeners(
const lines = getEvents().map(e =>
isMouseEvent(e)
? `${e.type} - button=${e.button}; buttons=${e.buttons}; detail=${e.detail}`
: isPointerEvent(e)
? `${e.type} - pointerId=${e.pointerId}; pointerType=${e.pointerType}; isPrimary=${e.isPrimary}`
: e.type,
)
return {snapshot: lines.join('\n')}
Expand Down