diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-03-30 10:05:26 -0400 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2016-03-30 10:05:26 -0400 |
commit | 2ab4581d5e658b22c4a957ec57bb3530f92ad66b (patch) | |
tree | 4202ebdcbc92905873a15d90a6fb68464bb1629f /webapp/components/channel_select.jsx | |
parent | fcc80818a8afb6f1e2f9974916f02d5fdeb72ec8 (diff) | |
parent | 6a101292c74d33e542e47f8e54fff5a5389bf2ef (diff) | |
download | chat-2ab4581d5e658b22c4a957ec57bb3530f92ad66b.tar.gz chat-2ab4581d5e658b22c4a957ec57bb3530f92ad66b.tar.bz2 chat-2ab4581d5e658b22c4a957ec57bb3530f92ad66b.zip |
Merge pull request #2561 from hmhealey/plt1736
PLT-1736 Initial Backstage Work
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..8622d1f57 --- /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.placeholder', '--- 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> + ); + } +} |