2021-09-17 13:39:15 +00:00
|
|
|
<template>
|
|
|
|
<div class="driuhtrh">
|
|
|
|
<div class="query">
|
2022-07-31 12:04:29 +00:00
|
|
|
<MkInput v-model="q" class="" :placeholder="i18n.ts.search">
|
2021-09-17 13:39:15 +00:00
|
|
|
<template #prefix><i class="fas fa-search"></i></template>
|
|
|
|
</MkInput>
|
|
|
|
</div>
|
|
|
|
|
2021-11-19 10:36:12 +00:00
|
|
|
<MkFolder v-if="searchEmojis" class="emojis">
|
2022-07-31 12:04:29 +00:00
|
|
|
<template #header>{{ i18n.ts.searchResult }}</template>
|
2021-09-17 13:39:15 +00:00
|
|
|
<div class="zuvgdzyt">
|
|
|
|
<XEmoji v-for="emoji in searchEmojis" :key="emoji.name" class="emoji" :emoji="emoji"/>
|
|
|
|
</div>
|
|
|
|
</MkFolder>
|
|
|
|
|
2022-07-31 12:04:29 +00:00
|
|
|
<MkFolder v-for="category in emojiCategories" :key="category" class="emojis">
|
|
|
|
<template #header>{{ category || i18n.ts.other }}</template>
|
2021-09-17 13:39:15 +00:00
|
|
|
<div class="zuvgdzyt">
|
2022-07-31 12:04:29 +00:00
|
|
|
<XEmoji v-for="emoji in instance.emojis.filter(e => e.category === category)" :key="emoji.name" class="emoji" :emoji="emoji"/>
|
2021-09-17 13:39:15 +00:00
|
|
|
</div>
|
|
|
|
</MkFolder>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
2022-07-31 12:04:29 +00:00
|
|
|
<script lang="ts" setup>
|
|
|
|
import { watch } from 'vue';
|
2022-08-10 20:42:30 +00:00
|
|
|
import XEmoji from './emojis.emoji.vue';
|
2021-11-11 17:02:25 +00:00
|
|
|
import MkInput from '@/components/form/input.vue';
|
|
|
|
import MkFolder from '@/components/ui/folder.vue';
|
2022-07-31 12:04:29 +00:00
|
|
|
import { i18n } from '@/i18n';
|
|
|
|
import { emojiCategories, instance } from '@/instance';
|
2021-09-17 13:39:15 +00:00
|
|
|
|
2022-07-31 12:04:29 +00:00
|
|
|
let q: string = $ref('');
|
|
|
|
let searchEmojis: null | Record<string, any>[] = $ref(null);
|
2021-09-17 13:39:15 +00:00
|
|
|
|
2022-07-31 12:04:29 +00:00
|
|
|
function search() {
|
|
|
|
if (q === '') {
|
|
|
|
searchEmojis = null;
|
|
|
|
} else {
|
|
|
|
searchEmojis = instance.emojis.filter(emoji => emoji.name.includes(this.q) || emoji.aliases.includes(this.q));
|
2021-09-17 13:39:15 +00:00
|
|
|
}
|
2022-07-31 12:04:29 +00:00
|
|
|
}
|
|
|
|
watch(q, search);
|
2021-09-17 13:39:15 +00:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.driuhtrh {
|
|
|
|
background: var(--bg);
|
|
|
|
|
|
|
|
> .query {
|
|
|
|
background: var(--bg);
|
|
|
|
padding: 16px;
|
|
|
|
|
|
|
|
> .tags {
|
|
|
|
> .tag {
|
|
|
|
display: inline-block;
|
|
|
|
margin: 8px 8px 0 0;
|
|
|
|
padding: 4px 8px;
|
|
|
|
font-size: 0.9em;
|
2021-09-20 19:09:28 +00:00
|
|
|
background: var(--accentedBg);
|
2021-09-17 13:39:15 +00:00
|
|
|
border-radius: 5px;
|
|
|
|
|
|
|
|
&.active {
|
2021-09-20 19:09:28 +00:00
|
|
|
background: var(--accent);
|
|
|
|
color: var(--fgOnAccent);
|
2021-09-17 13:39:15 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
> .emojis {
|
|
|
|
--x-padding: 0 16px;
|
|
|
|
|
|
|
|
.zuvgdzyt {
|
|
|
|
display: grid;
|
|
|
|
grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
|
|
|
|
grid-gap: 12px;
|
|
|
|
margin: 0 var(--margin) var(--margin) var(--margin);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|