mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-09-05 15:36:49 +08:00
fix layout
This commit is contained in:
@@ -15,7 +15,7 @@ body {
|
|||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
|
|
||||||
// TODO: Use grid gutter variable here
|
// TODO: Use grid gutter variable here
|
||||||
padding-block: 1.5rem;
|
padding-block: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.layout-footer {
|
.layout-footer {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
%boxed-content {
|
%boxed-content {
|
||||||
@at-root #{&}-spacing {
|
@at-root #{&}-spacing {
|
||||||
// TODO: Use grid gutter variable here
|
// TODO: Use grid gutter variable here
|
||||||
padding-inline: 1.5rem;
|
padding-inline: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline-size: 100%;
|
inline-size: 100%;
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
const route = useRoute()
|
const route = useRoute();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|||||||
@@ -31,8 +31,8 @@ const getChipColor = (type: string) => {
|
|||||||
:width="props.width"
|
:width="props.width"
|
||||||
class="outline-none shadow ring-gray-500"
|
class="outline-none shadow ring-gray-500"
|
||||||
:class="{
|
:class="{
|
||||||
'scale-105 shadow-lg': hover.isHovering,
|
'transition transform-cpu duration-300 scale-105 shadow-lg': hover.isHovering,
|
||||||
'ring-1 transition duration-300 ': isImageLoaded,
|
'ring-1': isImageLoaded,
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<VImg
|
<VImg
|
||||||
@@ -96,10 +96,4 @@ const getChipColor = (type: string) => {
|
|||||||
.on-hover img {
|
.on-hover img {
|
||||||
@apply brightness-50;
|
@apply brightness-50;
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-slide-card {
|
|
||||||
position: relative;
|
|
||||||
flex: 0 0 auto;
|
|
||||||
max-inline-size: 11rem;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { formatSeason } from "@core/utils/formatters";
|
|||||||
|
|
||||||
// 输入参数
|
// 输入参数
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
media: Object as PropType<Subscribe>
|
media: Object as PropType<Subscribe>,
|
||||||
});
|
});
|
||||||
|
|
||||||
// 根据 type 返回不同的图标
|
// 根据 type 返回不同的图标
|
||||||
@@ -25,28 +25,25 @@ const getPercentage = (total: number, lack: number) => {
|
|||||||
}
|
}
|
||||||
return Math.round(((total - lack) / total) * 100);
|
return Math.round(((total - lack) / total) * 100);
|
||||||
};
|
};
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<VCard
|
<VCard
|
||||||
:key="props.media?.id"
|
:key="props.media?.id"
|
||||||
:image="props.media?.backdrop || props.media?.poster"
|
:image="props.media?.backdrop || props.media?.poster"
|
||||||
class="card-with-overlay">
|
class="card-with-overlay"
|
||||||
|
>
|
||||||
<VCardItem>
|
<VCardItem>
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<VIcon
|
<VIcon size="1.9rem" color="white" :icon="getIcon(props.media?.type || '')" />
|
||||||
size="1.9rem"
|
|
||||||
color="white"
|
|
||||||
:icon="getIcon(props.media?.type||'')"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
<VCardTitle class="text-white">
|
<VCardTitle class="text-white">
|
||||||
{{ props.media?.name }} {{ formatSeason(props.media?.season ? props.media?.season.toString() : "") }}
|
{{ props.media?.name }}
|
||||||
|
{{ formatSeason(props.media?.season ? props.media?.season.toString() : "") }}
|
||||||
</VCardTitle>
|
</VCardTitle>
|
||||||
<template #append>
|
<template #append>
|
||||||
<div class="me-n3">
|
<div class="me-n3">
|
||||||
<MoreBtn color="white"/>
|
<MoreBtn color="white" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</VCardItem>
|
</VCardItem>
|
||||||
@@ -57,9 +54,7 @@ const getPercentage = (total: number, lack: number) => {
|
|||||||
</p>
|
</p>
|
||||||
</VCardText>
|
</VCardText>
|
||||||
|
|
||||||
<VCardText
|
<VCardText class="d-flex justify-space-between align-center flex-wrap">
|
||||||
class="d-flex justify-space-between align-center flex-wrap"
|
|
||||||
>
|
|
||||||
<div class="d-flex align-center">
|
<div class="d-flex align-center">
|
||||||
<IconBtn icon="mdi-star" color="white" class="me-1" />
|
<IconBtn icon="mdi-star" color="white" class="me-1" />
|
||||||
<span class="text-subtitle-2 text-white me-4">{{ props.media?.vote }}</span>
|
<span class="text-subtitle-2 text-white me-4">{{ props.media?.vote }}</span>
|
||||||
@@ -79,7 +74,9 @@ const getPercentage = (total: number, lack: number) => {
|
|||||||
|
|
||||||
<VProgressLinear
|
<VProgressLinear
|
||||||
v-if="props.media?.total_episode || 0 > 0"
|
v-if="props.media?.total_episode || 0 > 0"
|
||||||
:model-value="getPercentage(props.media?.total_episode || 0, props.media?.lack_episode || 0)"
|
:model-value="
|
||||||
|
getPercentage(props.media?.total_episode || 0, props.media?.lack_episode || 0)
|
||||||
|
"
|
||||||
bg-color="success"
|
bg-color="success"
|
||||||
color="success"
|
color="success"
|
||||||
/>
|
/>
|
||||||
@@ -87,7 +84,7 @@ const getPercentage = (total: number, lack: number) => {
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.card-with-overlay img{
|
.card-with-overlay img {
|
||||||
@apply brightness-50;
|
@apply brightness-50;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import VerticalNavSectionTitle from '@/@layouts/components/VerticalNavSectionTitle.vue'
|
import VerticalNavSectionTitle from "@/@layouts/components/VerticalNavSectionTitle.vue";
|
||||||
import VerticalNavLayout from '@layouts/components/VerticalNavLayout.vue'
|
import VerticalNavLayout from "@layouts/components/VerticalNavLayout.vue";
|
||||||
import VerticalNavLink from '@layouts/components/VerticalNavLink.vue'
|
import VerticalNavLink from "@layouts/components/VerticalNavLink.vue";
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
import Footer from '@/layouts/components/Footer.vue'
|
import Footer from "@/layouts/components/Footer.vue";
|
||||||
import NavbarThemeSwitcher from '@/layouts/components/NavbarThemeSwitcher.vue'
|
import NavbarThemeSwitcher from "@/layouts/components/NavbarThemeSwitcher.vue";
|
||||||
import UserProfile from '@/layouts/components/UserProfile.vue'
|
import UserProfile from "@/layouts/components/UserProfile.vue";
|
||||||
|
|
||||||
// Banner
|
// Banner
|
||||||
</script>
|
</script>
|
||||||
@@ -17,18 +17,12 @@ import UserProfile from '@/layouts/components/UserProfile.vue'
|
|||||||
<template #navbar="{ toggleVerticalOverlayNavActive }">
|
<template #navbar="{ toggleVerticalOverlayNavActive }">
|
||||||
<div class="d-flex h-100 align-center">
|
<div class="d-flex h-100 align-center">
|
||||||
<!-- 👉 Vertical nav toggle in overlay mode -->
|
<!-- 👉 Vertical nav toggle in overlay mode -->
|
||||||
<IconBtn
|
<IconBtn class="ms-n3 d-lg-none" @click="toggleVerticalOverlayNavActive(true)">
|
||||||
class="ms-n3 d-lg-none"
|
|
||||||
@click="toggleVerticalOverlayNavActive(true)"
|
|
||||||
>
|
|
||||||
<VIcon icon="mdi-menu" />
|
<VIcon icon="mdi-menu" />
|
||||||
</IconBtn>
|
</IconBtn>
|
||||||
|
|
||||||
<!-- 👉 Search -->
|
<!-- 👉 Search -->
|
||||||
<div
|
<div class="d-flex align-center cursor-pointer" style="user-select: none">
|
||||||
class="d-flex align-center cursor-pointer"
|
|
||||||
style="user-select: none;"
|
|
||||||
>
|
|
||||||
<!-- 👉 Search Trigger button -->
|
<!-- 👉 Search Trigger button -->
|
||||||
<IconBtn>
|
<IconBtn>
|
||||||
<VIcon icon="mdi-magnify" />
|
<VIcon icon="mdi-magnify" />
|
||||||
|
|||||||
Reference in New Issue
Block a user