wix-style-react
Version:
wix-style-react
135 lines (107 loc) • 4.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _testUtils = require('react-dom/test-utils');
var _testUtils2 = _interopRequireDefault(_testUtils);
var _RichTextArea = require('./RichTextArea.scss');
var _RichTextArea2 = _interopRequireDefault(_RichTextArea);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var richTextAreaDriverFactory = function richTextAreaDriverFactory(_ref) {
var element = _ref.element,
wrapper = _ref.wrapper,
component = _ref.component;
var getButtons = function getButtons() {
return [].concat(_toConsumableArray(element.querySelectorAll('[data-hook*="rich-text-area-button"]')));
};
var getEditorWrapper = function getEditorWrapper() {
return element.querySelector('[data-hook=editor-wrapper]');
};
var getButtonType = function getButtonType(button) {
return button.getAttribute('data-hook').replace(/^rich-text-area-button-/, '');
};
var getImage = function getImage() {
return element.querySelector('[data-hook=editor-image]');
};
var getButtonByType = function getButtonByType(type) {
return getButtons().find(function (button) {
return getButtonType(button) === type;
});
};
var clickButtonByType = function clickButtonByType(type) {
return function () {
return _testUtils2.default.Simulate.mouseDown(getButtonByType(type));
};
};
var getDefaultBlock = function getDefaultBlock() {
return element.querySelector("[data-key='defaultBlock']");
};
return {
/** returns if the element exists */
exists: function exists() {
return !!element;
},
/** returns an array with the button type names */
getButtonTypes: function getButtonTypes() {
return getButtons().map(getButtonType);
},
/** click the bold button */
clickBoldButton: clickButtonByType('bold'),
/** click the italic button */
clickItalicButton: clickButtonByType('italic'),
/** click the underline button */
clickUnderlineButton: clickButtonByType('underline'),
/** click the image button */
clickImageButton: clickButtonByType('image'),
/** click the unordered list button */
clickUnorderedListButton: clickButtonByType('unordered-list'),
/** click the ordered list button */
clickOrderedListButton: clickButtonByType('ordered-list'),
/** returns the text content of the editor */
getContent: function getContent() {
return element.childNodes[1].textContent;
},
/** enters the supplied text to the editor */
enterText: function enterText(text) {
var props = { value: text, isAppend: true };
var ClonedWithProps = _react2.default.cloneElement.apply(_react2.default, [component, Object.assign({}, component.props, props)].concat(_toConsumableArray(component.props.children || [])));
_reactDom2.default.render(_react2.default.createElement(
'div',
{ ref: function ref(r) {
return element = r;
} },
ClonedWithProps
), wrapper);
},
/** returns if the error indicator is visible */
isErrorIndicatorVisible: function isErrorIndicatorVisible() {
return Boolean(element.classList.contains(_RichTextArea2.default.withError));
},
/** returns if disabled */
isDisabled: function isDisabled() {
return getButtons().every(function (button) {
return button.classList.contains(_RichTextArea2.default.disabled);
}) && element.childNodes[1].classList.contains(_RichTextArea2.default.disabled);
},
isImageExist: function isImageExist() {
return !!getImage();
},
/** returns if the add image button exists */
isAddImageButtonExist: function isAddImageButtonExist() {
return !!getButtonByType('image');
},
/** returns if the editor is resizable */
isResizable: function isResizable() {
return getEditorWrapper().classList.contains(_RichTextArea2.default.resizable);
},
isDefaultBlockExist: function isDefaultBlockExist() {
return getDefaultBlock();
}
};
};
exports.default = richTextAreaDriverFactory;