Skip to content

Commit e16bdb1

Browse files
committed
(fix) emoji reponsive positionning
1 parent 06d864a commit e16bdb1

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

src/ChatWindow/EmojiPicker.vue

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121
class="emoji-picker"
2222
:class="{ 'picker-reaction': emojiReaction }"
2323
:style="{
24-
top: `${emojiPickerHeight}px`,
25-
right: positionRight ? '85px' : '',
26-
display: emojiPickerHeight || !emojiReaction ? 'initial' : 'none'
24+
height: `${emojiPickerHeight}px`,
25+
top: positionTop ? emojiPickerHeight : `${emojiPickerTop}px`,
26+
right: positionTop ? '-50px' : positionRight ? '70px' : '',
27+
display: emojiPickerTop || !emojiReaction ? 'initial' : 'none'
2728
}"
2829
>
2930
<div class="emoji-picker__search">
@@ -60,11 +61,18 @@ export default {
6061
EmojiPicker,
6162
SvgIcon
6263
},
63-
props: ['emojiOpened', 'emojiReaction', 'roomFooterRef', 'positionRight'],
64+
props: [
65+
'emojiOpened',
66+
'emojiReaction',
67+
'roomFooterRef',
68+
'positionTop',
69+
'positionRight'
70+
],
6471
data() {
6572
return {
6673
search: '',
67-
emojiPickerHeight: ''
74+
emojiPickerHeight: 320,
75+
emojiPickerTop: 0
6876
}
6977
},
7078
methods: {
@@ -73,17 +81,20 @@ export default {
7381
},
7482
openEmoji(ev) {
7583
this.$emit('openEmoji', true)
76-
this.setEmojiPickerHeight(ev.clientY)
84+
this.setEmojiPickerHeight(ev.clientY, ev.view.innerHeight)
7785
},
78-
setEmojiPickerHeight(clientY) {
86+
setEmojiPickerHeight(clientY, innerHeight) {
7987
setTimeout(() => {
8088
if (!this.roomFooterRef) return
8189
90+
if (innerHeight < 700) this.emojiPickerHeight = 300
91+
8292
const roomFooterTop = this.roomFooterRef.getBoundingClientRect().top
83-
const pickerTopPosition = roomFooterTop - clientY > 320
93+
const pickerTopPosition =
94+
roomFooterTop - clientY > this.emojiPickerHeight - 80
8495
85-
if (pickerTopPosition) this.emojiPickerHeight = clientY
86-
else this.emojiPickerHeight = clientY - 320
96+
if (pickerTopPosition) this.emojiPickerTop = clientY
97+
else this.emojiPickerTop = clientY - this.emojiPickerHeight
8798
}, 0)
8899
}
89100
}
@@ -96,23 +107,13 @@ export default {
96107
display: flex;
97108
}
98109
99-
.regular-input {
100-
padding: 0.5rem 1rem;
101-
border-radius: 3px;
102-
border: var(--chat-border-style);
103-
width: 20rem;
104-
height: 12rem;
105-
outline: none;
106-
}
107-
108110
.emoji-picker {
109111
position: absolute;
110112
z-index: 9999;
111113
bottom: 32px;
112114
right: 10px;
113115
border: var(--chat-border-style);
114-
width: 15rem;
115-
height: 20rem;
116+
width: 240px;
116117
overflow: scroll;
117118
padding: 1rem;
118119
box-sizing: border-box;

src/ChatWindow/Room.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@
165165
<emoji-picker
166166
v-if="showEmojis && (!file || imageFile)"
167167
:emojiOpened="emojiOpened"
168+
:positionTop="true"
168169
@addEmoji="addEmoji"
169170
@openEmoji="emojiOpened = $event"
170171
></emoji-picker>

0 commit comments

Comments
 (0)