wix-style-react
Version:
wix-style-react
115 lines (114 loc) • 5.55 kB
JavaScript
;
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