wix-style-react
Version:
325 lines (261 loc) • 11.6 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.dropdownBaseDriverFactory = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _unidriver = require("../../test/utils/unidriver");
var _DropdownLayoutUni = require("../DropdownLayout/DropdownLayout.uni.driver");
var _PopoverUni = require("wix-ui-core/dist/src/components/popover/Popover.uni.driver");
var _PopoverCommon = _interopRequireDefault(require("../Popover/Popover.common.driver"));
var _DataAttr = require("../DropdownLayout/DataAttr");
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 dropdownBaseDriverFactory = function dropdownBaseDriverFactory(base, body) {
var byDataHook = function byDataHook(dataHook) {
return base.$("[data-hook=\"".concat(dataHook, "\"]"));
};
var getTargetElement = function getTargetElement(dataHook) {
return byDataHook(dataHook);
};
var getContentElement = /*#__PURE__*/function () {
var _ref = (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:
return _context.abrupt("return", (0, _PopoverCommon["default"])(base, body).getContentElement());
case 1:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return function getContentElement() {
return _ref.apply(this, arguments);
};
}();
var createDropdownLayoutDriver = /*#__PURE__*/function () {
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.t0 = _DropdownLayoutUni.dropdownLayoutDriverFactory;
_context2.next = 3;
return getContentElement();
case 3:
_context2.t1 = _context2.sent.$("[data-hook=\"dropdown-base-dropdownlayout\"]");
return _context2.abrupt("return", (0, _context2.t0)(_context2.t1));
case 5:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function createDropdownLayoutDriver() {
return _ref2.apply(this, arguments);
};
}();
return _objectSpread(_objectSpread({}, (0, _unidriver.baseUniDriverFactory)(base)), {}, {
/** Returns the target element */
clickTargetElement: function clickTargetElement(dataHook) {
return getTargetElement(dataHook).click();
},
/** Hover the target element */
hoverTargetElement: function hoverTargetElement(dataHook) {
return getTargetElement(dataHook).hover();
},
/** Returns `true` if the dropdown is being shown */
isDropdownShown: function isDropdownShown() {
return (0, _PopoverUni.testkit)(base, body).isContentElementExists();
},
/** Select a specific option (requires the DropdownBase to be opened) */
selectOption: function () {
var _selectOption = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(index) {
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return createDropdownLayoutDriver();
case 2:
return _context3.abrupt("return", _context3.sent.clickAtOption(index));
case 3:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
function selectOption(_x) {
return _selectOption.apply(this, arguments);
}
return selectOption;
}(),
/** Select a specific option by its data hook (requires the DropdownBase to be opened) */
selectOptionByDataHook: function () {
var _selectOptionByDataHook = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(dataHook) {
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return createDropdownLayoutDriver();
case 2:
return _context4.abrupt("return", _context4.sent.clickAtOptionByDataHook(dataHook));
case 3:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
function selectOptionByDataHook(_x2) {
return _selectOptionByDataHook.apply(this, arguments);
}
return selectOptionByDataHook;
}(),
/** Click outside of the component */
clickOutside: function clickOutside() {
return (0, _PopoverUni.testkit)(base, body).clickOutside();
},
/** Options count (requires the DropdownBase to be opened) */
optionsCount: function () {
var _optionsCount = (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.next = 2;
return createDropdownLayoutDriver();
case 2:
return _context5.abrupt("return", _context5.sent.optionsLength());
case 3:
case "end":
return _context5.stop();
}
}
}, _callee5);
}));
function optionsCount() {
return _optionsCount.apply(this, arguments);
}
return optionsCount;
}(),
optionContentAt: function () {
var _optionContentAt = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(position) {
var dropdownLayoutDriver, optionsDrivers, optionElement, option, nodeContent, contentIsNode;
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return createDropdownLayoutDriver();
case 2:
dropdownLayoutDriver = _context6.sent;
_context6.next = 5;
return dropdownLayoutDriver.options();
case 5:
optionsDrivers = _context6.sent;
_context6.next = 8;
return optionsDrivers[position].element();
case 8:
optionElement = _context6.sent;
_context6.next = 11;
return (0, _unidriver.findByHook)(optionElement, _DataAttr.DATA_HOOKS.OPTION);
case 11:
option = _context6.sent;
/*
Option content can be
1. node - <div>some text</div>
2. text - some text
*/
nodeContent = option.$$(':first-child');
_context6.next = 15;
return nodeContent.count();
case 15:
_context6.t0 = _context6.sent;
contentIsNode = _context6.t0 > 0;
if (!contentIsNode) {
_context6.next = 23;
break;
}
_context6.next = 20;
return nodeContent.get(0).getNative();
case 20:
return _context6.abrupt("return", _context6.sent);
case 23:
return _context6.abrupt("return", option.text());
case 24:
case "end":
return _context6.stop();
}
}
}, _callee6);
}));
function optionContentAt(_x3) {
return _optionContentAt.apply(this, arguments);
}
return optionContentAt;
}(),
/** Returns the selected option (requires the DropdownBase to be opened)*/
getSelectedOptionId: function () {
var _getSelectedOptionId = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
return _regenerator["default"].wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
_context7.next = 2;
return createDropdownLayoutDriver();
case 2:
return _context7.abrupt("return", _context7.sent.getSelectedOptionId());
case 3:
case "end":
return _context7.stop();
}
}
}, _callee7);
}));
function getSelectedOptionId() {
return _getSelectedOptionId.apply(this, arguments);
}
return getSelectedOptionId;
}(),
/** Returns the marked option (requires the DropdownBase to be opened)*/
getMarkedOption: function () {
var _getMarkedOption = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
return _regenerator["default"].wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
_context8.next = 2;
return createDropdownLayoutDriver();
case 2:
return _context8.abrupt("return", _context8.sent.markedOption());
case 3:
case "end":
return _context8.stop();
}
}
}, _callee8);
}));
function getMarkedOption() {
return _getMarkedOption.apply(this, arguments);
}
return getMarkedOption;
}(),
mouseEnter: function mouseEnter() {
return (0, _PopoverUni.testkit)(base, body).mouseEnter();
},
mouseLeave: function mouseLeave() {
return (0, _PopoverUni.testkit)(base, body).mouseLeave();
}
});
};
exports.dropdownBaseDriverFactory = dropdownBaseDriverFactory;