UNPKG

wix-style-react

Version:
124 lines (107 loc) 4.25 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _Input = require('../Input/Input.driver'); var _Input2 = _interopRequireDefault(_Input); var _DropdownLayout = require('../DropdownLayout/DropdownLayout.driver'); var _DropdownLayout2 = _interopRequireDefault(_DropdownLayout); var _deprecationLog = require('../utils/deprecationLog'); var _deprecationLog2 = _interopRequireDefault(_deprecationLog); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var inputWithOptionsDriverFactory = function inputWithOptionsDriverFactory(_ref) { var element = _ref.element; var _inputWrapper = element && element.childNodes[0]; var inputDriver = element && (0, _Input2.default)({ element: _inputWrapper.childNodes[0], wrapper: _inputWrapper }); var dropdownLayoutDriver = element && (0, _DropdownLayout2.default)({ element: element.childNodes[1].childNodes[0] }); var createDeprecationMessageForKeyMethod = function createDeprecationMessageForKeyMethod(methodName) { return (0, _deprecationLog2.default)('InputWithOptions testkit method "' + methodName + '" is deprecated. Use "pressKey" with the appropriate key mame instead.'); }; var assertOptionsOpen = function assertOptionsOpen() { if (!dropdownLayoutDriver.isShown()) { inputDriver.focus(); inputDriver.keyDown('ArrowDown'); if (!dropdownLayoutDriver.isShown()) { throw new Error('Options dropdown should be open!'); } } }; 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) { // Although it is not necessary for options to be shown in order to simulate an option click. // We assert that the options ARE shown, so to simulate real user behavior. assertOptionsOpen(); dropdownLayoutDriver.optionById(id).click(); }, isReadOnly: function isReadOnly() { return inputDriver.getReadOnly() && _inputWrapper.className.includes('readonly'); }, inputWrapper: function inputWrapper() { return _inputWrapper; }, focus: function focus() { return inputDriver.focus(); }, blur: function blur() { return dropdownLayoutDriver.mouseClickOutside(); }, pressKey: function pressKey(key) { return inputDriver.keyDown(key); }, outsideClick: function outsideClick() { return document.body.dispatchEvent(new Event('mouseup', { cancelable: true })); }, isOptionWrappedToHighlighter: function isOptionWrappedToHighlighter(optionId) { var _dropdownLayoutDriver = dropdownLayoutDriver.optionById(optionId), optionElm = _dropdownLayoutDriver.element; return !!optionElm().querySelector('[data-hook=highlighter-' + optionId + ']'); }, // Deprecated key press methods pressDownKey: function pressDownKey() { createDeprecationMessageForKeyMethod('pressDownKey'); inputDriver.keyDown('ArrowDown'); }, pressUpKey: function pressUpKey() { createDeprecationMessageForKeyMethod('pressUpKey'); inputDriver.keyDown('ArrowUp'); }, pressAnyKey: function pressAnyKey() { createDeprecationMessageForKeyMethod('pressAnyKey'); inputDriver.keyDown('Any'); }, pressEnterKey: function pressEnterKey() { createDeprecationMessageForKeyMethod('pressEnterKey'); inputDriver.keyDown('Enter'); }, pressSpaceKey: function pressSpaceKey() { createDeprecationMessageForKeyMethod('pressSpaceKey'); inputDriver.keyDown(' '); }, pressTabKey: function pressTabKey() { createDeprecationMessageForKeyMethod('pressTabKey'); inputDriver.keyDown('Tab'); }, pressEscKey: function pressEscKey() { createDeprecationMessageForKeyMethod('pressEscKey'); inputDriver.keyDown('Escape'); } }; return { exists: function exists() { return driver.exists(); }, driver: driver, inputDriver: inputDriver, dropdownLayoutDriver: dropdownLayoutDriver }; }; exports.default = inputWithOptionsDriverFactory;