diff options
author | Stas Vovk <stas@vovk.me> | 2015-10-16 14:21:51 +0300 |
---|---|---|
committer | Stas Vovk <stas@vovk.me> | 2015-10-16 14:21:51 +0300 |
commit | 79fcb9808421dd93342a9538d05dd2259f5dd14b (patch) | |
tree | 33a1a865144f280e37fde07a7c91ed8825c53801 /web/react/components/textbox.jsx | |
parent | 2bd81ff379acb347534e4d6a1a27624e0262deb0 (diff) | |
parent | 50a8e2bd4fa53c6bb2f12a03237be4fbaf259617 (diff) | |
download | chat-79fcb9808421dd93342a9538d05dd2259f5dd14b.tar.gz chat-79fcb9808421dd93342a9538d05dd2259f5dd14b.tar.bz2 chat-79fcb9808421dd93342a9538d05dd2259f5dd14b.zip |
Merge remote-tracking branch 'upstream/master' into PLT-637
Conflicts:
web/react/utils/constants.jsx
Diffstat (limited to 'web/react/components/textbox.jsx')
-rw-r--r-- | web/react/components/textbox.jsx | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/web/react/components/textbox.jsx b/web/react/components/textbox.jsx index 741dbcd5d..86bb42f62 100644 --- a/web/react/components/textbox.jsx +++ b/web/react/components/textbox.jsx @@ -9,6 +9,7 @@ const ErrorStore = require('../stores/error_store.jsx'); const Utils = require('../utils/utils.jsx'); const Constants = require('../utils/constants.jsx'); const ActionTypes = Constants.ActionTypes; +const KeyCodes = Constants.KeyCodes; export default class Textbox extends React.Component { constructor(props) { @@ -83,7 +84,7 @@ export default class Textbox extends React.Component { componentDidUpdate() { if (this.caret >= 0) { - Utils.setCaretPosition(React.findDOMNode(this.refs.message), this.caret); + Utils.setCaretPosition(ReactDOM.findDOMNode(this.refs.message), this.caret); this.caret = -1; } if (this.doProcessMentions) { @@ -97,7 +98,7 @@ export default class Textbox extends React.Component { if (!this.addedMention) { this.checkForNewMention(nextProps.messageText); } - const text = React.findDOMNode(this.refs.message).value; + const text = ReactDOM.findDOMNode(this.refs.message).value; if (nextProps.channelId !== this.props.channelId || nextProps.messageText !== text) { this.doProcessMentions = true; } @@ -117,11 +118,11 @@ export default class Textbox extends React.Component { } handleChange() { - this.props.onUserInput(React.findDOMNode(this.refs.message).value); + this.props.onUserInput(ReactDOM.findDOMNode(this.refs.message).value); } handleKeyPress(e) { - const text = React.findDOMNode(this.refs.message).value; + const text = ReactDOM.findDOMNode(this.refs.message).value; if (!this.refs.commands.isEmpty() && text.indexOf('/') === 0 && e.which === 13) { this.refs.commands.addFirstCommand(); @@ -130,7 +131,7 @@ export default class Textbox extends React.Component { } if (!this.doProcessMentions) { - const caret = Utils.getCaretPosition(React.findDOMNode(this.refs.message)); + const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message)); const preText = text.substring(0, caret); const lastSpace = preText.lastIndexOf(' '); const lastAt = preText.lastIndexOf('@'); @@ -144,17 +145,19 @@ export default class Textbox extends React.Component { } handleKeyDown(e) { - if (Utils.getSelectedText(React.findDOMNode(this.refs.message)) !== '') { + if (Utils.getSelectedText(ReactDOM.findDOMNode(this.refs.message)) !== '') { this.doProcessMentions = true; } - if (e.keyCode === 8) { + if (e.keyCode === KeyCodes.BACKSPACE) { this.handleBackspace(e); + } else if (this.props.onKeyDown) { + this.props.onKeyDown(e); } } handleBackspace() { - const text = React.findDOMNode(this.refs.message).value; + const text = ReactDOM.findDOMNode(this.refs.message).value; if (text.indexOf('/') === 0) { this.refs.commands.getSuggestedCommands(text.substring(0, text.length - 1)); } @@ -163,7 +166,7 @@ export default class Textbox extends React.Component { return; } - const caret = Utils.getCaretPosition(React.findDOMNode(this.refs.message)); + const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message)); const preText = text.substring(0, caret); const lastSpace = preText.lastIndexOf(' '); const lastAt = preText.lastIndexOf('@'); @@ -174,7 +177,7 @@ export default class Textbox extends React.Component { } checkForNewMention(text) { - const caret = Utils.getCaretPosition(React.findDOMNode(this.refs.message)); + const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message)); const preText = text.substring(0, caret); @@ -201,7 +204,7 @@ export default class Textbox extends React.Component { } addMention(name) { - const caret = Utils.getCaretPosition(React.findDOMNode(this.refs.message)); + const caret = Utils.getCaretPosition(ReactDOM.findDOMNode(this.refs.message)); const text = this.props.messageText; @@ -224,14 +227,14 @@ export default class Textbox extends React.Component { } addCommand(cmd) { - const elm = React.findDOMNode(this.refs.message); + const elm = ReactDOM.findDOMNode(this.refs.message); elm.value = cmd; this.handleChange(); } resize() { - const e = React.findDOMNode(this.refs.message); - const w = React.findDOMNode(this.refs.wrapper); + const e = ReactDOM.findDOMNode(this.refs.message); + const w = ReactDOM.findDOMNode(this.refs.wrapper); const prevHeight = $(e).height(); @@ -259,14 +262,14 @@ export default class Textbox extends React.Component { } handleFocus() { - const elm = React.findDOMNode(this.refs.message); + const elm = ReactDOM.findDOMNode(this.refs.message); if (elm.title === elm.value) { elm.value = ''; } } handleBlur() { - const elm = React.findDOMNode(this.refs.message); + const elm = ReactDOM.findDOMNode(this.refs.message); if (elm.value === '') { elm.value = elm.title; } @@ -318,5 +321,6 @@ Textbox.propTypes = { onUserInput: React.PropTypes.func.isRequired, onKeyPress: React.PropTypes.func.isRequired, onHeightChange: React.PropTypes.func, - createMessage: React.PropTypes.string.isRequired + createMessage: React.PropTypes.string.isRequired, + onKeyDown: React.PropTypes.func }; |