import type {Coords} from '@floating-ui/react-dom'; import {act, fireEvent, render, screen} from '@testing-library/react'; import {useState} from 'react'; import {useClientPoint, useFloating, useInteractions} from '../../src'; function expectLocation({x, y}: Coords) { expect(Number(screen.getByTestId('x')?.textContent)).toBe(x); expect(Number(screen.getByTestId('y')?.textContent)).toBe(y); expect(Number(screen.getByTestId('width')?.textContent)).toBe(0); expect(Number(screen.getByTestId('height')?.textContent)).toBe(0); } function App({ enabled = true, point, axis, }: { enabled?: boolean; point?: Coords; axis?: 'both' | 'x' | 'y'; }) { const [isOpen, setIsOpen] = useState(false); const {refs, elements, context} = useFloating({ open: isOpen, onOpenChange: setIsOpen, }); const clientPoint = useClientPoint(context, { enabled, ...point, axis, }); const {getReferenceProps, getFloatingProps} = useInteractions([clientPoint]); const rect = elements.reference?.getBoundingClientRect(); return ( <>
Reference
{isOpen && (
Floating
)}