Added Modal base class that extends ReactBootstrap.Modal

Этот коммит содержится в:
hmhealey
2015-11-10 10:20:16 -05:00
родитель 1d7c449192
Коммит 0b52e85ba7
5 изменённых файлов: 59 добавлений и 20 удалений

Просмотреть файл

@@ -1,7 +1,7 @@
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information. // See License.txt for license information.
var Modal = ReactBootstrap.Modal; var Modal = require('./modal.jsx');
var UserStore = require('../stores/user_store.jsx'); var UserStore = require('../stores/user_store.jsx');
var ChannelStore = require('../stores/channel_store.jsx'); var ChannelStore = require('../stores/channel_store.jsx');
var AsyncClient = require('../utils/async_client.jsx'); var AsyncClient = require('../utils/async_client.jsx');
@@ -15,7 +15,6 @@ export default class AccessHistoryModal extends React.Component {
this.onAuditChange = this.onAuditChange.bind(this); this.onAuditChange = this.onAuditChange.bind(this);
this.handleMoreInfo = this.handleMoreInfo.bind(this); this.handleMoreInfo = this.handleMoreInfo.bind(this);
this.onHide = this.onHide.bind(this); this.onHide = this.onHide.bind(this);
this.onShow = this.onShow.bind(this);
this.formatAuditInfo = this.formatAuditInfo.bind(this); this.formatAuditInfo = this.formatAuditInfo.bind(this);
this.handleRevokedSession = this.handleRevokedSession.bind(this); this.handleRevokedSession = this.handleRevokedSession.bind(this);
@@ -44,11 +43,6 @@ export default class AccessHistoryModal extends React.Component {
componentDidMount() { componentDidMount() {
UserStore.addAuditsChangeListener(this.onAuditChange); UserStore.addAuditsChangeListener(this.onAuditChange);
} }
componentDidUpdate(prevProps) {
if (this.props.show && !prevProps.show) {
this.onShow();
}
}
componentWillUnmount() { componentWillUnmount() {
UserStore.removeAuditsChangeListener(this.onAuditChange); UserStore.removeAuditsChangeListener(this.onAuditChange);
} }
@@ -391,6 +385,7 @@ export default class AccessHistoryModal extends React.Component {
<Modal <Modal
show={this.props.show} show={this.props.show}
onHide={this.onHide} onHide={this.onHide}
onShow={this.onShow}
bsSize='large' bsSize='large'
> >
<Modal.Header closeButton={true}> <Modal.Header closeButton={true}>

Просмотреть файл

@@ -63,11 +63,6 @@ export default class ActivityLogModal extends React.Component {
componentDidMount() { componentDidMount() {
UserStore.addSessionsChangeListener(this.onListenerChange); UserStore.addSessionsChangeListener(this.onListenerChange);
} }
componentDidUpdate(prevProps) {
if (this.props.show && !prevProps.show) {
this.onShow();
}
}
componentWillUnmount() { componentWillUnmount() {
UserStore.removeSessionsChangeListener(this.onListenerChange); UserStore.removeSessionsChangeListener(this.onListenerChange);
} }
@@ -161,6 +156,7 @@ export default class ActivityLogModal extends React.Component {
return ( return (
<Modal <Modal
show={this.props.show} show={this.props.show}
onShow={this.onShow}
onHide={this.onHide} onHide={this.onHide}
bsSize='large' bsSize='large'
> >

Просмотреть файл

@@ -1,7 +1,7 @@
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information. // See License.txt for license information.
const Modal = ReactBootstrap.Modal; const Modal = require('./modal.jsx');
export default class ConfirmModal extends React.Component { export default class ConfirmModal extends React.Component {
constructor(props) { constructor(props) {

48
web/react/components/modal.jsx Обычный файл
Просмотреть файл

@@ -0,0 +1,48 @@
// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
export default class Modal extends ReactBootstrap.Modal {
constructor(props) {
super(props);
}
componentWillMount() {
if (this.props.show && this.props.onPreshow) {
this.props.onPreshow();
}
}
componentDidMount() {
super.componentDidMount();
if (this.props.show && this.props.onShow) {
this.props.onShow();
}
}
componentDidUpdate(prevProps) {
super.componentDidUpdate(prevProps);
if (this.props.show && !prevProps.show && this.props.onShow) {
this.props.onShow();
}
}
componentWillReceiveProps(nextProps) {
super.componentWillReceiveProps(nextProps);
if (nextProps.show && !this.props.show && this.props.onPreshow) {
this.props.onPreshow();
}
}
}
Modal.propTypes = {
...ReactBootstrap.Modal.propTypes,
// called before showing the dialog to allow for a state change before rendering
onPreshow: React.PropTypes.func,
// called after the dialog has been shown and rendered
onShow: React.PropTypes.func
};

Просмотреть файл

@@ -2,7 +2,7 @@
// See License.txt for license information. // See License.txt for license information.
const ConfirmModal = require('../confirm_modal.jsx'); const ConfirmModal = require('../confirm_modal.jsx');
const Modal = ReactBootstrap.Modal; const Modal = require('../modal.jsx');
const SettingsSidebar = require('../settings_sidebar.jsx'); const SettingsSidebar = require('../settings_sidebar.jsx');
const UserSettings = require('./user_settings.jsx'); const UserSettings = require('./user_settings.jsx');
@@ -10,6 +10,7 @@ export default class UserSettingsModal extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.handleShow = this.handleShow.bind(this);
this.handleHide = this.handleHide.bind(this); this.handleHide = this.handleHide.bind(this);
this.handleHidden = this.handleHidden.bind(this); this.handleHidden = this.handleHidden.bind(this);
this.handleCollapse = this.handleCollapse.bind(this); this.handleCollapse = this.handleCollapse.bind(this);
@@ -33,12 +34,10 @@ export default class UserSettingsModal extends React.Component {
this.requireConfirm = false; this.requireConfirm = false;
} }
componentDidUpdate(prevProps) { handleShow() {
if (!prevProps.show && this.props.show) { $(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 300);
$(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 300); if ($(window).width() > 768) {
if ($(window).width() > 768) { $(ReactDOM.findDOMNode(this.refs.modalBody)).perfectScrollbar();
$(ReactDOM.findDOMNode(this.refs.modalBody)).perfectScrollbar();
}
} }
} }
@@ -176,6 +175,7 @@ export default class UserSettingsModal extends React.Component {
<Modal <Modal
dialogClassName='settings-modal' dialogClassName='settings-modal'
show={this.props.show} show={this.props.show}
onShow={this.handleShow}
onHide={this.handleHide} onHide={this.handleHide}
onExited={this.handleHidden} onExited={this.handleHidden}
enforceFocus={this.state.enforceFocus} enforceFocus={this.state.enforceFocus}