feat: automatically focus message input
This commit is contained in:
parent
cebb8dc93a
commit
f0a4404910
@ -1,4 +1,10 @@
|
|||||||
import { KeyboardEvent, SyntheticEvent, useState } from 'react'
|
import {
|
||||||
|
KeyboardEvent,
|
||||||
|
SyntheticEvent,
|
||||||
|
useEffect,
|
||||||
|
useRef,
|
||||||
|
useState,
|
||||||
|
} from 'react'
|
||||||
import FormControl from '@mui/material/FormControl'
|
import FormControl from '@mui/material/FormControl'
|
||||||
import Stack from '@mui/material/Stack'
|
import Stack from '@mui/material/Stack'
|
||||||
import TextField from '@mui/material/TextField'
|
import TextField from '@mui/material/TextField'
|
||||||
@ -14,8 +20,16 @@ export const MessageForm = ({
|
|||||||
onMessageSubmit,
|
onMessageSubmit,
|
||||||
isMessageSending,
|
isMessageSending,
|
||||||
}: MessageFormProps) => {
|
}: MessageFormProps) => {
|
||||||
|
const textFieldRef = useRef<HTMLInputElement>(null)
|
||||||
const [textMessage, setTextMessage] = useState('')
|
const [textMessage, setTextMessage] = useState('')
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const { current: textField } = textFieldRef
|
||||||
|
if (!textField) return
|
||||||
|
|
||||||
|
textField.focus()
|
||||||
|
}, [textFieldRef])
|
||||||
|
|
||||||
const canMessageBeSent = () => {
|
const canMessageBeSent = () => {
|
||||||
return textMessage.trim().length > 0 && !isMessageSending
|
return textMessage.trim().length > 0 && !isMessageSending
|
||||||
}
|
}
|
||||||
@ -55,6 +69,7 @@ export const MessageForm = ({
|
|||||||
onKeyPress={handleMessageKeyPress}
|
onKeyPress={handleMessageKeyPress}
|
||||||
size="medium"
|
size="medium"
|
||||||
placeholder="Your message"
|
placeholder="Your message"
|
||||||
|
inputRef={textFieldRef}
|
||||||
multiline
|
multiline
|
||||||
/>
|
/>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
|
Loading…
Reference in New Issue
Block a user