UNPKG

1.93 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.hover = hover;
7exports.unhover = unhover;
8
9var _dom = require("@testing-library/dom");
10
11var _utils = require("./utils");
12
13// includes `element`
14function getParentElements(element) {
15 const parentElements = [element];
16 let currentElement = element;
17
18 while ((currentElement = currentElement.parentElement) != null) {
19 parentElements.push(currentElement);
20 }
21
22 return parentElements;
23}
24
25function hover(element, init) {
26 if ((0, _utils.isLabelWithInternallyDisabledControl)(element)) return;
27 const parentElements = getParentElements(element).reverse();
28
29 _dom.fireEvent.pointerOver(element, init);
30
31 for (const el of parentElements) {
32 _dom.fireEvent.pointerEnter(el, init);
33 }
34
35 if (!element.disabled) {
36 _dom.fireEvent.mouseOver(element, (0, _utils.getMouseEventOptions)('mouseover', init));
37
38 for (const el of parentElements) {
39 _dom.fireEvent.mouseEnter(el, (0, _utils.getMouseEventOptions)('mouseenter', init));
40 }
41 }
42
43 _dom.fireEvent.pointerMove(element, init);
44
45 if (!element.disabled) {
46 _dom.fireEvent.mouseMove(element, (0, _utils.getMouseEventOptions)('mousemove', init));
47 }
48}
49
50function unhover(element, init) {
51 if ((0, _utils.isLabelWithInternallyDisabledControl)(element)) return;
52 const parentElements = getParentElements(element);
53
54 _dom.fireEvent.pointerMove(element, init);
55
56 if (!element.disabled) {
57 _dom.fireEvent.mouseMove(element, (0, _utils.getMouseEventOptions)('mousemove', init));
58 }
59
60 _dom.fireEvent.pointerOut(element, init);
61
62 for (const el of parentElements) {
63 _dom.fireEvent.pointerLeave(el, init);
64 }
65
66 if (!element.disabled) {
67 _dom.fireEvent.mouseOut(element, (0, _utils.getMouseEventOptions)('mouseout', init));
68
69 for (const el of parentElements) {
70 _dom.fireEvent.mouseLeave(el, (0, _utils.getMouseEventOptions)('mouseleave', init));
71 }
72 }
73}
\No newline at end of file