@@ -400,7 +400,8 @@ export default {
400400 newMessages: [],
401401 recorderStream: {},
402402 recorder: {},
403- recordedChunks: []
403+ recordedChunks: [],
404+ keepMobileKeyboardOpen: false ,
404405 }
405406 },
406407
@@ -418,6 +419,15 @@ export default {
418419 }
419420 })
420421
422+ if (detectMobile ()) {
423+ this .$refs [' roomTextarea' ].addEventListener (' blur' , e => {
424+ setTimeout (() => this .keepMobileKeyboardOpen = false , 0 )
425+ })
426+ this .$refs [' roomTextarea' ].addEventListener (' click' , e => {
427+ this .keepMobileKeyboardOpen = true
428+ })
429+ }
430+
421431 this .$refs .scrollContainer .addEventListener (' scroll' , e => {
422432 this .hideOptions = true
423433 setTimeout (() => {
@@ -628,6 +638,7 @@ export default {
628638 this .imageDimensions = null
629639 this .imageFile = null
630640 this .emojiOpened = false
641+ this .preventMobileKeyboardFromClosing ()
631642 setTimeout (() => this .focusTextarea (disableMobileFocus), 0 )
632643 },
633644 resetImageFile () {
@@ -650,6 +661,11 @@ export default {
650661 isMessageEmpty () {
651662 return ! this .file && ! this .message .trim ()
652663 },
664+ preventMobileKeyboardFromClosing () {
665+ if (this .keepMobileKeyboardOpen ) {
666+ this .$refs [' roomTextarea' ].focus ()
667+ }
668+ },
653669 sendMessage () {
654670 if (! this .file && ! this .message .trim ()) return
655671
@@ -716,6 +732,7 @@ export default {
716732 element .scrollTo ({ top: element .scrollHeight , behavior: ' smooth' })
717733 },
718734 onChangeInput () {
735+ this .keepMobileKeyboardOpen = true
719736 this .resizeTextarea ()
720737 this .$emit (' typing-message' , this .message )
721738 },
0 commit comments