wix-style-react
Version:
283 lines (226 loc) • 10.2 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.tooltipDriverFactory = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _TooltipUni = require("wix-ui-core/dist/src/components/tooltip/Tooltip.uni.driver");
var _unidriver = require("../../test/utils/unidriver");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
var tooltipDriverFactory = function tooltipDriverFactory(base, body) {
var coreTooltipDriver = (0, _TooltipUni.tooltipDriverFactory)(base, body);
return _objectSpread(_objectSpread({}, (0, _unidriver.baseUniDriverFactory)(base)), {}, {
/** returns true if trigger element exists on the DOM */
exists: coreTooltipDriver.exists,
/** returns true if tooltip element exists on the DOM */
tooltipExists: coreTooltipDriver.tooltipExists,
/** mouse over the target element */
mouseEnter: function () {
var _mouseEnter = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.t0 = base.type;
_context.next = _context.t0 === 'react' ? 3 : _context.t0 === 'puppeteer' ? 4 : 5;
break;
case 3:
return _context.abrupt("return", coreTooltipDriver.mouseEnter());
case 4:
return _context.abrupt("return", base.hover());
case 5:
return _context.abrupt("return");
case 6:
case "end":
return _context.stop();
}
}
}, _callee);
}));
function mouseEnter() {
return _mouseEnter.apply(this, arguments);
}
return mouseEnter;
}(),
/** mouse leaves the target element */
mouseLeave: function () {
var _mouseLeave = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
var _yield$baseUniDriverF, element;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.t0 = base.type;
_context3.next = _context3.t0 === 'react' ? 3 : _context3.t0 === 'puppeteer' ? 4 : 13;
break;
case 3:
return _context3.abrupt("return", coreTooltipDriver.mouseLeave());
case 4:
_context3.next = 6;
return (0, _unidriver.baseUniDriverFactory)(base).element();
case 6:
_yield$baseUniDriverF = _context3.sent;
element = _yield$baseUniDriverF.element;
_context3.next = 10;
return page.evaluate( /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(element) {
var event;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
event = new MouseEvent('mouseout', {
bubbles: true,
view: window,
cancelable: true
});
_context2.next = 3;
return element.dispatchEvent(event);
case 3:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}(), element);
case 10:
_context3.next = 12;
return page.waitFor(200);
case 12:
return _context3.abrupt("return");
case 13:
return _context3.abrupt("return");
case 14:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
function mouseLeave() {
return _mouseLeave.apply(this, arguments);
}
return mouseLeave;
}(),
/** returns tooltips content value in string */
getTooltipText: function () {
var _getTooltipText = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
var contentHook, contentSelector, element, text;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.t0 = base.type;
_context4.next = _context4.t0 === 'react' ? 3 : _context4.t0 === 'puppeteer' ? 4 : 19;
break;
case 3:
return _context4.abrupt("return", coreTooltipDriver.getTooltipText());
case 4:
_context4.next = 6;
return base.hover();
case 6:
_context4.next = 8;
return base.attr('data-content-hook');
case 8:
contentHook = _context4.sent;
contentSelector = "[data-content-element=\"".concat(contentHook, "\"]");
_context4.next = 12;
return body.$(contentSelector);
case 12:
element = _context4.sent;
_context4.next = 15;
return element.text();
case 15:
text = _context4.sent;
_context4.next = 18;
return tooltipDriverFactory(base, body).mouseLeave();
case 18:
return _context4.abrupt("return", text);
case 19:
return _context4.abrupt("return");
case 20:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
function getTooltipText() {
return _getTooltipText.apply(this, arguments);
}
return getTooltipText;
}(),
/** Clicks outside the tooltip element in order to dismiss it */
clickOutside: function () {
var _clickOutside = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.t0 = base.type;
_context5.next = _context5.t0 === 'react' ? 3 : _context5.t0 === 'puppeteer' ? 4 : 7;
break;
case 3:
return _context5.abrupt("return", coreTooltipDriver.clickOutside());
case 4:
_context5.next = 6;
return page.evaluate(function () {
document.querySelector('body').dispatchEvent(new MouseEvent('mousedown'));
document.querySelector('body').dispatchEvent(new MouseEvent('mouseup'));
});
case 6:
return _context5.abrupt("return");
case 7:
return _context5.abrupt("return");
case 8:
case "end":
return _context5.stop();
}
}
}, _callee5);
}));
function clickOutside() {
return _clickOutside.apply(this, arguments);
}
return clickOutside;
}(),
/**
* Checks whether tooltip has a given size
* @param {boolean} sizeName The tooltip size
* @return {Promise<boolean>}
*/
hasSize: function () {
var _hasSize = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(sizeName) {
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return base.attr("data-size");
case 2:
_context6.t0 = _context6.sent;
_context6.t1 = sizeName;
return _context6.abrupt("return", _context6.t0 === _context6.t1);
case 5:
case "end":
return _context6.stop();
}
}
}, _callee6);
}));
function hasSize(_x2) {
return _hasSize.apply(this, arguments);
}
return hasSize;
}()
});
};
exports.tooltipDriverFactory = tooltipDriverFactory;