Merge branch 'emoji-selector-update' into shigusegubu
* emoji-selector-update: review/naming + bugfix for stickers updated logic for hiding picker and also added ability to hide suggestions with esc key Remove emoji zoom
This commit is contained in:
commit
10c41a85df
8 changed files with 30 additions and 32 deletions
|
@ -54,17 +54,28 @@ const EmojiInput = {
|
||||||
required: true,
|
required: true,
|
||||||
type: String
|
type: String
|
||||||
},
|
},
|
||||||
emojiPicker: {
|
enableEmojiPicker: {
|
||||||
|
/**
|
||||||
|
* Enables emoji picker support, this implies that custom emoji are supported
|
||||||
|
*/
|
||||||
required: false,
|
required: false,
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
emojiPickerExternalTrigger: {
|
hideEmojiButton: {
|
||||||
|
/**
|
||||||
|
enableStickerPicker: {
|
||||||
|
* intended to use with external picker trigger, i.e. you have a button outside
|
||||||
|
* input that will open up the picker, see triggerShowPicker()
|
||||||
|
*/
|
||||||
required: false,
|
required: false,
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
stickerPicker: {
|
enableStickerPicker: {
|
||||||
|
/**
|
||||||
|
* Enables sticker picker support, only makes sense when enableEmojiPicker=true
|
||||||
|
*/
|
||||||
required: false,
|
required: false,
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
|
|
@ -4,19 +4,19 @@
|
||||||
class="emoji-input"
|
class="emoji-input"
|
||||||
>
|
>
|
||||||
<slot />
|
<slot />
|
||||||
<template v-if="emojiPicker">
|
<template v-if="enableEmojiPicker">
|
||||||
<div
|
<div
|
||||||
v-if="!emojiPickerExternalTrigger"
|
v-if="!hideEmojiButton"
|
||||||
class="emoji-picker-icon"
|
class="emoji-picker-icon"
|
||||||
@click.prevent="togglePicker"
|
@click.prevent="togglePicker"
|
||||||
>
|
>
|
||||||
<i class="icon-smile" />
|
<i class="icon-smile" />
|
||||||
</div>
|
</div>
|
||||||
<EmojiPicker
|
<EmojiPicker
|
||||||
v-if="emojiPicker"
|
v-if="enableEmojiPicker"
|
||||||
ref="picker"
|
ref="picker"
|
||||||
:class="{ hide: !showPicker }"
|
:class="{ hide: !showPicker }"
|
||||||
:sticker-picker="stickerPicker"
|
:enable-sticker-picker="enableStickerPicker"
|
||||||
class="emoji-picker-panel"
|
class="emoji-picker-panel"
|
||||||
@emoji="insert"
|
@emoji="insert"
|
||||||
@sticker-uploaded="onStickerUploaded"
|
@sticker-uploaded="onStickerUploaded"
|
||||||
|
|
|
@ -5,7 +5,7 @@ const filterByKeyword = (list, keyword = '') => {
|
||||||
|
|
||||||
const EmojiPicker = {
|
const EmojiPicker = {
|
||||||
props: {
|
props: {
|
||||||
stickerPicker: {
|
enableStickerPicker: {
|
||||||
required: false,
|
required: false,
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
@ -97,6 +97,9 @@ const EmojiPicker = {
|
||||||
},
|
},
|
||||||
emojisView () {
|
emojisView () {
|
||||||
return this.emojis.filter(value => value.emojis.length > 0)
|
return this.emojis.filter(value => value.emojis.length > 0)
|
||||||
|
},
|
||||||
|
stickerPickerEnabled () {
|
||||||
|
return (this.$store.state.instance.stickers || []).length !== 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-if="stickerPicker"
|
v-if="stickerPickerEnabled"
|
||||||
class="additional-tabs"
|
class="additional-tabs"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
<EmojiInput
|
<EmojiInput
|
||||||
v-if="newStatus.spoilerText || alwaysShowSubject"
|
v-if="newStatus.spoilerText || alwaysShowSubject"
|
||||||
v-model="newStatus.spoilerText"
|
v-model="newStatus.spoilerText"
|
||||||
emoji-picker
|
enable-emoji-picker
|
||||||
:suggest="emojiSuggestor"
|
:suggest="emojiSuggestor"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
>
|
>
|
||||||
|
@ -78,9 +78,9 @@
|
||||||
v-model="newStatus.status"
|
v-model="newStatus.status"
|
||||||
:suggest="emojiUserSuggestor"
|
:suggest="emojiUserSuggestor"
|
||||||
class="form-control main-input"
|
class="form-control main-input"
|
||||||
emoji-picker
|
enable-emoji-picker
|
||||||
emoji-picker-external-trigger
|
hide-emoji-button
|
||||||
sticker-picker
|
enable-sticker-picker
|
||||||
@sticker-uploaded="addMediaFile"
|
@sticker-uploaded="addMediaFile"
|
||||||
@sticker-upload-failed="uploadFailed"
|
@sticker-upload-failed="uploadFailed"
|
||||||
>
|
>
|
||||||
|
|
|
@ -696,22 +696,6 @@ $status-margin: 0.75em;
|
||||||
line-height: 1.4em;
|
line-height: 1.4em;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
|
|
||||||
.emoji-container {
|
|
||||||
display: inline-block;
|
|
||||||
width: 32px;
|
|
||||||
height: 32px;
|
|
||||||
z-index: 1;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
z-index: 2;
|
|
||||||
|
|
||||||
.emoji {
|
|
||||||
transform: scale(3);
|
|
||||||
z-index: 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
img, video {
|
img, video {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
max-height: 400px;
|
max-height: 400px;
|
||||||
|
|
|
@ -194,7 +194,7 @@ export const addEmojis = (string, emojis) => {
|
||||||
return emojis.reduce((acc, emoji) => {
|
return emojis.reduce((acc, emoji) => {
|
||||||
return acc.replace(
|
return acc.replace(
|
||||||
new RegExp(`:${emoji.shortcode}:`, 'g'),
|
new RegExp(`:${emoji.shortcode}:`, 'g'),
|
||||||
`<span class='emoji-container'><img src='${emoji.url}' alt='${emoji.shortcode}' title='${emoji.shortcode}' class='emoji' /></span>`
|
`<img src='${emoji.url}' alt='${emoji.shortcode}' title='${emoji.shortcode}' class='emoji' />`
|
||||||
)
|
)
|
||||||
}, string)
|
}, string)
|
||||||
}
|
}
|
||||||
|
|
|
@ -323,9 +323,9 @@ describe('API Entities normalizer', () => {
|
||||||
|
|
||||||
describe('MastoAPI emoji adder', () => {
|
describe('MastoAPI emoji adder', () => {
|
||||||
const emojis = makeMockEmojiMasto()
|
const emojis = makeMockEmojiMasto()
|
||||||
const imageHtml = '<span class="emoji-container"><img src="https://example.com/image.png" alt="image" title="image" class="emoji" /></span>'
|
const imageHtml = '<img src="https://example.com/image.png" alt="image" title="image" class="emoji" />'
|
||||||
.replace(/"/g, '\'')
|
.replace(/"/g, '\'')
|
||||||
const thinkHtml = '<span class="emoji-container"><img src="https://example.com/think.png" alt="thinking" title="thinking" class="emoji" /></span>'
|
const thinkHtml = '<img src="https://example.com/think.png" alt="thinking" title="thinking" class="emoji" />'
|
||||||
.replace(/"/g, '\'')
|
.replace(/"/g, '\'')
|
||||||
|
|
||||||
it('correctly replaces shortcodes in supplied string', () => {
|
it('correctly replaces shortcodes in supplied string', () => {
|
||||||
|
|
Loading…
Add table
Reference in a new issue