diff options
| author | Acid Chicken (硫酸鶏) <root@acid-chicken.com> | 2023-04-06 08:19:49 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-06 08:19:49 +0900 |
| commit | 3b3f683f8cdff33c8c745e1da99596e7499ca2d6 (patch) | |
| tree | b94e01d12a668cf142fa3859e965aac9174bea34 /packages/frontend/src/components/MkGalleryPostPreview.vue | |
| parent | docs: thanks (#10487) (diff) | |
| download | sharkey-3b3f683f8cdff33c8c745e1da99596e7499ca2d6.tar.gz sharkey-3b3f683f8cdff33c8c745e1da99596e7499ca2d6.tar.bz2 sharkey-3b3f683f8cdff33c8c745e1da99596e7499ca2d6.zip | |
feat(#8149): respect nsfw settings on gallery list (#10481)
* feat(#8149): respect nsfw settings on gallery list
* ci(#10336): use pull_request
* test(#8149): add interaction tests
* test(#10336): use `waitFor`
* chore: transition
Diffstat (limited to 'packages/frontend/src/components/MkGalleryPostPreview.vue')
| -rw-r--r-- | packages/frontend/src/components/MkGalleryPostPreview.vue | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/packages/frontend/src/components/MkGalleryPostPreview.vue b/packages/frontend/src/components/MkGalleryPostPreview.vue index 2c5032119f..944f5ad97b 100644 --- a/packages/frontend/src/components/MkGalleryPostPreview.vue +++ b/packages/frontend/src/components/MkGalleryPostPreview.vue @@ -1,7 +1,10 @@ <template> -<MkA :to="`/gallery/${post.id}`" class="ttasepnz _panel" tabindex="-1"> +<MkA :to="`/gallery/${post.id}`" class="ttasepnz _panel" tabindex="-1" @pointerenter="enterHover" @pointerleave="leaveHover"> <div class="thumbnail"> - <ImgWithBlurhash class="img" :src="post.files[0].thumbnailUrl" :hash="post.files[0].blurhash"/> + <ImgWithBlurhash class="img" :hash="post.files[0].blurhash"/> + <Transition> + <ImgWithBlurhash v-if="show" class="img layered" :src="post.files[0].thumbnailUrl" :hash="post.files[0].blurhash"/> + </Transition> </div> <article> <header> @@ -15,12 +18,25 @@ </template> <script lang="ts" setup> -import { } from 'vue'; +import * as misskey from 'misskey-js'; +import { computed, ref } from 'vue'; import ImgWithBlurhash from '@/components/MkImgWithBlurhash.vue'; +import { defaultStore } from '@/store'; const props = defineProps<{ - post: any; + post: misskey.entities.GalleryPost; }>(); + +const hover = ref(false); +const show = computed(() => defaultStore.state.nsfw === 'ignore' || defaultStore.state.nsfw === 'respect' && !props.post.isSensitive || hover.value); + +function enterHover(): void { + hover.value = true; +} + +function leaveHover(): void { + hover.value = false; +} </script> <style lang="scss" scoped> @@ -56,6 +72,21 @@ const props = defineProps<{ width: 100%; height: 100%; object-fit: cover; + + &.layered { + position: absolute; + top: 0; + + &.v-enter-active, + &.v-leave-active { + transition: opacity 0.5s ease; + } + + &.v-enter-from, + &.v-leave-to { + opacity: 0; + } + } } } |