wix-style-react
Version:
147 lines (131 loc) • 4.51 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _testUtils = _interopRequireDefault(require("react-dom/test-utils"));
var _Tooltip = require("wix-ui-core/dist/src/components/tooltip/Tooltip.driver");
var _constants = require("./constants");
var inputAreaDriverFactory = function inputAreaDriverFactory(_ref) {
var element = _ref.element,
eventTrigger = _ref.eventTrigger;
var textArea = function textArea() {
return element.querySelector('textarea');
};
var name = function name() {
return textArea().getAttribute('name');
};
var counterSelector = '[data-hook="counter"]';
return {
trigger: function trigger(_trigger, event) {
return _testUtils["default"].Simulate[_trigger](textArea(), event);
},
focus: function focus() {
return textArea().focus();
},
enterText: function enterText(text) {
textArea().value = text;
_testUtils["default"].Simulate.change(textArea(), {
target: {
name: name(),
value: text
}
});
},
getValue: function getValue() {
return textArea().value;
},
getName: name,
getPlaceholder: function getPlaceholder() {
return textArea().placeholder;
},
getDefaultValue: function getDefaultValue() {
return textArea().defaultValue;
},
getRowsCount: function getRowsCount() {
return textArea().rows;
},
getMaxLength: function getMaxLength() {
return textArea().maxLength;
},
getTabIndex: function getTabIndex() {
return textArea().tabIndex;
},
getReadOnly: function getReadOnly() {
return textArea().readOnly;
},
getCursorLocation: function getCursorLocation() {
return textArea().selectionStart;
},
getResizable: function getResizable() {
return element.hasAttribute(_constants.dataAttr.RESIZABLE);
},
getDisabled: function getDisabled() {
return element.hasAttribute(_constants.dataAttr.DISABLED) && textArea().disabled;
},
getRequired: function getRequired() {
return textArea().required;
},
getHasCounter: function getHasCounter() {
return !!element.querySelectorAll(counterSelector).length;
},
getCounterValue: function getCounterValue() {
return element.querySelector(counterSelector).textContent;
},
hasExclamation: function hasExclamation() {
return element.hasAttribute(_constants.dataAttr.STATUS);
},
isFocusedStyle: function isFocusedStyle() {
return element.hasAttribute(_constants.dataAttr.FOCUS);
},
isSizeSmall: function isSizeSmall() {
return element.getAttribute(_constants.dataAttr.SIZE) === 'small';
},
isHoveredStyle: function isHoveredStyle() {
return element.hasAttribute(_constants.dataAttr.HOVER);
},
isFocus: function isFocus() {
return document.activeElement === textArea();
},
exists: function exists() {
return !!textArea();
},
getStyle: function getStyle() {
return textArea().style;
},
getAriaLabel: function getAriaLabel() {
return textArea().getAttribute('aria-label');
},
getAriaControls: function getAriaControls() {
return textArea().getAttribute('aria-controls');
},
getAriaDescribedby: function getAriaDescribedby() {
return textArea().getAttribute('aria-describedby');
},
// Status
/** Return true if the given status is displayed */
hasStatus: function hasStatus(status) {
var statusEl = element.querySelector("[data-hook='".concat(_constants.dataHooks.tooltip, "']"));
return (statusEl && statusEl.getAttribute('data-status')) === status;
},
/** If there's a status message, returns its text value */
getStatusMessage: function getStatusMessage() {
var tooltipText = null;
var tooltipDriver = (0, _Tooltip.tooltipDriverFactory)({
element: element.querySelector('[data-hook="status-indicator-tooltip"]'),
eventTrigger: eventTrigger
});
if (tooltipDriver.exists()) {
tooltipDriver.mouseEnter();
var contentElement = tooltipDriver.getContentElement();
if (contentElement) {
tooltipText = contentElement.textContent;
}
}
return tooltipText;
}
};
};
var _default = inputAreaDriverFactory;
exports["default"] = _default;