MCPcopy
hub / github.com/adobe/react-spectrum / Inner

Function Inner

packages/react-aria/test/interactions/useHover.test.js:330–379  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

328 }
329
330 function Inner() {
331 let [show, setShow] = useState(true);
332 return show ? <button onClick={() => setShow(false)}>hide</button> : null;
333 }
334
335 let events = [];
336 let addEvent = e => events.push(e);
337 let res = render(
338 <Test
339 onHoverStart={addEvent}
340 onHoverEnd={addEvent}
341 onHoverChange={isHovering => addEvent({type: 'hoverchange', isHovering})}>
342 <Inner />
343 </Test>
344 );
345
346 let el = res.getByTestId('test');
347 fireEvent(el, pointerEvent('pointerover', {pointerType: 'mouse'}));
348 expect(el).toHaveAttribute('data-hovered', 'true');
349
350 let button = res.getByRole('button');
351 act(() => button.click());
352 expect(button).not.toBeInTheDocument();
353
354 // browser does not fire pointerout/pointerleave here.
355 // but it does fire pointerover on the new target.
356 fireEvent(document.body, pointerEvent('pointerover', {pointerType: 'mouse'}));
357 expect(el).not.toHaveAttribute('data-hovered');
358
359 expect(events).toEqual([
360 {
361 type: 'hoverstart',
362 target: el,
363 pointerType: 'mouse'
364 },
365 {
366 type: 'hoverchange',
367 isHovering: true
368 },
369 {
370 type: 'hoverend',
371 target: el,
372 pointerType: 'mouse'
373 },
374 {
375 type: 'hoverchange',
376 isHovering: false
377 }
378 ]);
379 });
380 });
381
382 describe('mouse events', function () {

Callers

nothing calls this directly

Calls 3

actFunction · 0.85
pointerEventFunction · 0.70
renderFunction · 0.50

Tested by

no test coverage detected