fix: schedule grid — clean time labels and corner cell background
This commit is contained in:
@@ -95,10 +95,8 @@ function timeToMinutes(timeStr: string): number {
|
|||||||
return t.h * 60 + t.m;
|
return t.h * 60 + t.m;
|
||||||
}
|
}
|
||||||
|
|
||||||
const GRID_TOP_PAD = 8; // px — space so the first time label isn't clipped
|
|
||||||
|
|
||||||
function minutesToY(minutes: number): number {
|
function minutesToY(minutes: number): number {
|
||||||
return ((minutes - HOUR_START * 60) / 60) * HOUR_HEIGHT + GRID_TOP_PAD;
|
return ((minutes - HOUR_START * 60) / 60) * HOUR_HEIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
function yToMinutes(y: number): number {
|
function yToMinutes(y: number): number {
|
||||||
@@ -912,7 +910,7 @@ function CalendarGrid({
|
|||||||
<div className="min-w-[600px]">
|
<div className="min-w-[600px]">
|
||||||
{/* Day headers */}
|
{/* Day headers */}
|
||||||
<div className="flex border-b border-white/10 bg-neutral-800/50">
|
<div className="flex border-b border-white/10 bg-neutral-800/50">
|
||||||
<div className="w-14 shrink-0" />
|
<div className="w-14 shrink-0 bg-neutral-900" />
|
||||||
{sortedDays.map((day, di) => (
|
{sortedDays.map((day, di) => (
|
||||||
<div
|
<div
|
||||||
key={day.day}
|
key={day.day}
|
||||||
@@ -929,12 +927,12 @@ function CalendarGrid({
|
|||||||
{/* Time grid */}
|
{/* Time grid */}
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
{/* Time labels */}
|
{/* Time labels */}
|
||||||
<div className="w-14 shrink-0 relative" style={{ height: `${TOTAL_HOURS * HOUR_HEIGHT + GRID_TOP_PAD}px` }}>
|
<div className="w-14 shrink-0 relative" style={{ height: `${TOTAL_HOURS * HOUR_HEIGHT}px` }}>
|
||||||
{hours.slice(0, -1).map((h) => (
|
{hours.slice(0, -1).map((h, i) => (
|
||||||
<div
|
<div
|
||||||
key={h}
|
key={h}
|
||||||
className="absolute left-0 right-0 text-right pr-2 text-xs text-neutral-500"
|
className={`absolute left-0 right-0 text-right pr-2 text-xs text-neutral-500${i > 0 ? " -translate-y-1/2" : ""}`}
|
||||||
style={{ top: `${(h - HOUR_START) * HOUR_HEIGHT + GRID_TOP_PAD - 6}px` }}
|
style={{ top: `${(h - HOUR_START) * HOUR_HEIGHT}px` }}
|
||||||
>
|
>
|
||||||
{String(h).padStart(2, "0")}:00
|
{String(h).padStart(2, "0")}:00
|
||||||
</div>
|
</div>
|
||||||
@@ -953,7 +951,7 @@ function CalendarGrid({
|
|||||||
key={day.day}
|
key={day.day}
|
||||||
ref={(el) => { columnRefs.current[di] = el; }}
|
ref={(el) => { columnRefs.current[di] = el; }}
|
||||||
className={`flex-1 border-l border-white/10 relative ${drag ? "cursor-grabbing" : "cursor-pointer"}`}
|
className={`flex-1 border-l border-white/10 relative ${drag ? "cursor-grabbing" : "cursor-pointer"}`}
|
||||||
style={{ height: `${TOTAL_HOURS * HOUR_HEIGHT + GRID_TOP_PAD}px` }}
|
style={{ height: `${TOTAL_HOURS * HOUR_HEIGHT}px` }}
|
||||||
onMouseMove={(e) => {
|
onMouseMove={(e) => {
|
||||||
if (drag) return;
|
if (drag) return;
|
||||||
// Ignore if hovering over a class block
|
// Ignore if hovering over a class block
|
||||||
@@ -980,7 +978,7 @@ function CalendarGrid({
|
|||||||
<div
|
<div
|
||||||
key={h}
|
key={h}
|
||||||
className="absolute left-0 right-0 border-t border-white/5"
|
className="absolute left-0 right-0 border-t border-white/5"
|
||||||
style={{ top: `${(h - HOUR_START) * HOUR_HEIGHT + GRID_TOP_PAD}px` }}
|
style={{ top: `${(h - HOUR_START) * HOUR_HEIGHT}px` }}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
{/* Half-hour lines */}
|
{/* Half-hour lines */}
|
||||||
@@ -988,7 +986,7 @@ function CalendarGrid({
|
|||||||
<div
|
<div
|
||||||
key={`${h}-30`}
|
key={`${h}-30`}
|
||||||
className="absolute left-0 right-0 border-t border-white/[0.02]"
|
className="absolute left-0 right-0 border-t border-white/[0.02]"
|
||||||
style={{ top: `${(h - HOUR_START) * HOUR_HEIGHT + HOUR_HEIGHT / 2 + GRID_TOP_PAD}px` }}
|
style={{ top: `${(h - HOUR_START) * HOUR_HEIGHT + HOUR_HEIGHT / 2}px` }}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user