Merge branch 'emoji-fixes' into 'develop'
Emoji fixes See merge request pleroma/pleroma-fe!1956
This commit is contained in:
commit
9c10370e19
1
changelog.d/emoji-picker.add
Normal file
1
changelog.d/emoji-picker.add
Normal file
|
@ -0,0 +1 @@
|
|||
fixed occasional overflows in emoji picker and made header scrollable
|
|
@ -135,21 +135,38 @@ const EmojiPicker = {
|
|||
Popover
|
||||
},
|
||||
methods: {
|
||||
groupScroll (e) {
|
||||
e.currentTarget.scrollLeft += e.deltaY + e.deltaX
|
||||
},
|
||||
updateEmojiSize () {
|
||||
const css = window.getComputedStyle(this.$refs.popover.$el)
|
||||
const fontSize = css.getPropertyValue('font-size')
|
||||
const emojiSize = css.getPropertyValue('--emojiSize')
|
||||
|
||||
const fontSizeUnit = fontSize.replace(/[0-9,.]+/, '')
|
||||
const fontSizeValue = Number(fontSize.replace(/[^0-9,.]+/, ''))
|
||||
|
||||
const emojiSizeUnit = emojiSize.replace(/[0-9,.]+/, '')
|
||||
const emojiSizeValue = Number(emojiSize.replace(/[^0-9,.]+/, ''))
|
||||
const fontSize = css.getPropertyValue('font-size').replace(/[^0-9,.]+/, '')
|
||||
|
||||
let fontSizeMultiplier
|
||||
if (fontSizeUnit.endsWith('em')) {
|
||||
fontSizeMultiplier = fontSizeValue
|
||||
} else {
|
||||
fontSizeMultiplier = fontSizeValue / 14
|
||||
}
|
||||
console.log('Multiplier', fontSizeMultiplier)
|
||||
console.log('Result', fontSizeMultiplier * 14)
|
||||
|
||||
let emojiSizeReal
|
||||
if (emojiSizeUnit.endsWith('em')) {
|
||||
emojiSizeReal = emojiSizeValue * fontSize
|
||||
emojiSizeReal = emojiSizeValue * fontSizeMultiplier * 14
|
||||
} else {
|
||||
emojiSizeReal = emojiSizeValue
|
||||
}
|
||||
console.log(emojiSizeReal)
|
||||
|
||||
const fullEmojiSize = emojiSizeReal + (2 * 0.2 * fontSize)
|
||||
const fullEmojiSize = emojiSizeReal + (2 * 0.2 * fontSizeMultiplier * 14)
|
||||
this.emojiSize = fullEmojiSize
|
||||
},
|
||||
showPicker () {
|
||||
|
@ -304,6 +321,7 @@ const EmojiPicker = {
|
|||
return this.emojiSize
|
||||
},
|
||||
itemPerRow () {
|
||||
console.log('CALC', this.emojiSize, this.width)
|
||||
return this.width ? Math.floor(this.width / this.emojiSize) : 6
|
||||
},
|
||||
activeGroupView () {
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
|
||||
.heading {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0.7em 0.5em 0;
|
||||
}
|
||||
|
||||
|
@ -129,7 +130,7 @@
|
|||
|
||||
.emoji {
|
||||
&-search {
|
||||
padding: 0.3em;
|
||||
padding-bottom: 0.5em;
|
||||
flex: 0 0 auto;
|
||||
|
||||
input {
|
||||
|
@ -166,24 +167,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
&-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
justify-content: left;
|
||||
|
||||
&-title {
|
||||
font-size: 0.85em;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding-left: 0.3em;
|
||||
|
||||
&.disabled {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&-item {
|
||||
width: var(--emoji-size);
|
||||
height: var(--emoji-size);
|
||||
|
@ -206,9 +189,38 @@
|
|||
}
|
||||
|
||||
.emoji-picker-emoji.-unicode {
|
||||
font-size: 1.6em;
|
||||
font-size: calc(var(--emoji-size) * 0.8);
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
&-group {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(var(--__amount), 1fr);
|
||||
align-items: center;
|
||||
justify-items: center;
|
||||
justify-content: center;
|
||||
grid-template-rows: repeat(1, auto);
|
||||
|
||||
&.first-row {
|
||||
grid-template-rows: repeat(2, auto);
|
||||
|
||||
.emoji-item {
|
||||
grid-row: 2;
|
||||
}
|
||||
}
|
||||
|
||||
&-title {
|
||||
font-size: 0.85em;
|
||||
grid-column: span var(--__amount);
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding-left: 0.3em;
|
||||
|
||||
&.disabled {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,19 @@
|
|||
@close="onPopoverClosed"
|
||||
>
|
||||
<template #content>
|
||||
<div class="heading">
|
||||
<div
|
||||
class="heading"
|
||||
>
|
||||
<div class="emoji-search">
|
||||
<input
|
||||
ref="search"
|
||||
v-model="keyword"
|
||||
type="text"
|
||||
class="input form-control"
|
||||
:placeholder="$t('emoji.search_emoji')"
|
||||
@input="$event.target.composing = false"
|
||||
>
|
||||
</div>
|
||||
<!--
|
||||
Body scroll lock needs to be on every scrollable element on safari iOS.
|
||||
Here we tell it to enable scrolling for this element.
|
||||
|
@ -18,6 +30,7 @@
|
|||
ref="header"
|
||||
v-body-scroll-lock="isInModal"
|
||||
class="emoji-tabs"
|
||||
@wheel.prevent="groupScroll"
|
||||
>
|
||||
<span
|
||||
v-for="group in filteredEmojiGroups"
|
||||
|
@ -72,16 +85,6 @@
|
|||
class="emoji-content"
|
||||
:class="{hidden: showingStickers}"
|
||||
>
|
||||
<div class="emoji-search">
|
||||
<input
|
||||
ref="search"
|
||||
v-model="keyword"
|
||||
type="text"
|
||||
class="input form-control"
|
||||
:placeholder="$t('emoji.search_emoji')"
|
||||
@input="$event.target.composing = false"
|
||||
>
|
||||
</div>
|
||||
<!-- Enables scrolling for this element on safari iOS. See comments for header. -->
|
||||
<DynamicScroller
|
||||
ref="emoji-groups"
|
||||
|
@ -106,6 +109,8 @@
|
|||
>
|
||||
<div
|
||||
class="emoji-group"
|
||||
:class="{ ['first-row']: group.isFirstRow }"
|
||||
:style="{ '--__amount': itemPerRow }"
|
||||
>
|
||||
<h6
|
||||
v-if="group.isFirstRow"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import UserAvatar from '../user_avatar/user_avatar.vue'
|
||||
import UserListPopover from '../user_list_popover/user_list_popover.vue'
|
||||
import StillImage from 'src/components/still-image/still-image.vue'
|
||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||
import {
|
||||
faPlus,
|
||||
|
@ -19,7 +20,8 @@ const EmojiReactions = {
|
|||
name: 'EmojiReactions',
|
||||
components: {
|
||||
UserAvatar,
|
||||
UserListPopover
|
||||
UserListPopover,
|
||||
StillImage
|
||||
},
|
||||
props: ['status'],
|
||||
data: () => ({
|
||||
|
|
|
@ -18,12 +18,11 @@
|
|||
<span
|
||||
class="reaction-emoji"
|
||||
>
|
||||
<img
|
||||
<StillImage
|
||||
v-if="reaction.url"
|
||||
:src="reaction.url"
|
||||
class="reaction-emoji-content"
|
||||
width="1em"
|
||||
>
|
||||
/>
|
||||
<span
|
||||
v-else
|
||||
class="reaction-emoji reaction-emoji-content"
|
||||
|
@ -127,17 +126,23 @@
|
|||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
--_still_image-label-scale: 0.3;
|
||||
}
|
||||
|
||||
.reaction-emoji-content {
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
width: auto;
|
||||
height: auto;
|
||||
width: var(--emoji-size);
|
||||
height: var(--emoji-size);
|
||||
line-height: inherit;
|
||||
overflow: hidden;
|
||||
font-size: calc(var(--emoji-size) * 0.8);
|
||||
margin: 0;
|
||||
|
||||
img {
|
||||
object-fit: contain;
|
||||
}
|
||||
}
|
||||
|
||||
&:focus {
|
||||
|
|
Loading…
Reference in a new issue