summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components/MkImgPreviewDialog.vue
diff options
context:
space:
mode:
authortaichan <40626578+tai-cha@users.noreply.github.com>2025-02-08 17:33:09 +0900
committerGitHub <noreply@github.com>2025-02-08 08:33:09 +0000
commit2f8d02024a389181794ee9e8f2b70ffbd057cf6f (patch)
tree6b8c3b4cfb9a161b03ad2b33b29074ee33ac37fc /packages/frontend/src/components/MkImgPreviewDialog.vue
parentenhance(frontend): クライアントエラー画面の多言語対応 (#15411) (diff)
downloadmisskey-2f8d02024a389181794ee9e8f2b70ffbd057cf6f.tar.gz
misskey-2f8d02024a389181794ee9e8f2b70ffbd057cf6f.tar.bz2
misskey-2f8d02024a389181794ee9e8f2b70ffbd057cf6f.zip
feat(frontend): 画像を投稿前にプレビュー可能に (#15341)
* feat(client): 画像をプレビュー可能に * Update Changelog * SPDX * 消えてたのFix * Add storybook for MkImgPreviewDialog * backgroundのスタイル変更 Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> * Add MkImgPreviewDialog to storybook generator * Update packages/frontend/.storybook/generate.tsx --------- Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com>
Diffstat (limited to 'packages/frontend/src/components/MkImgPreviewDialog.vue')
-rw-r--r--packages/frontend/src/components/MkImgPreviewDialog.vue58
1 files changed, 58 insertions, 0 deletions
diff --git a/packages/frontend/src/components/MkImgPreviewDialog.vue b/packages/frontend/src/components/MkImgPreviewDialog.vue
new file mode 100644
index 0000000000..3e6e4e0ec9
--- /dev/null
+++ b/packages/frontend/src/components/MkImgPreviewDialog.vue
@@ -0,0 +1,58 @@
+<!--
+SPDX-FileCopyrightText: syuilo and misskey-project
+SPDX-License-Identifier: AGPL-3.0-only
+-->
+
+<template>
+<MkModalWindow
+ ref="modal"
+ :width="1800"
+ :height="900"
+ @close="close"
+ @esc="close"
+ @click="close"
+>
+ <template #header>{{ file.name }}</template>
+ <div :class="$style.container">
+ <img :src="file.url" :alt="file.comment ?? file.name" :class="$style.img"/>
+ </div>
+</MkModalWindow>
+</template>
+<script lang="ts" setup>
+import { defineProps, ref } from 'vue';
+import MkModalWindow from './MkModalWindow.vue';
+import type * as Misskey from 'misskey-js';
+
+defineProps<{
+ file: Misskey.entities.DriveFile;
+}>();
+
+const modal = ref<typeof MkModalWindow | null>(null);
+
+function close() {
+ modal.value?.close();
+}
+
+</script>
+<style lang="scss" module>
+ .container {
+ box-sizing: border-box;
+ width: 100%;
+ height: 100%;
+ min-height: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+
+ background-color: var(--MI_THEME-bg);
+ background-size: auto auto;
+ background-image: repeating-linear-gradient(135deg, transparent, transparent 6px, var(--MI_THEME-panel) 6px, var(--MI_THEME-panel) 12px);
+ }
+
+ .img {
+ width: 100%;
+ max-height: 100%;
+ object-fit: contain;
+ }
+</style>