Add typing outside focus on msg feild (#112)

Signed-off-by: Ajay Bura <ajbura@gmail.com>
This commit is contained in:
Ajay Bura 2021-12-13 14:31:43 +05:30
parent 6d5d40b8e3
commit 5797a1d8e5
6 changed files with 23 additions and 40 deletions

View file

@ -49,7 +49,7 @@
&::before { &::before {
position: absolute; position: absolute;
top: 0; top: 0;
z-index: 99;
content: ''; content: '';
display: inline-block; display: inline-block;
width: 100%; width: 100%;

View file

@ -220,14 +220,6 @@ function RoomViewCmdBar({ roomId, roomTimeline, viewEvent }) {
} }
deactivateCmd(); deactivateCmd();
} }
function executeCmd() {
if (cmd.suggestions.length === 0) return;
fireCmd({
prefix: cmd.prefix,
option: cmd.option,
result: cmd.suggestions[0],
});
}
function listenKeyboard(event) { function listenKeyboard(event) {
const { activeElement } = document; const { activeElement } = document;
@ -258,13 +250,11 @@ function RoomViewCmdBar({ roomId, roomTimeline, viewEvent }) {
useEffect(() => { useEffect(() => {
if (cmd !== null) document.body.addEventListener('keydown', listenKeyboard); if (cmd !== null) document.body.addEventListener('keydown', listenKeyboard);
viewEvent.on('cmd_process', processCmd); viewEvent.on('cmd_process', processCmd);
viewEvent.on('cmd_exe', executeCmd);
asyncSearch.on(asyncSearch.RESULT_SENT, displaySuggestions); asyncSearch.on(asyncSearch.RESULT_SENT, displaySuggestions);
return () => { return () => {
if (cmd !== null) document.body.removeEventListener('keydown', listenKeyboard); if (cmd !== null) document.body.removeEventListener('keydown', listenKeyboard);
viewEvent.removeListener('cmd_process', processCmd); viewEvent.removeListener('cmd_process', processCmd);
viewEvent.removeListener('cmd_exe', executeCmd);
asyncSearch.removeListener(asyncSearch.RESULT_SENT, displaySuggestions); asyncSearch.removeListener(asyncSearch.RESULT_SENT, displaySuggestions);
}; };
}, [cmd]); }, [cmd]);

View file

@ -243,10 +243,7 @@ function RoomViewInput({
const handleKeyDown = (e) => { const handleKeyDown = (e) => {
if (e.keyCode === 13 && e.shiftKey === false) { if (e.keyCode === 13 && e.shiftKey === false) {
e.preventDefault(); e.preventDefault();
sendMessage();
if (isCmdActivated) {
viewEvent.emit('cmd_exe');
} else sendMessage();
} }
}; };
@ -298,7 +295,7 @@ function RoomViewInput({
function renderInputs() { function renderInputs() {
if (!canISend) { if (!canISend) {
return ( return (
<Text className="room-input__disallowed">You do not have permission to post to this room</Text> <Text className="room-input__alert">You do not have permission to post to this room</Text>
); );
} }
return ( return (
@ -312,6 +309,7 @@ function RoomViewInput({
<ScrollView autoHide> <ScrollView autoHide>
<Text className="room-input__textarea-wrapper"> <Text className="room-input__textarea-wrapper">
<TextareaAutosize <TextareaAutosize
id="message-textarea"
ref={textAreaRef} ref={textAreaRef}
onChange={handleMsgTyping} onChange={handleMsgTyping}
onPaste={handlePaste} onPaste={handlePaste}
@ -385,9 +383,7 @@ function RoomViewInput({
{ attachment !== null && attachFile() } { attachment !== null && attachFile() }
<form className="room-input" onSubmit={(e) => { e.preventDefault(); }}> <form className="room-input" onSubmit={(e) => { e.preventDefault(); }}>
{ {
roomTimeline.room.isSpaceRoom() renderInputs()
? <Text className="room-input__space" variant="b1">Spaces are yet to be implemented</Text>
: renderInputs()
} }
</form> </form>
</> </>

View file

@ -1,18 +1,12 @@
.room-input { .room-input {
padding: var(--sp-extra-tight) calc(var(--sp-normal) - 2px); padding: var(--sp-extra-tight) calc(var(--sp-normal) - 2px);
display: flex; display: flex;
min-height: 48px; min-height: 56px;
&__disallowed { &__alert {
flex: 1;
text-align: center;
}
&__space {
min-width: 0;
align-self: center;
margin: auto; margin: auto;
padding: 0 var(--sp-tight); padding: 0 var(--sp-tight);
text-align: center;
} }
&__input-container { &__input-container {
@ -31,17 +25,6 @@
margin: 0 var(--sp-extra-tight); margin: 0 var(--sp-extra-tight);
} }
& .btn-cmd-esc {
display: none;
margin: 0 var(--sp-extra-tight);
padding: var(--sp-ultra-tight) var(--sp-extra-tight);
background-color: var(--bg-surface);
border-radius: calc(var(--bo-radius) / 2);
box-shadow: var(--bs-surface-border);
cursor: pointer;
& .text { color: var(--tc-surface-normal); }
}
& .scrollbar { & .scrollbar {
max-height: 50vh; max-height: 50vh;
flex: 1; flex: 1;

View file

@ -54,6 +54,7 @@
&::after { &::after {
position: absolute; position: absolute;
top: 0; top: 0;
z-index: 99;
content: ""; content: "";
display: inline-block; display: inline-block;
width: 100%; width: 100%;

View file

@ -6,11 +6,24 @@ function listenKeyboard(event) {
if (event.ctrlKey) { if (event.ctrlKey) {
// k - for search Modal // k - for search Modal
if (event.keyCode === 75) { if (event.keyCode === 75) {
if (navigation.isRawModalVisible) return;
event.preventDefault(); event.preventDefault();
if (navigation.isRawModalVisible) return;
openSearch(); openSearch();
} }
} }
if (!event.ctrlKey && !event.altKey) {
if (navigation.isRawModalVisible) return;
if (['input', 'textarea'].includes(document.activeElement.type)) {
return;
}
if (event.keyCode < 48
|| (event.keyCode >= 91 && event.keyCode <= 93)
|| (event.keyCode >= 112 && event.keyCode <= 183)) {
return;
}
const msgTextarea = document.getElementById('message-textarea');
msgTextarea?.focus();
}
} }
function initHotkeys() { function initHotkeys() {