summaryrefslogtreecommitdiff
path: root/packages/frontend/src/components
diff options
context:
space:
mode:
authorかっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>2025-06-03 17:20:11 +0900
committerGitHub <noreply@github.com>2025-06-03 17:20:11 +0900
commit810a609df4d4037daf77bf6dbf2b38b9457bb0dd (patch)
tree10bb63433bc4025d4d0155362702d0136e0254b3 /packages/frontend/src/components
parentfix(frontend): ドライブのファイル選択が不安定な問題を修... (diff)
downloadmisskey-810a609df4d4037daf77bf6dbf2b38b9457bb0dd.tar.gz
misskey-810a609df4d4037daf77bf6dbf2b38b9457bb0dd.tar.bz2
misskey-810a609df4d4037daf77bf6dbf2b38b9457bb0dd.zip
fix(frontend): 一部のグリッドのページネーションが正しく表示されない問題を修正 (#16147)
* fix(frontend): 一部のグリッドのページネーションが正しく表示されない問題を修正 * update changelog * fix
Diffstat (limited to 'packages/frontend/src/components')
-rw-r--r--packages/frontend/src/components/MkFileListForAdmin.vue156
1 files changed, 79 insertions, 77 deletions
diff --git a/packages/frontend/src/components/MkFileListForAdmin.vue b/packages/frontend/src/components/MkFileListForAdmin.vue
index d5d32ebb28..3b495c2807 100644
--- a/packages/frontend/src/components/MkFileListForAdmin.vue
+++ b/packages/frontend/src/components/MkFileListForAdmin.vue
@@ -5,33 +5,35 @@ SPDX-License-Identifier: AGPL-3.0-only
<template>
<div>
- <MkPagination v-slot="{items}" :pagination="pagination" class="urempief" :class="{ grid: viewMode === 'grid' }">
- <MkA
- v-for="file in (items as Misskey.entities.DriveFile[])"
- :key="file.id"
- v-tooltip.mfm="`${file.type}\n${bytes(file.size)}\n${dateString(file.createdAt)}\nby ${file.user ? '@' + Misskey.acct.toString(file.user) : 'system'}`"
- :to="`/admin/file/${file.id}`"
- class="file _button"
- >
- <div v-if="file.isSensitive" class="sensitive-label">{{ i18n.ts.sensitive }}</div>
- <MkDriveFileThumbnail class="thumbnail" :file="file" fit="contain" :highlightWhenSensitive="true"/>
- <div v-if="viewMode === 'list'" class="body">
- <div>
- <small style="opacity: 0.7;">{{ file.name }}</small>
+ <MkPagination v-slot="{ items }" :pagination="pagination">
+ <div :class="[$style.fileList, { [$style.grid]: viewMode === 'grid', [$style.list]: viewMode === 'list', '_gaps_s': viewMode === 'list' }]">
+ <MkA
+ v-for="file in items"
+ :key="file.id"
+ v-tooltip.mfm="`${file.type}\n${bytes(file.size)}\n${dateString(file.createdAt)}\nby ${file.user ? '@' + Misskey.acct.toString(file.user) : 'system'}`"
+ :to="`/admin/file/${file.id}`"
+ :class="[$style.file, '_button']"
+ >
+ <div v-if="file.isSensitive" :class="$style.sensitiveLabel">{{ i18n.ts.sensitive }}</div>
+ <MkDriveFileThumbnail :class="$style.thumbnail" :file="file" fit="contain" :highlightWhenSensitive="true"/>
+ <div v-if="viewMode === 'list'" :class="$style.body">
+ <div>
+ <small style="opacity: 0.7;">{{ file.name }}</small>
+ </div>
+ <div>
+ <MkAcct v-if="file.user" :user="file.user"/>
+ <div v-else>{{ i18n.ts.system }}</div>
+ </div>
+ <div>
+ <span style="margin-right: 1em;">{{ file.type }}</span>
+ <span>{{ bytes(file.size) }}</span>
+ </div>
+ <div>
+ <span>{{ i18n.ts.registeredDate }}: <MkTime :time="file.createdAt" mode="detail"/></span>
+ </div>
</div>
- <div>
- <MkAcct v-if="file.user" :user="file.user"/>
- <div v-else>{{ i18n.ts.system }}</div>
- </div>
- <div>
- <span style="margin-right: 1em;">{{ file.type }}</span>
- <span>{{ bytes(file.size) }}</span>
- </div>
- <div>
- <span>{{ i18n.ts.registeredDate }}: <MkTime :time="file.createdAt" mode="detail"/></span>
- </div>
- </div>
- </MkA>
+ </MkA>
+ </div>
</MkPagination>
</div>
</template>
@@ -43,76 +45,76 @@ import MkDriveFileThumbnail from '@/components/MkDriveFileThumbnail.vue';
import bytes from '@/filters/bytes.js';
import { i18n } from '@/i18n.js';
import { dateString } from '@/filters/date.js';
+import type { PagingCtx } from '@/composables/use-pagination.js';
-const props = defineProps<{
- pagination: any;
+defineProps<{
+ pagination: PagingCtx<'admin/drive/files'>;
viewMode: 'grid' | 'list';
}>();
</script>
-<style lang="scss" scoped>
+<style lang="scss" module>
@keyframes sensitive-blink {
0% { opacity: 1; }
50% { opacity: 0; }
}
-.urempief {
- &.list {
- > .file {
- display: flex;
- width: 100%;
- box-sizing: border-box;
- text-align: left;
- align-items: center;
+.list {
+ > .file {
+ display: flex;
+ width: 100%;
+ height: auto;
+ box-sizing: border-box;
+ text-align: left;
+ align-items: center;
+ }
- &:hover {
- color: var(--MI_THEME-accent);
- }
+ > .file:hover {
+ color: var(--MI_THEME-accent);
+ }
- > .thumbnail {
- width: 128px;
- height: 128px;
- }
+ > .file > .thumbnail {
+ width: 128px;
+ height: 128px;
+ }
- > .body {
- margin-left: 0.3em;
- padding: 8px;
- flex: 1;
+ > .file > .body {
+ margin-left: 0.3em;
+ padding: 8px;
+ flex: 1;
- @media (max-width: 500px) {
- font-size: 14px;
- }
- }
+ @media (max-width: 500px) {
+ font-size: 14px;
}
}
+}
- &.grid {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
- grid-gap: 12px;
-
- > .file {
- position: relative;
- aspect-ratio: 1;
+.grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
+ grid-gap: 12px;
- > .thumbnail {
- width: 100%;
- height: 100%;
- }
+ > .file {
+ position: relative;
+ aspect-ratio: 1;
+ }
- > .sensitive-label {
- position: absolute;
- z-index: 10;
- top: 8px;
- left: 8px;
- padding: 2px 4px;
- background: #ff0000bf;
- color: #fff;
- border-radius: 4px;
- font-size: 85%;
- animation: sensitive-blink 1s infinite;
- }
- }
+ .thumbnail {
+ width: 100%;
+ height: 100%;
}
}
+
+.sensitiveLabel {
+ position: absolute;
+ z-index: 10;
+ top: 8px;
+ left: 8px;
+ padding: 2px 4px;
+ background: #ff0000bf;
+ color: #fff;
+ border-radius: 4px;
+ font-size: 85%;
+ animation: sensitive-blink 1s infinite;
+}
</style>