diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2016-03-28 15:19:59 -0400 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2016-03-29 15:18:26 -0400 |
commit | aa684f0b8b81aa576997dd26fb077882651830fc (patch) | |
tree | 3af03e39c930e640e184a6e085d32b582b198056 /webapp/components/channel_select.jsx | |
parent | 5e8ab52d23862e22886ddebecd3a455b0da076b0 (diff) | |
download | chat-aa684f0b8b81aa576997dd26fb077882651830fc.tar.gz chat-aa684f0b8b81aa576997dd26fb077882651830fc.tar.bz2 chat-aa684f0b8b81aa576997dd26fb077882651830fc.zip |
Added ChannelSelect component
Diffstat (limited to 'webapp/components/channel_select.jsx')
-rw-r--r-- | webapp/components/channel_select.jsx | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/webapp/components/channel_select.jsx b/webapp/components/channel_select.jsx new file mode 100644 index 000000000..b110b32da --- /dev/null +++ b/webapp/components/channel_select.jsx @@ -0,0 +1,79 @@ +// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; + +import Constants from 'utils/constants.jsx'; +import ChannelStore from 'stores/channel_store.jsx'; +import * as Utils from 'utils/utils.jsx'; + +export default class ChannelSelect extends React.Component { + static get propTypes() { + return { + onChange: React.PropTypes.func, + value: React.PropTypes.string + }; + } + + constructor(props) { + super(props); + + this.handleChannelChange = this.handleChannelChange.bind(this); + + this.state = { + channels: [] + }; + } + + componentWillMount() { + this.setState({ + channels: ChannelStore.getAll() + }); + + ChannelStore.addChangeListener(this.handleChannelChange); + } + + componentWillUnmount() { + ChannelStore.removeChangeListener(this.handleChannelChange); + } + + handleChannelChange() { + this.setState({ + channels: ChannelStore.getAll() + }); + } + + render() { + const options = [ + <option + key='' + value='' + > + {Utils.localizeMessage('channel-select.select', '--- Select a channel ---')} + </option> + ]; + + this.state.channels.forEach((channel) => { + if (channel.type !== Constants.DM_CHANNEL) { + options.push( + <option + key={channel.id} + value={channel.id} + > + {channel.display_name} + </option> + ); + } + }); + + return ( + <select + className='form-control' + value={this.props.value} + onChange={this.props.onChange} + > + {options} + </select> + ); + } +} |