Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80698 views
1
/**
2
* This file is provided by Facebook for testing and evaluation purposes
3
* only. Facebook reserves all rights not expressly granted.
4
*
5
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
8
* FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
9
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
10
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
11
*/
12
13
var ChatMessageActionCreators = require('../actions/ChatMessageActionCreators');
14
var React = require('react');
15
16
var ENTER_KEY_CODE = 13;
17
18
var MessageComposer = React.createClass({
19
20
propTypes: {
21
threadID: React.PropTypes.string.isRequired
22
},
23
24
getInitialState: function() {
25
return {text: ''};
26
},
27
28
render: function() {
29
return (
30
<textarea
31
className="message-composer"
32
name="message"
33
value={this.state.text}
34
onChange={this._onChange}
35
onKeyDown={this._onKeyDown}
36
/>
37
);
38
},
39
40
_onChange: function(event, value) {
41
this.setState({text: event.target.value});
42
},
43
44
_onKeyDown: function(event) {
45
if (event.keyCode === ENTER_KEY_CODE) {
46
event.preventDefault();
47
var text = this.state.text.trim();
48
if (text) {
49
ChatMessageActionCreators.createMessage(text, this.props.threadID);
50
}
51
this.setState({text: ''});
52
}
53
}
54
55
});
56
57
module.exports = MessageComposer;
58
59