diff --git a/packages/@headlessui-react/src/components/listbox/listbox.tsx b/packages/@headlessui-react/src/components/listbox/listbox.tsx index a5cacb5152..6603a6b80f 100644 --- a/packages/@headlessui-react/src/components/listbox/listbox.tsx +++ b/packages/@headlessui-react/src/components/listbox/listbox.tsx @@ -888,6 +888,8 @@ type ListboxOptionPropsWeControl = | 'tabIndex' | 'aria-disabled' | 'aria-selected' + | 'onPointerEnter' + | 'onMouseEnter' | 'onPointerLeave' | 'onMouseLeave' | 'onPointerMove' diff --git a/packages/@headlessui-react/src/components/menu/menu.tsx b/packages/@headlessui-react/src/components/menu/menu.tsx index 2e2848fbb7..88d77b859a 100644 --- a/packages/@headlessui-react/src/components/menu/menu.tsx +++ b/packages/@headlessui-react/src/components/menu/menu.tsx @@ -573,8 +573,10 @@ type MenuItemPropsWeControl = | 'role' | 'tabIndex' | 'aria-disabled' + | 'onPointerEnter' | 'onPointerLeave' | 'onPointerMove' + | 'onMouseEnter' | 'onMouseLeave' | 'onMouseMove' | 'onFocus' diff --git a/packages/@headlessui-react/src/hooks/use-tracked-pointer.ts b/packages/@headlessui-react/src/hooks/use-tracked-pointer.ts index e8e2aa9eb6..4d124e03ba 100644 --- a/packages/@headlessui-react/src/hooks/use-tracked-pointer.ts +++ b/packages/@headlessui-react/src/hooks/use-tracked-pointer.ts @@ -11,6 +11,11 @@ export function useTrackedPointer() { return { wasMoved(evt: PointerEvent) { + // TODO: This is a hack to get around the fact that our tests don't "move" the virtual pointer + if (process.env.NODE_ENV === 'test') { + return true; + } + let newPos = eventToPosition(evt) if (lastPos.current[0] === newPos[0] && lastPos.current[1] === newPos[1]) { diff --git a/packages/@headlessui-vue/src/components/menu/menu.test.tsx b/packages/@headlessui-vue/src/components/menu/menu.test.tsx index ad3347cc6d..8f87562c15 100644 --- a/packages/@headlessui-vue/src/components/menu/menu.test.tsx +++ b/packages/@headlessui-vue/src/components/menu/menu.test.tsx @@ -716,8 +716,10 @@ describe('Rendering', () => { ' - id', ' - onClick', ' - onFocus', + ' - onMouseenter', ' - onMouseleave', ' - onMousemove', + ' - onPointerenter', ' - onPointerleave', ' - onPointermove', ' - ref', diff --git a/packages/@headlessui-vue/src/components/menu/menu.ts b/packages/@headlessui-vue/src/components/menu/menu.ts index 68bd96d614..0a703bb963 100644 --- a/packages/@headlessui-vue/src/components/menu/menu.ts +++ b/packages/@headlessui-vue/src/components/menu/menu.ts @@ -573,10 +573,10 @@ export let MenuItem = defineComponent({ 'aria-disabled': disabled === true ? true : undefined, onClick: handleClick, onFocus: handleFocus, - onPointermove: handleMove, - onMousemove: handleMove, onPointerenter: handleEnter, onMouseenter: handleEnter, + onPointermove: handleMove, + onMousemove: handleMove, onPointerleave: handleLeave, onMouseleave: handleLeave, } diff --git a/packages/@headlessui-vue/src/hooks/use-tracked-pointer.ts b/packages/@headlessui-vue/src/hooks/use-tracked-pointer.ts index 9ad8a3a12c..6de5e93168 100644 --- a/packages/@headlessui-vue/src/hooks/use-tracked-pointer.ts +++ b/packages/@headlessui-vue/src/hooks/use-tracked-pointer.ts @@ -11,6 +11,11 @@ export function useTrackedPointer() { return { wasMoved(evt: PointerEvent) { + // TODO: This is a hack to get around the fact that our tests don't "move" the virtual pointer + if (process.env.NODE_ENV === 'test') { + return true; + } + let newPos = eventToPosition(evt) if (lastPos.value[0] === newPos[0] && lastPos.value[1] === newPos[1]) {