2021-04-22 15:11:37 +10:00
|
|
|
import React, { ChangeEvent, KeyboardEvent } from 'react';
|
2021-04-19 13:33:23 +10:00
|
|
|
import { TextField } from '@material-ui/core';
|
|
|
|
|
|
|
|
|
|
interface Props {
|
|
|
|
|
messageHandler: (msg: string) => void;
|
2021-04-22 15:11:37 +10:00
|
|
|
sendMessage: () => void;
|
2021-04-19 13:33:23 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface State {
|
|
|
|
|
inputText: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default class MessageInput extends React.Component<Props, State> {
|
|
|
|
|
constructor(props: Props) {
|
|
|
|
|
super(props);
|
|
|
|
|
|
|
|
|
|
this.state = {
|
|
|
|
|
inputText: ''
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
messageHandler(event: ChangeEvent<HTMLInputElement>) {
|
2021-04-22 15:11:37 +10:00
|
|
|
this.setState({inputText: event.target.value})
|
2021-04-19 13:33:23 +10:00
|
|
|
this.props.messageHandler(event.target.value);
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-22 15:11:37 +10:00
|
|
|
keyPressHandler(event: KeyboardEvent<HTMLInputElement>) {
|
|
|
|
|
if (event.key === 'Enter') {
|
|
|
|
|
this.props.sendMessage()
|
|
|
|
|
this.setState({inputText: ''})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-04-19 13:33:23 +10:00
|
|
|
render() {
|
|
|
|
|
return (
|
|
|
|
|
<TextField variant='outlined'
|
2021-04-19 14:54:39 +10:00
|
|
|
label='Send a message'
|
2021-04-22 15:11:37 +10:00
|
|
|
value={this.state.inputText}
|
2021-04-19 14:54:39 +10:00
|
|
|
fullWidth
|
|
|
|
|
style={{ margin: 8 }}
|
|
|
|
|
margin="normal"
|
|
|
|
|
InputLabelProps={{
|
|
|
|
|
shrink: true,
|
|
|
|
|
}}
|
|
|
|
|
onChange={this.messageHandler.bind(this)}
|
2021-04-22 15:11:37 +10:00
|
|
|
onKeyPress={this.keyPressHandler.bind(this)}
|
2021-04-19 13:33:23 +10:00
|
|
|
/>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|