feat(dashboard): improve layout and styling for media components

This commit is contained in:
jxxghp
2026-06-06 20:54:46 +08:00
parent 75da7d35b4
commit df8e6016cd
4 changed files with 58 additions and 17 deletions
+18 -1
View File
@@ -136,7 +136,7 @@ onUnmounted(() => {
<!-- 插件仪表板 --> <!-- 插件仪表板 -->
<template v-else-if="!isNullOrEmptyObject(props.config)"> <template v-else-if="!isNullOrEmptyObject(props.config)">
<!-- Vue 渲染模式 --> <!-- Vue 渲染模式 -->
<div v-if="pluginRenderMode === 'vue'"> <div v-if="pluginRenderMode === 'vue'" class="dashboard-plugin-vue-renderer">
<component :is="dynamicPluginComponent" :config="props.config" :allow-refresh="props.allowRefresh" :api="api" /> <component :is="dynamicPluginComponent" :config="props.config" :allow-refresh="props.allowRefresh" :api="api" />
</div> </div>
<!-- Vuetify 渲染模式 --> <!-- Vuetify 渲染模式 -->
@@ -168,3 +168,20 @@ onUnmounted(() => {
</VCard> </VCard>
</template> </template>
</template> </template>
<style scoped>
/* stylelint-disable selector-pseudo-class-no-unknown */
.dashboard-plugin-vue-renderer {
display: flex;
flex-direction: column;
block-size: 100%;
inline-size: 100%;
min-block-size: 0;
}
.dashboard-plugin-vue-renderer :deep(> *) {
flex: 1 1 auto;
min-block-size: 0;
}
</style>
+22 -6
View File
@@ -57,14 +57,15 @@ onActivated(() => {
</script> </script>
<template> <template>
<div> <div class="dashboard-media-stack">
<VCard v-for="(data, name) in latestList" :key="name" class="dashboard-work-card dashboard-media-card"> <VCard v-for="(data, name) in latestList" :key="name" class="dashboard-work-card dashboard-media-card">
<VCardItem> <VCardItem>
<VCardTitle>{{ t('dashboard.latest') }} - {{ name }}</VCardTitle> <VCardTitle>{{ t('dashboard.latest') }} - {{ name }}</VCardTitle>
</VCardItem> </VCardItem>
<div class="dashboard-card-grid-wrap"> <div class="px-3 pb-3">
<ProgressiveCardGrid <ProgressiveCardGrid
class="dashboard-media-grid"
:items="data" :items="data"
:get-item-key="item => item.id || item.link || item.title" :get-item-key="item => item.id || item.link || item.title"
:min-item-width="144" :min-item-width="144"
@@ -81,11 +82,26 @@ onActivated(() => {
</template> </template>
<style scoped> <style scoped>
.dashboard-card-grid-wrap { /* stylelint-disable selector-pseudo-class-no-unknown */
/* 用内边距提供卡片留白,避免 100% 宽度网格叠加横向外边距后在 iOS 小屏溢出。 */
.dashboard-media-stack {
display: flex;
flex-direction: column;
block-size: 100%;
min-block-size: 0;
}
.dashboard-media-stack > .dashboard-media-card {
flex: 1 1 auto; flex: 1 1 auto;
min-block-size: 0; min-block-size: 0;
overflow: auto; }
padding: 0 0.75rem 0.75rem;
.dashboard-media-grid {
flex: 1 1 auto;
min-block-size: 0;
}
.dashboard-media-grid :deep(.progressive-card-grid__track) {
min-block-size: 100%;
} }
</style> </style>
+9 -5
View File
@@ -65,8 +65,9 @@ onActivated(() => {
<VCardItem> <VCardItem>
<VCardTitle>{{ t('dashboard.library') }}</VCardTitle> <VCardTitle>{{ t('dashboard.library') }}</VCardTitle>
</VCardItem> </VCardItem>
<div class="dashboard-card-grid-wrap"> <div class="px-3 pb-3">
<ProgressiveCardGrid <ProgressiveCardGrid
class="dashboard-media-grid"
:items="libraryList" :items="libraryList"
:get-item-key="item => item.id || item.name" :get-item-key="item => item.id || item.name"
:min-item-width="240" :min-item-width="240"
@@ -82,11 +83,14 @@ onActivated(() => {
</template> </template>
<style scoped> <style scoped>
.dashboard-card-grid-wrap { /* stylelint-disable selector-pseudo-class-no-unknown */
/* 用内边距提供卡片留白,避免 100% 宽度网格叠加横向外边距后在 iOS 小屏溢出。 */
.dashboard-media-grid {
flex: 1 1 auto; flex: 1 1 auto;
min-block-size: 0; min-block-size: 0;
overflow: auto; }
padding: 0 0.75rem 0.75rem;
.dashboard-media-grid :deep(.progressive-card-grid__track) {
min-block-size: 100%;
} }
</style> </style>
+9 -5
View File
@@ -66,8 +66,9 @@ onActivated(() => {
<VCardTitle>{{ t('dashboard.playing') }}</VCardTitle> <VCardTitle>{{ t('dashboard.playing') }}</VCardTitle>
</VCardItem> </VCardItem>
<div class="dashboard-card-grid-wrap"> <div class="px-3 pb-3">
<ProgressiveCardGrid <ProgressiveCardGrid
class="dashboard-media-grid"
:items="playingList" :items="playingList"
:get-item-key="item => item.id || item.link || item.title" :get-item-key="item => item.id || item.link || item.title"
:min-item-width="240" :min-item-width="240"
@@ -83,11 +84,14 @@ onActivated(() => {
</template> </template>
<style scoped> <style scoped>
.dashboard-card-grid-wrap { /* stylelint-disable selector-pseudo-class-no-unknown */
/* 用内边距提供卡片留白,避免 100% 宽度网格叠加横向外边距后在 iOS 小屏溢出。 */
.dashboard-media-grid {
flex: 1 1 auto; flex: 1 1 auto;
min-block-size: 0; min-block-size: 0;
overflow: auto; }
padding: 0 0.75rem 0.75rem;
.dashboard-media-grid :deep(.progressive-card-grid__track) {
min-block-size: 100%;
} }
</style> </style>