UNPKG

wix-style-react

Version:
135 lines (107 loc) 4.53 kB
'use strict'; 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;