UNPKG

wix-style-react

Version:
120 lines (101 loc) 4.76 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _Input = _interopRequireDefault(require("../Input/Input.driver")); var _DropdownLayout = _interopRequireDefault(require("../DropdownLayout/DropdownLayout.driver")); var _Popover = _interopRequireDefault(require("../Popover/Popover.driver")); 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 inputWithOptionsDriverFactory = function inputWithOptionsDriverFactory(_ref) { var element = _ref.element, eventTrigger = _ref.eventTrigger; var dropdownLayoutSelector = "[data-hook=\"dropdown-layout-wrapper\"]"; var inputWrapperSelector = '[data-input-parent]'; var popoverTestkit = function popoverTestkit() { return (0, _Popover["default"])({ element: element }); }; var _inputWrapper = function inputWrapper() { return element && element.querySelector("".concat(inputWrapperSelector, " > *:first-child ")); }; var dropdownLayoutWrapper = function dropdownLayoutWrapper() { return popoverTestkit().getContentElement().querySelector(dropdownLayoutSelector).childNodes[0]; }; var inputDriver = (0, _Input["default"])({ element: _inputWrapper(), wrapper: _inputWrapper(), eventTrigger: eventTrigger }); var dropdownLayoutTestkit = function dropdownLayoutTestkit() { return (0, _DropdownLayout["default"])({ element: dropdownLayoutWrapper() }); }; var driver = { exists: function exists() { return !!element; }, /** Select an option by id. (If dropdown options is not opened yet, this will open it and click on the option) */ selectOptionById: function selectOptionById(id) { inputDriver.focus(); inputDriver.keyDown('ArrowDown'); dropdownLayoutTestkit().optionById(id).click(); }, isReadOnly: function isReadOnly() { return inputDriver.getReadOnly() && _inputWrapper().className.includes('readonly'); }, isEditable: function isEditable() { return !inputDriver.getReadOnly() && !inputDriver.getDisabled(); }, isDisabled: function isDisabled() { return !!inputDriver.getDisabled(); }, inputWrapper: function inputWrapper() { return _inputWrapper(); }, focus: function focus() { return inputDriver.focus(); }, blur: function blur() { return dropdownLayoutTestkit().mouseClickOutside(); }, pressKey: function pressKey(key) { return inputDriver.keyDown(key); }, isMenuOpen: function isMenuOpen() { return popoverTestkit().isContentElementExists(); }, outsideClick: function outsideClick() { return popoverTestkit().clickOutside(); } }; var dropdownLayoutDummy = (0, _DropdownLayout["default"])({ element: document.body }); return { exists: function exists() { return driver.exists(); }, driver: driver, inputDriver: inputDriver, dropdownLayoutDriver: Object.keys(dropdownLayoutDummy).reduce(function (prev, current) { return _objectSpread(_objectSpread({}, prev), {}, (0, _defineProperty2["default"])({}, current, function (args) { if (current === 'isShown' || current === 'exists') { return popoverTestkit().isContentElementExists(); } if (current === 'getDropdown' || current === 'getDropdownItem') { return popoverTestkit().isContentElementExists() ? dropdownLayoutTestkit()[current](args) : undefined; } !popoverTestkit().isContentElementExists() && inputDriver.keyDown('ArrowDown'); return dropdownLayoutTestkit()[current](args); })); }, {}) }; }; var _default = inputWithOptionsDriverFactory; exports["default"] = _default;