js-waku/web-chat/src/MessageInput.tsx

51 lines
1.2 KiB
TypeScript
Raw Normal View History

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
/>
);
}
}