fix(calendar): keep depth layers mounted in one card without display swap
This commit is contained in:
@@ -203,8 +203,11 @@ defineProps<{
|
|||||||
{{ formatDay(item.first.start) }} · {{ item.first.title }}
|
{{ formatDay(item.first.start) }} · {{ item.first.title }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div v-if="item.monthIndex === calendarCursorMonth" class="mt-3">
|
<div v-if="item.monthIndex === calendarCursorMonth" class="mt-3 calendar-depth-stack">
|
||||||
<div v-show="calendarView === 'month' || calendarView === 'agenda'" class="space-y-1">
|
<div
|
||||||
|
class="space-y-1 calendar-depth-layer"
|
||||||
|
:class="calendarView === 'month' || calendarView === 'agenda' ? 'calendar-depth-layer-active' : 'calendar-depth-layer-hidden'"
|
||||||
|
>
|
||||||
<div class="grid grid-cols-7 gap-1 text-center text-xs font-semibold text-base-content/60">
|
<div class="grid grid-cols-7 gap-1 text-center text-xs font-semibold text-base-content/60">
|
||||||
<span>Sun</span>
|
<span>Sun</span>
|
||||||
<span>Mon</span>
|
<span>Mon</span>
|
||||||
@@ -258,7 +261,10 @@ defineProps<{
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-show="calendarView === 'week'" class="calendar-week-scroll overflow-x-auto pb-1">
|
<div
|
||||||
|
class="calendar-week-scroll overflow-x-auto pb-1 calendar-depth-layer"
|
||||||
|
:class="calendarView === 'week' ? 'calendar-depth-layer-active' : 'calendar-depth-layer-hidden'"
|
||||||
|
>
|
||||||
<div class="calendar-week-grid">
|
<div class="calendar-week-grid">
|
||||||
<article
|
<article
|
||||||
v-for="day in weekDays"
|
v-for="day in weekDays"
|
||||||
@@ -293,7 +299,10 @@ defineProps<{
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-show="calendarView === 'day'" class="space-y-2">
|
<div
|
||||||
|
class="space-y-2 calendar-depth-layer"
|
||||||
|
:class="calendarView === 'day' ? 'calendar-depth-layer-active' : 'calendar-depth-layer-hidden'"
|
||||||
|
>
|
||||||
<button
|
<button
|
||||||
v-for="event in selectedDayEvents"
|
v-for="event in selectedDayEvents"
|
||||||
:key="event.id"
|
:key="event.id"
|
||||||
@@ -352,6 +361,32 @@ defineProps<{
|
|||||||
min-width: 1180px;
|
min-width: 1180px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.calendar-depth-stack {
|
||||||
|
position: relative;
|
||||||
|
min-height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-depth-layer {
|
||||||
|
transition: opacity 260ms ease, transform 260ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-depth-layer-active {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.calendar-depth-layer-hidden {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(10px);
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
z-index: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
.calendar-side-nav {
|
.calendar-side-nav {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
|
|||||||
Reference in New Issue
Block a user