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
)}