shengnian-editor
Version:
Shengnian React Rich Text Editor
140 lines (108 loc) • 4.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactDom = require('react-dom');
var _reactDom2 = _interopRequireDefault(_reactDom);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _Modal = require('./Modal.css');
var _Modal2 = _interopRequireDefault(_Modal);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Modal = function (_React$Component) {
(0, _inherits3.default)(Modal, _React$Component);
function Modal() {
var _ref;
(0, _classCallCheck3.default)(this, Modal);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var _this = (0, _possibleConstructorReturn3.default)(this, (_ref = Modal.__proto__ || (0, _getPrototypeOf2.default)(Modal)).call.apply(_ref, [this].concat(args)));
_this.handleClickInside = _this.handleClickInside.bind(_this);
_this.handleClickOutside = _this.handleClickOutside.bind(_this);
return _this;
}
(0, _createClass3.default)(Modal, [{
key: 'componentDidMount',
value: function componentDidMount() {
//create an element to append
this.modal = document.createElement('div');
//append that shit
document.body.appendChild(this.modal);
//call the render method to add custom styled div and children contents to appended element
this.renderModalContent(this.props);
}
}, {
key: 'componentWillReceiveProps',
value: function componentWillReceiveProps(newProps) {
this.renderModalContent(newProps);
}
}, {
key: 'componentWillUnmount',
value: function componentWillUnmount() {
//act like this shit was never here ever
_reactDom2.default.unmountComponentAtNode(this.modal);
document.body.removeChild(this.modal);
}
}, {
key: 'handleClickInside',
value: function handleClickInside(e) {
e.stopPropagation();
}
}, {
key: 'handleClickOutside',
value: function handleClickOutside() {
this.props.onClose();
}
}, {
key: 'renderModalContent',
value: function renderModalContent(props) {
//put something in the appended shit
// let cont;
var className = (0, _classnames2.default)(_Modal2.default.root, (0, _defineProperty3.default)({}, _Modal2.default.active, props.isActive));
_reactDom2.default.render(_react2.default.createElement(
'div',
{ className: className },
_react2.default.createElement('div', { className: _Modal2.default.overlay }),
_react2.default.createElement(
'div',
{ className: _Modal2.default.modal, onClick: this.handleClickOutside },
_react2.default.createElement(
'div',
{ className: _Modal2.default.modalInner, onClick: this.handleClickInside },
this.props.children
)
)
), this.modal);
// cont = document.getElementById('modal-container');
// if (props.isActive){
// console.log(this.modalDiv)
// this.modalDiv.classList.add(styles.active);
// } else {
// this.modalDiv.classList.remove(styles.active);
// }
}
}, {
key: 'render',
value: function render() {
//don't render anything here because we are appending to the body portal style ahhhh yissssss
return null;
}
}]);
return Modal;
}(_react2.default.Component);
exports.default = Modal;