diff --git a/frontend/src/components/Modal.jsx b/frontend/src/components/Modal.jsx index 1f641343ec594635684826ea1865b55ab6507578..9bd41a660ddd071ba23956d763536f10d5f1084b 100644 --- a/frontend/src/components/Modal.jsx +++ b/frontend/src/components/Modal.jsx @@ -1,18 +1,11 @@ import React, { Component, PropTypes } from "react"; import ReactDOM from "react-dom"; -import TimeoutTransitionGroup from "react-components/timeout-transition-group"; +import ReactCSSTransitionGroup from "react-addons-css-transition-group"; import OnClickOutsideWrapper from "./OnClickOutsideWrapper.jsx"; export default class Modal extends Component { - constructor(props, context) { - super(props, context); - this.state = { - isOpen: false - }; - } - static propTypes = { isOpen: PropTypes.bool }; @@ -22,21 +15,11 @@ export default class Modal extends Component { isOpen: true }; - componentWillReceiveProps(nextProps) { - this.setState({ - isOpen: nextProps.isOpen - }); - } - componentWillMount() { this._modalElement = document.createElement('span'); this._modalElement.className = 'ModalContainer'; this._modalElement.id = Math.floor((Math.random() * 698754) + 1); document.querySelector('body').appendChild(this._modalElement); - - // HACK: TimeoutTransitionGroup doesn't support "appear" transition - // NOTE: Use "appear" transition in ReactCSSTransitionGroup once upgraded to React 0.14+ - setTimeout(() => this.setState({ isOpen: this.props.isOpen }), 1); } componentDidMount() { @@ -72,13 +55,13 @@ export default class Modal extends Component { _renderPopover() { ReactDOM.render( - <TimeoutTransitionGroup transitionName="Modal" enterTimeout={250} leaveTimeout={250}> - { this.state.isOpen && + <ReactCSSTransitionGroup transitionName="Modal" transitionAppear={true} transitionAppearTimeout={250} transitionEnterTimeout={250} transitionLeaveTimeout={250}> + { this.props.isOpen && <div key="modal" className="Modal-backdrop" style={this.props.style}> {this._modalComponent()} </div> } - </TimeoutTransitionGroup> + </ReactCSSTransitionGroup> , this._modalElement); } diff --git a/frontend/src/components/modal/modal.css b/frontend/src/components/modal/modal.css index 479f459b346980746a7fe84300a96bb0a632043b..cc7480c43b0ea6c75d215278f46b255d16232f38 100644 --- a/frontend/src/components/modal/modal.css +++ b/frontend/src/components/modal/modal.css @@ -67,11 +67,13 @@ /* backdrop */ +.Modal-backdrop.Modal-appear, .Modal-backdrop.Modal-enter { transition: background-color 200ms ease-in-out; background-color: rgba(255, 255, 255, 0.01); } +.Modal-backdrop.Modal-appear-active, .Modal-backdrop.Modal-enter-active { background-color: rgba(255, 255, 255, 0.6); } @@ -87,12 +89,14 @@ /* modal */ +.Modal-backdrop.Modal-appear .Modal, .Modal-backdrop.Modal-enter .Modal { transition: opacity 200ms linear, transform 200ms ease-in-out; opacity: 0.01; transform: translate(-50%, -55%); } +.Modal-backdrop.Modal-appear-active .Modal, .Modal-backdrop.Modal-enter-active .Modal { opacity: 1; transform: translate(-50%, -50%); diff --git a/frontend/src/tutorial/PageFlag.jsx b/frontend/src/tutorial/PageFlag.jsx index 3b81a9687a77159ecd960736a8046f823a9eead6..1ddb9f49c57a5fa5f965cc81ffbddb55945a9b6a 100644 --- a/frontend/src/tutorial/PageFlag.jsx +++ b/frontend/src/tutorial/PageFlag.jsx @@ -1,6 +1,6 @@ import React, { Component, PropTypes } from "react"; -import TimeoutTransitionGroup from "react-components/timeout-transition-group"; +import ReactCSSTransitionGroup from "react-addons-css-transition-group"; import BodyComponent from "metabase/components/BodyComponent.jsx"; @@ -23,9 +23,9 @@ export default class PageFlag extends Component { render() { return ( - <TimeoutTransitionGroup transitionName="PageFlag" enterTimeout={250} leaveTimeout={250}> + <ReactCSSTransitionGroup transitionName="PageFlag" transitionEnterTimeout={250} transitionLeaveTimeout={250}> { this.props.target ? [this.renderPageFlag()] : [] } - </TimeoutTransitionGroup> + </ReactCSSTransitionGroup> ); } } diff --git a/package.json b/package.json index d8684afbba8631c532974feef0112b83a19dbb1b..a6e31f5dd4563e5fe7212af265373e37ea071efa 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "normalizr": "^1.4.0", "password-generator": "^2.0.1", "react": "^0.14.7", - "react-components": "^0.4.0", + "react-addons-css-transition-group": "^0.14.7", "react-dom": "^0.14.7", "react-draggable": "^1.1.3", "react-onclickout": "^2.0.4",