diff options
| author | かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> | 2025-06-03 17:20:11 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-03 17:20:11 +0900 |
| commit | 810a609df4d4037daf77bf6dbf2b38b9457bb0dd (patch) | |
| tree | 10bb63433bc4025d4d0155362702d0136e0254b3 /packages/frontend/src/components/MkFileListForAdmin.vue | |
| parent | fix(frontend): ドライブのファイル選択が不安定な問題を修... (diff) | |
| download | misskey-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/MkFileListForAdmin.vue')
| -rw-r--r-- | packages/frontend/src/components/MkFileListForAdmin.vue | 156 |
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> |