wix-style-react
Version:
wix-style-react
124 lines (107 loc) • 4.25 kB
JavaScript
;
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;