sharkey/src/client/components/emoji-picker-dialog.vue

77 lines
1.5 KiB
Vue
Raw Normal View History

<template>
2021-08-09 18:01:12 +09:00
<MkPopup ref="popup" :manual-showing="manualShowing" :src="src" :front="true" @click="$refs.popup.close()" @opening="opening" @close="$emit('close')" @closed="$emit('closed')" #default="{point}">
<MkEmojiPicker class="ryghynhb _popup _shadow" :class="{ pointer: point === 'top' }" :show-pinned="showPinned" :as-reaction-picker="asReactionPicker" @chosen="chosen" ref="picker"/>
2021-08-08 12:19:10 +09:00
</MkPopup>
</template>
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
2021-08-08 12:19:10 +09:00
import MkPopup from '@client/components/ui/popup.vue';
2021-03-23 17:30:14 +09:00
import MkEmojiPicker from '@client/components/emoji-picker.vue';
export default defineComponent({
components: {
2021-08-08 12:19:10 +09:00
MkPopup,
MkEmojiPicker,
},
props: {
2021-02-28 01:09:59 +09:00
manualShowing: {
type: Boolean,
required: false,
default: null,
},
src: {
required: false
},
showPinned: {
required: false,
default: true
},
asReactionPicker: {
required: false
},
},
2021-08-08 12:19:10 +09:00
emits: ['done', 'close', 'closed'],
data() {
return {
};
},
methods: {
chosen(emoji: any) {
this.$emit('done', emoji);
2021-08-08 12:19:10 +09:00
this.$refs.popup.close();
},
opening() {
this.$refs.picker.reset();
this.$refs.picker.focus();
}
}
});
</script>
<style lang="scss" scoped>
2021-08-09 18:01:12 +09:00
.ryghynhb {
&.pointer {
&:before {
--size: 8px;
content: '';
display: block;
position: absolute;
top: calc(0px - (var(--size) * 2));
left: 0;
right: 0;
width: 0;
margin: auto;
border: solid var(--size) transparent;
border-bottom-color: var(--popup);
}
}
}
</style>