Autofocus chat input

This commit is contained in:
Jerko Steiner 2019-11-17 09:34:02 -03:00
parent 63bae9fc55
commit ef110e6fe2

View File

@ -29,6 +29,7 @@ export interface ChatProps {
export default class Chat extends React.PureComponent<ChatProps> { export default class Chat extends React.PureComponent<ChatProps> {
chatHistoryRef = React.createRef<HTMLDivElement>() chatHistoryRef = React.createRef<HTMLDivElement>()
inputRef = React.createRef<Input>()
scrollToBottom = () => { scrollToBottom = () => {
const chatHistoryRef = this.chatHistoryRef.current! const chatHistoryRef = this.chatHistoryRef.current!
@ -36,9 +37,16 @@ export default class Chat extends React.PureComponent<ChatProps> {
} }
componentDidMount () { componentDidMount () {
this.scrollToBottom() this.scrollToBottom()
this.focus()
} }
componentDidUpdate () { componentDidUpdate () {
this.scrollToBottom() this.scrollToBottom()
this.focus()
}
focus() {
if (this.props.visible) {
this.inputRef.current?.textArea.current?.focus()
}
} }
render () { render () {
const { messages, sendMessage } = this.props const { messages, sendMessage } = this.props
@ -103,7 +111,7 @@ export default class Chat extends React.PureComponent<ChatProps> {
</div> </div>
<Input sendMessage={sendMessage} /> <Input ref={this.inputRef} sendMessage={sendMessage} />
</div> </div>
) )
} }