diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index c74c531bd..6dc006f8c 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -78,6 +78,7 @@ const EmojiInput = {
focused: false,
blurTimeout: null,
showPicker: false,
+ temporarilyHideSuggestions: false,
spamMode: false,
disableClickOutside: false
}
@@ -102,7 +103,11 @@ const EmojiInput = {
}))
},
showSuggestions () {
- return this.focused && this.suggestions && this.suggestions.length > 0 && !this.showPicker
+ return this.focused &&
+ this.suggestions &&
+ this.suggestions.length > 0 &&
+ !this.showPicker &&
+ !this.temporarilyHideSuggestions
},
textAtCaret () {
return (this.wordAtCaret || {}).word || ''
@@ -153,6 +158,7 @@ const EmojiInput = {
}, 0)
},
togglePicker () {
+ this.input.elm.focus()
this.showPicker = !this.showPicker
},
replace (replacement) {
@@ -250,44 +256,68 @@ const EmojiInput = {
this.focused = true
this.setCaret(e)
this.resize()
+ this.temporarilyHideSuggestions = false
},
onKeyUp (e) {
+ const { key } = e
this.setCaret(e)
this.resize()
+
+ // Setting hider in keyUp to prevent suggestions from blinking
+ // when moving away from suggested spot
+ if (key === 'Escape') {
+ this.temporarilyHideSuggestions = true
+ } else {
+ this.temporarilyHideSuggestions = false
+ }
},
onPaste (e) {
this.setCaret(e)
this.resize()
},
onKeyDown (e) {
- this.setCaret(e)
- this.resize()
-
const { ctrlKey, shiftKey, key } = e
- if (key === 'Tab') {
- if (shiftKey) {
+ // Disable suggestions hotkeys if suggestions are hidden
+ if (!this.temporarilyHideSuggestions) {
+ if (key === 'Tab') {
+ if (shiftKey) {
+ this.cycleBackward(e)
+ } else {
+ this.cycleForward(e)
+ }
+ }
+ if (key === 'ArrowUp') {
this.cycleBackward(e)
- } else {
+ } else if (key === 'ArrowDown') {
this.cycleForward(e)
}
- }
- if (key === 'ArrowUp') {
- this.cycleBackward(e)
- } else if (key === 'ArrowDown') {
- this.cycleForward(e)
- }
- if (key === 'Enter') {
- if (!ctrlKey) {
- this.replaceText(e)
+ if (key === 'Enter') {
+ if (!ctrlKey) {
+ this.replaceText(e)
+ }
}
}
+ // Probably add optional keyboard controls for emoji picker?
+
+ // Escape hides suggestions, if suggestions are hidden it
+ // de-focuses the element (i.e. default browser behavior)
+ if (key === 'Escape') {
+ if (!this.temporarilyHideSuggestions) {
+ this.input.elm.focus()
+ }
+ }
+
+ this.showPicker = false
+ this.resize()
},
onInput (e) {
this.showPicker = false
this.setCaret(e)
+ this.resize()
this.$emit('input', e.target.value)
},
onCompositionUpdate (e) {
+ this.showPicker = false
this.setCaret(e)
this.resize()
this.$emit('input', e.target.value)
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index 03870a99c..bce5026ee 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -17,7 +17,6 @@ const EmojiPicker = {
keyword: '',
activeGroup: 'custom',
showingStickers: false,
- zoomEmoji: false,
spamMode: false
}
},
@@ -61,13 +60,6 @@ const EmojiPicker = {
},
onStickerUploadFailed (e) {
this.$emit('sticker-upload-failed', e)
- },
- setZoomEmoji (e, emoji) {
- this.zoomEmoji = emoji
- const { x, y } = e.target.getBoundingClientRect()
- console.log(e.target)
- this.$refs['zoom-portal'].style.left = (x - 32) + 'px'
- this.$refs['zoom-portal'].style.top = (y - 32) + 'px'
}
},
watch: {
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index 7e76aa520..472db35b7 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -10,21 +10,6 @@
margin: 0 !important;
z-index: 1;
- .zoom-portal {
- position: fixed;
- pointer-events: none;
- width: 96px;
- height: 96px;
- font-size: 96px;
- line-height: 96px;
- z-index: 10;
- img {
- object-fit: contain;
- width: 100%;
- height: 100%;
- }
- }
-
.spam-mode {
padding: 7px;
line-height: normal;
@@ -150,10 +135,6 @@
cursor: pointer;
- &:hover {
- opacity: 0
- }
-
img {
object-fit: contain;
max-width: 100%;
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index 5a8961d2e..901520aaa 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -65,16 +65,12 @@
:title="emoji.displayText"
class="emoji-item"
@click.stop.prevent="onEmoji(emoji)"
- @mouseenter="setZoomEmoji($event, emoji)"
- @mouseleave="setZoomEmoji($event, false)"
- >
-
- {{ emoji.replacement }}
-
+ >
+ {{ emoji.replacement }}
+ >
@@ -99,18 +95,6 @@
/>
-