Skip to content

Commit a2a7128

Browse files
committed
Release v3.0.0.
1 parent d0f242b commit a2a7128

File tree

5 files changed

+40
-21
lines changed

5 files changed

+40
-21
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
v2.4.1 - Fri, 06 Oct 2017 12:09:11 UTC
2+
--------------------------------------
3+
4+
5+
6+
17
v2.4.1 - Fri, 06 Oct 2017 13:23:42 UTC
28
--------------------------------------
39

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-modal",
3-
"version": "2.4.1",
3+
"version": "3.0.0",
44
"homepage": "https://github.com/reactjs/react-modal",
55
"authors": [
66
"Ryan Florence",

dist/react-modal.js

+31-18
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,7 @@ function totalCount() {
492492
Object.defineProperty(exports, "__esModule", {
493493
value: true
494494
});
495+
exports.canUseDOM = undefined;
495496

496497
var _exenv = __webpack_require__(20);
497498

@@ -503,8 +504,9 @@ var EE = _exenv2.default;
503504

504505
var SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};
505506

507+
var canUseDOM = exports.canUseDOM = EE.canUseDOM;
508+
506509
exports.default = SafeHTMLElement;
507-
module.exports = exports['default'];
508510

509511
/***/ }),
510512
/* 10 */
@@ -579,7 +581,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
579581
var portalClassName = exports.portalClassName = 'ReactModalPortal';
580582
var bodyOpenClassName = exports.bodyOpenClassName = 'ReactModal__Body--open';
581583

582-
var renderSubtreeIntoContainer = _reactDom2.default.unstable_renderSubtreeIntoContainer;
584+
var isReact16 = _reactDom2.default.createPortal !== undefined;
585+
var createPortal = isReact16 ? _reactDom2.default.createPortal : _reactDom2.default.unstable_renderSubtreeIntoContainer;
583586

584587
function getParentElement(parentSelector) {
585588
return parentSelector();
@@ -600,28 +603,36 @@ var Modal = function (_Component) {
600603
}
601604

602605
return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Modal.__proto__ || Object.getPrototypeOf(Modal)).call.apply(_ref, [this].concat(args))), _this), _this.removePortal = function () {
603-
_reactDom2.default.unmountComponentAtNode(_this.node);
606+
!isReact16 && _reactDom2.default.unmountComponentAtNode(_this.node);
604607
var parent = getParentElement(_this.props.parentSelector);
605608
parent.removeChild(_this.node);
609+
}, _this.portalRef = function (ref) {
610+
_this.portal = ref;
606611
}, _this.renderPortal = function (props) {
607-
_this.portal = renderSubtreeIntoContainer(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);
612+
var portal = createPortal(_this, _react2.default.createElement(_ModalPortal2.default, _extends({ defaultStyles: Modal.defaultStyles }, props)), _this.node);
613+
_this.portalRef(portal);
608614
}, _temp), _possibleConstructorReturn(_this, _ret);
609615
}
610616

611617
_createClass(Modal, [{
612618
key: 'componentDidMount',
613619
value: function componentDidMount() {
614-
this.node = document.createElement('div');
620+
if (!_safeHTMLElement.canUseDOM) return;
621+
622+
if (!isReact16) {
623+
this.node = document.createElement('div');
624+
}
615625
this.node.className = this.props.portalClassName;
616626

617627
var parent = getParentElement(this.props.parentSelector);
618628
parent.appendChild(this.node);
619629

620-
this.renderPortal(this.props);
630+
!isReact16 && this.renderPortal(this.props);
621631
}
622632
}, {
623633
key: 'componentWillReceiveProps',
624634
value: function componentWillReceiveProps(newProps) {
635+
if (!_safeHTMLElement.canUseDOM) return;
625636
var isOpen = newProps.isOpen;
626637
// Stop unnecessary renders if modal is remaining closed
627638

@@ -635,19 +646,20 @@ var Modal = function (_Component) {
635646
newParent.appendChild(this.node);
636647
}
637648

638-
this.renderPortal(newProps);
649+
!isReact16 && this.renderPortal(newProps);
639650
}
640651
}, {
641652
key: 'componentWillUpdate',
642653
value: function componentWillUpdate(newProps) {
654+
if (!_safeHTMLElement.canUseDOM) return;
643655
if (newProps.portalClassName !== this.props.portalClassName) {
644656
this.node.className = newProps.portalClassName;
645657
}
646658
}
647659
}, {
648660
key: 'componentWillUnmount',
649661
value: function componentWillUnmount() {
650-
if (!this.node || !this.portal) return;
662+
if (!_safeHTMLElement.canUseDOM || !this.node || !this.portal) return;
651663

652664
var state = this.portal.state;
653665
var now = Date.now();
@@ -666,23 +678,24 @@ var Modal = function (_Component) {
666678
}, {
667679
key: 'render',
668680
value: function render() {
669-
return null;
681+
if (!_safeHTMLElement.canUseDOM || !isReact16) {
682+
return null;
683+
}
684+
685+
if (!this.node && isReact16) {
686+
this.node = document.createElement('div');
687+
}
688+
689+
return createPortal(_react2.default.createElement(_ModalPortal2.default, _extends({ ref: this.portalRef,
690+
defaultStyles: Modal.defaultStyles
691+
}, this.props)), this.node);
670692
}
671693
}], [{
672694
key: 'setAppElement',
673695
value: function setAppElement(element) {
674696
ariaAppHider.setElement(element);
675697
}
676698

677-
/* eslint-disable no-console */
678-
679-
}, {
680-
key: 'injectCSS',
681-
value: function injectCSS() {
682-
undefined !== "production" && console.warn('React-Modal: injectCSS has been deprecated ' + 'and no longer has any effect. It will be removed in a later version');
683-
}
684-
/* eslint-enable no-console */
685-
686699
/* eslint-disable react/no-unused-prop-types */
687700

688701
/* eslint-enable react/no-unused-prop-types */

0 commit comments

Comments
 (0)