wix-style-react
Version:
91 lines (71 loc) • 2.65 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _testUtils = _interopRequireDefault(require("react-dom/test-utils"));
var modalDriverFactory = function modalDriverFactory(_ref) {
var _element = _ref.element;
var getPortal = function getPortal() {
var dataHook = _element && _element.getAttribute('data-hook');
return dataHook ? document.body.querySelector(".portal.portal-".concat(dataHook)) : document.body.querySelector('.portal');
};
var getOverlay = function getOverlay() {
return document.body.querySelector('.ReactModal__Overlay');
};
var getContent = function getContent() {
return document.body.querySelector('.ReactModal__Content');
};
var isOpen = function isOpen() {
return !!getContent();
};
var getCloseButton = function getCloseButton() {
return document.body.querySelector('[data-hook="modal-close-button"]');
};
return {
/** true if the modal is on the DOM */
exists: function exists() {
return !!getPortal();
},
element: function element() {
return _element;
},
/** true when the module is open */
isOpen: isOpen,
getChildBySelector: function getChildBySelector(selector) {
return getPortal().querySelector(selector);
},
/** true if the modal is scrollable */
isScrollable: function isScrollable() {
return !!getPortal().querySelector('[data-scrollable]');
},
closeButtonExists: function closeButtonExists() {
return !!getCloseButton();
},
/** click on the modal overlay (helpful for testing if the modal is dismissed) */
clickOnOverlay: function clickOnOverlay() {
var overlay = getOverlay();
_testUtils["default"].Simulate.click(overlay);
},
clickOnCloseButton: function clickOnCloseButton() {
var button = getCloseButton();
_testUtils["default"].Simulate.click(button);
},
/** returns the element of the modal content (helpful to initialize a layout testkit) */
getContent: getContent,
/** returns the style of the modal content */
getContentStyle: function getContentStyle() {
return getContent().style;
},
/** returns the modal aria-label value as given in contentLabel property */
getContentLabel: function getContentLabel() {
return getContent().getAttribute('aria-label');
},
getZIndex: function getZIndex() {
return getOverlay().style['z-index'];
}
};
};
var _default = modalDriverFactory;
exports["default"] = _default;