From 3ecb2b4d1367821416104db641908c4a822e31f5 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:48:39 +0900 Subject: [PATCH] wip --- .../src/components/MkImageGallery.item.vue | 44 +++++++++++++++++-- .../src/components/MkImageGallery.vue | 2 - .../frontend/src/components/MkMediaList.vue | 1 + 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/packages/frontend/src/components/MkImageGallery.item.vue b/packages/frontend/src/components/MkImageGallery.item.vue index 5a2a01eb1b..68c7158584 100644 --- a/packages/frontend/src/components/MkImageGallery.item.vue +++ b/packages/frontend/src/components/MkImageGallery.item.vue @@ -17,7 +17,8 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+ +
+
+ {{ image.filename }} +
+
@@ -60,14 +68,13 @@ export type Image = { thumbnailUrl: string; width: number; height: number; + filename?: string; sourceElement?: HTMLElement; }; const props = withDefaults(defineProps<{ image: Image; activated: boolean; - openAnimDuration: number; - closeAnimDuration: number; }>(), { }); @@ -85,6 +92,12 @@ const imageEl = useTemplateRef('imageEl'); const originalImageLoaded = ref(false); const thumbnailImageLoaded = ref(false); const enableTransition = ref(false); +const infoShowing = ref(false); + +onMounted(() => { + rootEl.value.offsetHeight; // reflow + infoShowing.value = true; +}); const padding = 30; const ANIMATION_DURATION = 200; @@ -306,6 +319,8 @@ function onPointerup(ev: PointerEvent) { if (shouldCloseByUpwardSwipe || shouldCloseByDownwardSwipe) { emit('close'); + infoShowing.value = false; + const sourceTransform = getScaleAndTranslationForSourceElement(); enableTransition.value = true; @@ -441,4 +456,27 @@ watch(thumbnailImageLoaded, () => { .transition { transition: translate 200ms ease, scale 200ms ease; } + +.footer { + position: absolute; + bottom: -30px; + left: 0; + width: 100%; + height: 30px; + background-color: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: center; + align-items: center; + pointer-events: none; + font-size: 85%; + color: #fff; + opacity: 0; + transition: opacity 200ms ease, bottom 200ms ease; +} +.footer.infoShowing { + bottom: 0; + opacity: 1; +} +.footerText { +} diff --git a/packages/frontend/src/components/MkImageGallery.vue b/packages/frontend/src/components/MkImageGallery.vue index 02e9704d6a..fb8a38100b 100644 --- a/packages/frontend/src/components/MkImageGallery.vue +++ b/packages/frontend/src/components/MkImageGallery.vue @@ -29,8 +29,6 @@ SPDX-License-Identifier: AGPL-3.0-only x.default), {