UNPKG

wix-style-react

Version:
115 lines (114 loc) 5.55 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _testUtils = _interopRequireDefault(require("react-dom/test-utils")); var _Tooltip = require("../Tooltip/Tooltip.driver"); var _constants = require("./constants"); var _DataAttr = _interopRequireDefault(require("./DataAttr")); var inputDriverFactory = _ref => { var { element, eventTrigger } = _ref; var input = element && element.querySelector('input'); var clearButton = element && element.querySelector("[data-hook=input-clear-button]"); var customAffixNode = element && element.querySelector("[data-hook=\"custom-affix\"]"); var iconAffixNode = element && element.querySelector("[data-hook=\"icon-affix\"]"); var menuArrowNode = element && element.querySelector("[data-hook=\"".concat(_constants.dataHooks.menuArrow, "\"]")); var getName = () => input.getAttribute('name'); var getType = () => input.getAttribute('type'); var getMaxLength = () => input.getAttribute('maxlength'); var getTooltipDriver = dataHook => (0, _Tooltip.tooltipLegacyDriverFactory)({ element: document.body.querySelector("[data-hook=\"".concat(dataHook, "\"]")), eventTrigger }); var driver = { trigger: (_trigger, event) => _testUtils.default.Simulate[_trigger](input, event), focus: options => { input.focus(options); _testUtils.default.Simulate.focus(input); }, blur: () => { input.blur(); _testUtils.default.Simulate.blur(input); }, getName, getMaxLength, getType, keyDown: key => _testUtils.default.Simulate.keyDown(input, { key }), click: () => _testUtils.default.Simulate.click(input), clickCustomAffix: () => _testUtils.default.Simulate.click(customAffixNode), clickClear: () => _testUtils.default.Simulate.click(clearButton), clickIconAffix: () => _testUtils.default.Simulate.click(iconAffixNode), clickMenuArrow: () => _testUtils.default.Simulate.click(menuArrowNode), mouseOver: () => _testUtils.default.Simulate.mouseOver(input), mouseOut: () => _testUtils.default.Simulate.mouseOut(input), clearText: () => driver.enterText(''), enterText: text => { if (driver.getReadOnly() || driver.isDisabled()) { return; } input.value = text; _testUtils.default.Simulate.change(input, { target: { name: getName(), type: getType(), value: text } }); }, getValue: () => input.value, getText: () => input.value, getPlaceholder: () => input.placeholder, getPattern: () => input.pattern, getDefaultValue: () => input.defaultValue, getTabIndex: () => input.tabIndex, getReadOnly: () => input.readOnly, getDisabled: () => input.disabled, getTextOverflow: () => input.style['text-overflow'], getAriaLabel: () => input.getAttribute('aria-label'), getAriaControls: () => input.getAttribute('aria-controls'), getAriaDescribedby: () => input.getAttribute('aria-describedby'), getAutocomplete: () => input.getAttribute('autocomplete'), getRequired: () => input.required, hasPrefix: () => element.hasAttribute(_DataAttr.default.PREFIX), hasSuffix: () => !!element.querySelector("[data-hook=\"".concat(_constants.dataHooks.suffixes, "\"]")), getClearButtonTooltipContent: () => getTooltipDriver(_constants.dataHooks.tooltip).getTooltipText(), prefixComponentExists: style => element.hasAttribute(_DataAttr.default.PREFIX) && !!element.querySelector(style), suffixComponentExists: style => !!element.querySelector("[data-hook=\"".concat(_constants.dataHooks.suffixes, "\"] ").concat(style)), getDataHook: () => element.getAttribute('data-hook'), getCustomAffix: () => customAffixNode.textContent, hasMenuArrow: () => !!menuArrowNode, hasClearButton: () => !!clearButton, isRTL: () => element.getAttribute('dir') === 'rtl', isFocusedStyle: () => element.hasAttribute(_DataAttr.default.FOCUS), isHoveredStyle: () => element.hasAttribute(_DataAttr.default.HOVER), isDisabled: () => element.hasAttribute(_DataAttr.default.DISABLED), isOfSize: size => element.getAttribute(_DataAttr.default.SIZE) === size, getSize: () => element.getAttribute(_DataAttr.default.SIZE), isFocus: () => document.activeElement === input, exists: () => !!(element && element.querySelector('input')), startComposing: () => _testUtils.default.Simulate.compositionStart(input), endComposing: () => _testUtils.default.Simulate.compositionEnd(input), getCursorLocation: () => input.selectionStart, getRootElementClasses: () => element.classList, getInputElementClasses: () => input.classList, hasRightBorderRadius: () => !element.hasAttribute(_DataAttr.default.RIGHTBORDERRADIUS), hasLeftBorderRadius: () => !element.hasAttribute(_DataAttr.default.LEFTBORDERRADIUS), isCustomInput: () => { return input.getAttribute('data-hook') === 'wsr-custom-input'; }, isMasked: () => input.getAttribute('data-mask') === 'true', // Status /** Return true if the given status is displayed */ hasStatus: status => element.getAttribute(_DataAttr.default.STATUS) === status, /** If there's a status message, returns its text value */ getStatusMessage: () => getTooltipDriver(_constants.dataHooks.statusIndicatorTooltip).getTooltipText() }; return driver; }; var _default = exports.default = inputDriverFactory; //# sourceMappingURL=Input.driver.js.map