summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
diff options
context:
space:
mode:
author1Step621 <86859447+1STEP621@users.noreply.github.com>2024-01-13 15:25:11 +0900
committerGitHub <noreply@github.com>2024-01-13 15:25:11 +0900
commit19fe32bd7e416a6a408887e8cc5b03bc775c10a2 (patch)
tree1e128550ede1fe12705686dc7265156f849b80fc /packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
parentenhance(drop-and-fusion): some tweaks (diff)
downloadsharkey-19fe32bd7e416a6a408887e8cc5b03bc775c10a2.tar.gz
sharkey-19fe32bd7e416a6a408887e8cc5b03bc775c10a2.tar.bz2
sharkey-19fe32bd7e416a6a408887e8cc5b03bc775c10a2.zip
Feat(frontend): リアクション・ノート内絵文字・/about#emojisで絵文字詳細が見られるように (#12984)
* リアクション・ノート内絵文字・/about#emojisで絵文字詳細が見られるように * update CHANGELOG.md * fix locale & type errors * fix locale etc * fix * fix type * lint fixes * lint fixes(2)
Diffstat (limited to 'packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue')
-rw-r--r--packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue102
1 files changed, 102 insertions, 0 deletions
diff --git a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
new file mode 100644
index 0000000000..c53bbca37c
--- /dev/null
+++ b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue
@@ -0,0 +1,102 @@
+<!--
+SPDX-FileCopyrightText: syuilo and other misskey contributors
+SPDX-License-Identifier: AGPL-3.0-only
+-->
+
+<template>
+ <MkModalWindow ref="dialogEl" @close="cancel()" @closed="$emit('closed')">
+ <template #header>:{{ emoji.name }}:</template>
+ <template #default>
+ <MkSpacer>
+ <div style="display: flex; flex-direction: column; gap: 1em;">
+ <div :class="$style.emojiImgWrapper">
+ <MkCustomEmoji :name="emoji.name" :normal="true" style="height: 100%;"></MkCustomEmoji>
+ </div>
+ <MkKeyValue>
+ <template #key>{{ i18n.ts.name }}</template>
+ <template #value>{{ emoji.name }}</template>
+ </MkKeyValue>
+ <MkKeyValue>
+ <template #key>{{ i18n.ts.tags }}</template>
+ <template #value>
+ <div v-if="emoji.aliases.length === 0">{{ i18n.ts.none }}</div>
+ <div v-else :class="$style.aliases">
+ <span v-for="alias in emoji.aliases" :key="alias" :class="$style.alias">
+ {{ alias }}
+ </span>
+ </div>
+ </template>
+ </MkKeyValue>
+ <MkKeyValue>
+ <template #key>{{ i18n.ts.category }}</template>
+ <template #value>{{ emoji.category ?? i18n.ts.none }}</template>
+ </MkKeyValue>
+ <MkKeyValue>
+ <template #key>{{ i18n.ts.sensitive }}</template>
+ <template #value>{{ emoji.isSensitive ? i18n.ts.yes : i18n.ts.no }}</template>
+ </MkKeyValue>
+ <MkKeyValue>
+ <template #key>{{ i18n.ts.localOnly }}</template>
+ <template #value>{{ emoji.localOnly ? i18n.ts.yes : i18n.ts.no }}</template>
+ </MkKeyValue>
+ <MkKeyValue>
+ <template #key>{{ i18n.ts.license }}</template>
+ <template #value>{{ emoji.license ?? i18n.ts.none }}</template>
+ </MkKeyValue>
+ <MkKeyValue :copy="emoji.url">
+ <template #key>{{ i18n.ts.emojiUrl }}</template>
+ <template #value>
+ <a :href="emoji.url" target="_blank">{{ emoji.url }}</a>
+ </template>
+ </MkKeyValue>
+ </div>
+ </MkSpacer>
+ </template>
+ </MkModalWindow>
+</template>
+
+<script lang="ts" setup>
+import * as Misskey from 'misskey-js';
+import { defineProps, shallowRef } from 'vue';
+import { i18n } from '@/i18n.js';
+import MkModalWindow from '@/components/MkModalWindow.vue';
+import MkKeyValue from '@/components/MkKeyValue.vue';
+const props = defineProps<{
+ emoji: Misskey.entities.EmojiDetailed,
+}>();
+const emit = defineEmits<{
+ (ev: 'ok', cropped: Misskey.entities.DriveFile): void;
+ (ev: 'cancel'): void;
+ (ev: 'closed'): void;
+}>();
+const dialogEl = shallowRef<InstanceType<typeof MkModalWindow>>();
+const cancel = () => {
+ emit('cancel');
+ dialogEl.value!.close();
+};
+</script>
+
+<style lang="scss" module>
+.emojiImgWrapper {
+ max-width: 100%;
+ height: 40cqh;
+ background-image: repeating-linear-gradient(45deg, transparent, transparent 8px, var(--X5) 8px, var(--X5) 14px);
+ border-radius: var(--radius);
+ margin: auto;
+ overflow-y: hidden;
+}
+
+.aliases {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 3px;
+}
+
+.alias {
+ display: inline-block;
+ padding: 3px 10px;
+ background-color: var(--X5);
+ border: solid 1px var(--divider);
+ border-radius: var(--radius);
+}
+</style>