Converted ChannelInfoModal to React-Bootstrap

Этот коммит содержится в:
hmhealey
2015-11-10 13:23:10 -05:00
родитель 590e7f903f
Коммит 66638c4f70
4 изменённых файлов: 53 добавлений и 89 удалений

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

@@ -5,8 +5,10 @@ const NavbarSearchBox = require('./search_bar.jsx');
const MessageWrapper = require('./message_wrapper.jsx'); const MessageWrapper = require('./message_wrapper.jsx');
const PopoverListMembers = require('./popover_list_members.jsx'); const PopoverListMembers = require('./popover_list_members.jsx');
const EditChannelPurposeModal = require('./edit_channel_purpose_modal.jsx'); const EditChannelPurposeModal = require('./edit_channel_purpose_modal.jsx');
const ChannelInfoModal = require('./channel_info_modal.jsx');
const ChannelInviteModal = require('./channel_invite_modal.jsx'); const ChannelInviteModal = require('./channel_invite_modal.jsx');
const ChannelMembersModal = require('./channel_members_modal.jsx'); const ChannelMembersModal = require('./channel_members_modal.jsx');
const ToggleModalButton = require('./toggle_modal_button.jsx');
const ChannelStore = require('../stores/channel_store.jsx'); const ChannelStore = require('../stores/channel_store.jsx');
const UserStore = require('../stores/user_store.jsx'); const UserStore = require('../stores/user_store.jsx');
@@ -180,15 +182,13 @@ export default class ChannelHeader extends React.Component {
key='view_info' key='view_info'
role='presentation' role='presentation'
> >
<a <ToggleModalButton
role='menuitem' role='menuitem'
data-toggle='modal' dialogType={ChannelInfoModal}
data-target='#channel_info' dialogProps={{channel}}
data-channelid={channel.id}
href='#'
> >
{'View Info'} {'View Info'}
</a> </ToggleModalButton>
</li> </li>
); );

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

@@ -1,88 +1,58 @@
// 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 ChannelStore = require('../stores/channel_store.jsx'); const Modal = require('./modal.jsx');
export default class CommandList extends React.Component { export default class ChannelInfoModal extends React.Component {
constructor(props) { render() {
super(props); let channel = this.props.channel;
if (!channel) {
this.state = { channel = {
channel_id: ChannelStore.getCurrentId() display_name: 'No Channel Found',
name: 'No Channel Found',
id: 'No Channel Found'
}; };
} }
componentDidMount() {
var self = this;
if (this.refs.modal) {
$(ReactDOM.findDOMNode(this.refs.modal)).on('show.bs.modal', function show(e) {
var button = e.relatedTarget;
self.setState({channel_id: $(button).attr('data-channelid')});
});
}
}
render() {
var channel = ChannelStore.get(this.state.channel_id);
if (!channel) {
channel = {};
channel.display_name = 'No Channel Found';
channel.name = 'No Channel Found';
channel.id = 'No Channel Found';
}
return ( return (
<div <Modal
className='modal fade' show={this.props.show}
ref='modal' onHide={this.props.onHide}
id='channel_info' onShow={this.onShow}
tabIndex='-1'
role='dialog'
aria-hidden='true'
> >
<div className='modal-dialog'> <Modal.Header closeButtton={true}>
<div className='modal-content'> {channel.display_name}
<div className='modal-header'> </Modal.Header>
<button <Modal.Body ref='modalBody'>
type='button'
className='close'
data-dismiss='modal'
aria-label='Close'
>
<span aria-hidden='true'>&times;</span>
</button>
<h4
className='modal-title'
id='myModalLabel'
>
<span className='name'>{channel.display_name}</span>
</h4>
</div>
<div className='modal-body'>
<div className='row form-group'> <div className='row form-group'>
<div className='col-sm-3 info__label'>Channel Name: </div> <div className='col-sm-3 info__label'>{'Channel Name:'}</div>
<div className='col-sm-9'>{channel.display_name}</div> <div className='col-sm-9'>{channel.display_name}</div>
</div> </div>
<div className='row form-group'> <div className='row form-group'>
<div className='col-sm-3 info__label'>Channel Handle:</div> <div className='col-sm-3 info__label'>{'Channel Handle:'}</div>
<div className='col-sm-9'>{channel.name}</div> <div className='col-sm-9'>{channel.name}</div>
</div> </div>
<div className='row'> <div className='row'>
<div className='col-sm-3 info__label'>Channel ID:</div> <div className='col-sm-3 info__label'>{'Channel ID:'}</div>
<div className='col-sm-9'>{channel.id}</div> <div className='col-sm-9'>{channel.id}</div>
</div> </div>
</div> </Modal.Body>
<div className='modal-footer'> <Modal.Footer>
<button <button
type='button' type='button'
className='btn btn-default' className='btn btn-default'
data-dismiss='modal' onClick={this.props.onHide}
>Close</button> >
</div> {'Close'}
</div> </button>
</div> </Modal.Footer>
</div> </Modal>
); );
} }
} }
ChannelInfoModal.propTypes = {
show: React.PropTypes.bool.isRequired,
onHide: React.PropTypes.func.isRequired,
channel: React.PropTypes.object.isRequired
};

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

