forked from Mirrors/gomuks
web/roomview: focus composer when typing elsewhere
This commit is contained in:
parent
d0cedfa3c3
commit
f238bb0285
3 changed files with 11 additions and 3 deletions
|
@ -31,7 +31,7 @@ const MessageComposer = ({ room }: MessageComposerProps) => {
|
||||||
client.sendMessage(room.roomID, text)
|
client.sendMessage(room.roomID, text)
|
||||||
.catch(err => window.alert("Failed to send message: " + err))
|
.catch(err => window.alert("Failed to send message: " + err))
|
||||||
}, [text, room, client])
|
}, [text, room, client])
|
||||||
return <div className="message-composer" onSubmit={sendMessage}>
|
return <div className="message-composer">
|
||||||
<textarea
|
<textarea
|
||||||
autoFocus
|
autoFocus
|
||||||
rows={text.split("\n").length}
|
rows={text.split("\n").length}
|
||||||
|
@ -43,8 +43,9 @@ const MessageComposer = ({ room }: MessageComposerProps) => {
|
||||||
}}
|
}}
|
||||||
onChange={evt => setText(evt.target.value)}
|
onChange={evt => setText(evt.target.value)}
|
||||||
placeholder="Send a message"
|
placeholder="Send a message"
|
||||||
|
id="message-composer"
|
||||||
/>
|
/>
|
||||||
<button type="submit">Send</button>
|
<button onClick={sendMessage}>Send</button>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ div.room-view {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: grid;
|
display: grid;
|
||||||
|
outline: none;
|
||||||
grid-template:
|
grid-template:
|
||||||
"header" 3rem
|
"header" 3rem
|
||||||
"messageview" 1fr
|
"messageview" 1fr
|
||||||
|
|
|
@ -39,8 +39,14 @@ const RoomHeader = ({ room }: RoomViewProps) => {
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const onKeyDownRoomView = (evt: React.KeyboardEvent) => {
|
||||||
|
if (evt.target === evt.currentTarget) {
|
||||||
|
document.getElementById("message-composer")?.focus()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const RoomView = ({ room }: RoomViewProps) => {
|
const RoomView = ({ room }: RoomViewProps) => {
|
||||||
return <div className="room-view">
|
return <div className="room-view" onKeyDown={onKeyDownRoomView} tabIndex={-1}>
|
||||||
<RoomHeader room={room}/>
|
<RoomHeader room={room}/>
|
||||||
<TimelineView room={room}/>
|
<TimelineView room={room}/>
|
||||||
<MessageComposer room={room}/>
|
<MessageComposer room={room}/>
|
||||||
|
|
Loading…
Add table
Reference in a new issue