wix-style-react
Version:
wix-style-react
72 lines (71 loc) • 3.24 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 inputAreaDriverFactory = _ref => {
var {
element,
eventTrigger
} = _ref;
var counterSelector = '[data-hook="counter"]';
var textArea = () => element.querySelector('textarea');
var name = () => textArea().getAttribute('name');
var statusExclamation = () => element.querySelector("[data-hook='".concat(_constants.dataHooks.tooltip, "']"));
var getTooltipDriver = dataHook => (0, _Tooltip.tooltipLegacyDriverFactory)({
element: element.querySelector("[data-hook=\"".concat(dataHook, "\"]")),
eventTrigger
});
return {
trigger: (_trigger, event) => _testUtils.default.Simulate[_trigger](textArea(), event),
focus: () => textArea().focus(),
enterText: text => {
textArea().value = text;
_testUtils.default.Simulate.change(textArea(), {
target: {
name: name(),
value: text
}
});
},
getValue: () => textArea().value,
getName: name,
getPlaceholder: () => textArea().placeholder,
getDefaultValue: () => textArea().defaultValue,
getRowsCount: () => textArea().rows,
getMaxLength: () => textArea().maxLength,
getTabIndex: () => textArea().tabIndex,
getReadOnly: () => textArea().readOnly,
getCursorLocation: () => textArea().selectionStart,
getResizable: () => element.hasAttribute(_constants.dataAttr.RESIZABLE),
getDisabled: () => element.hasAttribute(_constants.dataAttr.DISABLED) && textArea().disabled,
getRequired: () => textArea().required,
getHasCounter: () => !!element.querySelectorAll(counterSelector).length,
getCounterValue: () => element.querySelector(counterSelector).textContent,
hasExclamation: () => !!statusExclamation(),
isFocusedStyle: () => element.hasAttribute(_constants.dataAttr.FOCUS),
isSizeSmall: () => element.getAttribute(_constants.dataAttr.SIZE) === 'small',
isHoveredStyle: () => element.hasAttribute(_constants.dataAttr.HOVER),
isFocus: () => document.activeElement === textArea(),
exists: () => !!textArea(),
getStyle: () => textArea().style,
getAriaLabel: () => textArea().getAttribute('aria-label'),
getAriaControls: () => textArea().getAttribute('aria-controls'),
getAriaDescribedby: () => textArea().getAttribute('aria-describedby'),
// Status
/** Return true if the given status is displayed */
hasStatus: status => {
var statusElement = statusExclamation();
if (statusElement) {
return element.getAttribute(_constants.dataAttr.STATUS) === status && statusElement.getAttribute('data-status') === status;
}
return element.getAttribute(_constants.dataAttr.STATUS) === status;
},
/** If there's a status message, returns its text value */
getStatusMessage: () => getTooltipDriver('status-indicator-tooltip').getTooltipText()
};
};
var _default = exports.default = inputAreaDriverFactory;
//# sourceMappingURL=InputArea.driver.js.map