diff --git a/webapp-next/src/components/duty/DutyList.test.tsx b/webapp-next/src/components/duty/DutyList.test.tsx index 455c7bf..c5f8b06 100644 --- a/webapp-next/src/components/duty/DutyList.test.tsx +++ b/webapp-next/src/components/duty/DutyList.test.tsx @@ -42,12 +42,13 @@ describe("DutyList", () => { expect(screen.getByText(/No duties this month/i)).toBeInTheDocument(); }); - it("renders quiet placeholder when data not yet loaded for month", () => { + it("renders compact loading placeholder when data not yet loaded for month (no skeleton)", () => { useAppStore.getState().setDuties([]); useAppStore.getState().batchUpdate({ dataForMonthKey: null }); render(); expect(screen.queryByText(/No duties this month/i)).not.toBeInTheDocument(); expect(document.querySelector('[aria-busy="true"]')).toBeInTheDocument(); + expect(document.querySelector('[data-slot="skeleton"]')).not.toBeInTheDocument(); }); it("renders duty with full_name and time range", () => { diff --git a/webapp-next/src/components/duty/DutyList.tsx b/webapp-next/src/components/duty/DutyList.tsx index 70ef692..3fec87e 100644 --- a/webapp-next/src/components/duty/DutyList.tsx +++ b/webapp-next/src/components/duty/DutyList.tsx @@ -17,6 +17,7 @@ import { } from "@/lib/date-utils"; import { cn } from "@/lib/utils"; import { Skeleton } from "@/components/ui/skeleton"; +import { LoadingState } from "@/components/states/LoadingState"; import { DutyTimelineCard } from "./DutyTimelineCard"; /** Extra offset so the sticky calendar slightly overlaps the target card (card sits a bit under the calendar). */ @@ -146,14 +147,8 @@ export function DutyList({ scrollMarginTop = 268, className }: DutyListProps) { if (!hasDataForMonth) { return ( -
- {t("loading")} - +
+
); } diff --git a/webapp-next/src/components/ui/skeleton.tsx b/webapp-next/src/components/ui/skeleton.tsx index 3ec6be7..0118624 100644 --- a/webapp-next/src/components/ui/skeleton.tsx +++ b/webapp-next/src/components/ui/skeleton.tsx @@ -4,7 +4,7 @@ function Skeleton({ className, ...props }: React.ComponentProps<"div">) { return (
)