From af02a35b545c1859b14607c1d134bbe54b8b3aaa Mon Sep 17 00:00:00 2001 From: David Lu Date: Mon, 20 Jun 2016 11:15:27 -0400 Subject: fixed create channel modal not saving upon enter (#3363) --- webapp/components/new_channel_modal.jsx | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'webapp/components') diff --git a/webapp/components/new_channel_modal.jsx b/webapp/components/new_channel_modal.jsx index 45d7169db..138bee661 100644 --- a/webapp/components/new_channel_modal.jsx +++ b/webapp/components/new_channel_modal.jsx @@ -4,6 +4,8 @@ import $ from 'jquery'; import ReactDOM from 'react-dom'; import * as Utils from 'utils/utils.jsx'; +import Constants from 'utils/constants.jsx'; +import PreferenceStore from 'stores/preference_store.jsx'; import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'react-intl'; @@ -24,11 +26,16 @@ class NewChannelModal extends React.Component { this.handleSubmit = this.handleSubmit.bind(this); this.handleChange = this.handleChange.bind(this); + this.onEnterKeyDown = this.onEnterKeyDown.bind(this); + this.onPreferenceChange = this.onPreferenceChange.bind(this); + + this.ctrlSend = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter'); this.state = { displayNameError: '' }; } + componentWillReceiveProps(nextProps) { if (nextProps.show === true && this.props.show === false) { this.setState({ @@ -36,11 +43,32 @@ class NewChannelModal extends React.Component { }); } } + componentDidMount() { if (Utils.isBrowserIE()) { $('body').addClass('browser--ie'); } + document.addEventListener('keydown', this.onEnterKeyDown); + PreferenceStore.addChangeListener(this.onPreferenceChange); + } + + componentWillUnmount() { + document.removeEventListener('keydown', this.onEnterKeyDown); + PreferenceStore.removeChangeListener(this.onPreferenceChange); + } + + onPreferenceChange() { + this.ctrlSend = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter'); } + + onEnterKeyDown(e) { + if (this.ctrlSend && e.keyCode === Constants.KeyCodes.ENTER && e.ctrlKey) { + this.handleSubmit(e); + } else if (!this.ctrlSend && e.keyCode === Constants.KeyCodes.ENTER && !e.shiftKey && !e.altKey) { + this.handleSubmit(e); + } + } + handleSubmit(e) { e.preventDefault(); @@ -52,6 +80,7 @@ class NewChannelModal extends React.Component { this.props.onSubmitChannel(); } + handleChange() { const newData = { displayName: ReactDOM.findDOMNode(this.refs.display_name).value, @@ -59,6 +88,7 @@ class NewChannelModal extends React.Component { }; this.props.onDataChanged(newData); } + render() { var displayNameError = null; var serverError = null; -- cgit v1.2.3-1-g7c22