@@ -5,7 +5,9 @@ const EditChannelPurposeModal = require('./edit_channel_purpose_modal.jsx');
const MessageWrapper = require('./message_wrapper.jsx'); const MessageWrapper = require('./message_wrapper.jsx');
const NotifyCounts = require('./notify_counts.jsx'); const NotifyCounts = require('./notify_counts.jsx');
const ChannelMembersModal = require('./channel_members_modal.jsx'); const ChannelMembersModal = require('./channel_members_modal.jsx');
const ChannelInfoModal = require('./channel_info_modal.jsx');
const ChannelInviteModal = require('./channel_invite_modal.jsx'); const ChannelInviteModal = require('./channel_invite_modal.jsx');
const ToggleModalButton = require('./toggle_modal_button.jsx');
const UserStore = require('../stores/user_store.jsx'); const UserStore = require('../stores/user_store.jsx');
const ChannelStore = require('../stores/channel_store.jsx'); const ChannelStore = require('../stores/channel_store.jsx');
@@ -104,15 +106,13 @@ export default class Navbar extends React.Component {
if (channel) { if (channel) {
var viewInfoOption = ( var viewInfoOption = (
<li role='presentation'> <li role='presentation'>
<a <ToggleModalButton
role='menuitem' role='menuitem'
data-toggle='modal' dialogType={ChannelInfoModal}
data-target='#channel_info' dialogProps={{channel}}
data-channelid={channel.id}
href='#'
> >
{'View Info'} {'View Info'}
</a> </ToggleModalButton>
</li> </li>
); );

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

@@ -19,7 +19,6 @@ var PostDeletedModal = require('../components/post_deleted_modal.jsx');
var ChannelNotificationsModal = require('../components/channel_notifications.jsx'); var ChannelNotificationsModal = require('../components/channel_notifications.jsx');
var TeamSettingsModal = require('../components/team_settings_modal.jsx'); var TeamSettingsModal = require('../components/team_settings_modal.jsx');
var TeamMembersModal = require('../components/team_members.jsx'); var TeamMembersModal = require('../components/team_members.jsx');
var ChannelInfoModal = require('../components/channel_info_modal.jsx');
var RemovedFromChannelModal = require('../components/removed_from_channel_modal.jsx'); var RemovedFromChannelModal = require('../components/removed_from_channel_modal.jsx');
var RegisterAppModal = require('../components/register_app_modal.jsx'); var RegisterAppModal = require('../components/register_app_modal.jsx');
var ImportThemeModal = require('../components/user_settings/import_theme_modal.jsx'); var ImportThemeModal = require('../components/user_settings/import_theme_modal.jsx');
@@ -117,11 +116,6 @@ function setupChannelPage(props) {
document.getElementById('channel_notifications_modal') document.getElementById('channel_notifications_modal')
); );
ReactDOM.render(
<ChannelInfoModal />,
document.getElementById('channel_info_modal')
);
ReactDOM.render( ReactDOM.render(
<MoreChannelsModal />, <MoreChannelsModal />,
document.getElementById('more_channels_modal') document.getElementById('more_channels_modal')