aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/components/emoji-input/emoji-input.js5
-rw-r--r--src/components/emoji-input/emoji-input.vue1
-rw-r--r--src/components/emoji-selector/emoji-selector.js26
-rw-r--r--src/components/emoji-selector/emoji-selector.vue65
4 files changed, 97 insertions, 0 deletions
diff --git a/src/components/emoji-input/emoji-input.js b/src/components/emoji-input/emoji-input.js
index a5bb6eaf..48e89409 100644
--- a/src/components/emoji-input/emoji-input.js
+++ b/src/components/emoji-input/emoji-input.js
@@ -1,4 +1,6 @@
import Completion from '../../services/completion/completion.js'
+import EmojiSelector from '../emoji-selector/emoji-selector.vue'
+
import { take, filter, map } from 'lodash'
const EmojiInput = {
@@ -14,6 +16,9 @@ const EmojiInput = {
caret: 0
}
},
+ components: {
+ EmojiSelector
+ },
computed: {
suggestions () {
const firstchar = this.textAtCaret.charAt(0)
diff --git a/src/components/emoji-input/emoji-input.vue b/src/components/emoji-input/emoji-input.vue
index 338b77cd..a1ddd7f9 100644
--- a/src/components/emoji-input/emoji-input.vue
+++ b/src/components/emoji-input/emoji-input.vue
@@ -1,5 +1,6 @@
<template>
<div class="emoji-input">
+ <EmojiSelector />
<input
v-if="type !== 'textarea'"
:class="classname"
diff --git a/src/components/emoji-selector/emoji-selector.js b/src/components/emoji-selector/emoji-selector.js
new file mode 100644
index 00000000..77107573
--- /dev/null
+++ b/src/components/emoji-selector/emoji-selector.js
@@ -0,0 +1,26 @@
+const EmojiSelector = {
+ data () {
+ return {
+ open: false
+ }
+ },
+ mounted () {
+ console.log(this.$store.state.instance.emoji)
+ console.log(this.$store.state.instance.customEmoji)
+ },
+ methods: {
+ togglePanel () {
+ this.open = !this.open
+ }
+ },
+ computed: {
+ standardEmoji () {
+ return this.$store.state.instance.emoji || []
+ },
+ customEmoji () {
+ return this.$store.state.instance.customEmoji || []
+ }
+ }
+}
+
+export default EmojiSelector
diff --git a/src/components/emoji-selector/emoji-selector.vue b/src/components/emoji-selector/emoji-selector.vue
new file mode 100644
index 00000000..ebacc0c4
--- /dev/null
+++ b/src/components/emoji-selector/emoji-selector.vue
@@ -0,0 +1,65 @@
+<template>
+ <div class="emoji-dropdown">
+ <span class="emoji-dropdown-toggle" @click="togglePanel">Emoji</span>
+ <div class="emoji-dropdown-menu" v-if="open">
+ <span v-for="emoji in standardEmoji" :key="'standard' + emoji.shortcode" :title="emoji.shortcode" class="emoji-item">
+ <span v-if="!emoji.image_url">{{emoji.utf}}</span>
+ <img :src="emoji.utf" v-else>
+ </span>
+ <span v-for="emoji in customEmoji" :key="'custom' + emoji.shortcode" :title="emoji.shortcode" class="emoji-item">
+ <span v-if="!emoji.image_url">{{emoji.utf}}</span>
+ <img :src="'https://bikeshed.party' + emoji.image_url" v-else>
+ </span>
+ </div>
+ </div>
+</template>
+
+<script src="./emoji-selector.js"></script>
+
+<style lang="scss">
+@import '../../_variables.scss';
+
+.emoji {
+ &-dropdown {
+ position: relative;
+
+ &-toggle {
+ cursor: pointer;
+ }
+
+ &-menu {
+ position: absolute;
+ z-index: 1;
+ right: 0;
+ width: 300px;
+ height: 300px;
+ background: white;
+ border: 1px solid $fallback--faint;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ overflow: auto;
+ margin-bottom: 5px;
+
+ img {
+ max-width: 100%;
+ max-height: 100%;
+ }
+ }
+ }
+
+ &-item {
+ width: 34px;
+ height: 34px;
+ box-sizing: border-box;
+ display: flex;
+ font-size: 16px;
+ align-items: center;
+ justify-content: center;
+ color: black;
+ padding: 5px;
+ cursor: pointer;
+ }
+
+}
+</style>