From d21787862e3162dbb2c125e9128e5a712dd48af7 Mon Sep 17 00:00:00 2001 From: sebastjanartic <45803536-sebastjanartic@users.noreply.replit.com> Date: Sat, 28 Feb 2026 18:36:16 +0000 Subject: [PATCH] Update news widget to automatically rotate articles Modify the news widget to display a fixed number of articles and implement automatic rotation with hover pause functionality. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 413891e8-d784-4bea-b9f5-91a5a68316b4 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: c64a3c69-568c-4dbf-9e2a-ec93f7ac0f90 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/f209e72a-0939-48fa-84fc-57854de71967/413891e8-d784-4bea-b9f5-91a5a68316b4/RVXhOPb Replit-Helium-Checkpoint-Created: true --- attached_assets/image_1772303671336.png | Bin 0 -> 22963 bytes client/src/components/news-widget.tsx | 48 +++++++++++++++++++----- 2 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 attached_assets/image_1772303671336.png diff --git a/attached_assets/image_1772303671336.png b/attached_assets/image_1772303671336.png new file mode 100644 index 0000000000000000000000000000000000000000..55ef2823925ff507fe3c2ee36113d98d84e63894 GIT binary patch literal 22963 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 literal 0 HcmV?d00001 diff --git a/client/src/components/news-widget.tsx b/client/src/components/news-widget.tsx index 26d5fc1..8f80365 100644 --- a/client/src/components/news-widget.tsx +++ b/client/src/components/news-widget.tsx @@ -1,4 +1,5 @@ import { useQuery } from "@tanstack/react-query"; +import { useState, useEffect, useCallback } from "react"; import { Newspaper, ExternalLink } from "lucide-react"; interface NewsItem { @@ -8,21 +9,50 @@ interface NewsItem { pubDate: string; } +const VISIBLE_COUNT = 5; + export function NewsWidget() { const { data: news, isLoading } = useQuery({ queryKey: ["/api/news-feed"], }); + const [offset, setOffset] = useState(0); + const [paused, setPaused] = useState(false); + + const items = news || []; + const total = items.length; + + const advance = useCallback(() => { + if (total <= VISIBLE_COUNT) return; + setOffset((o) => (o + 1) % total); + }, [total]); + + useEffect(() => { + if (paused || total <= VISIBLE_COUNT) return; + const timer = setInterval(advance, 5000); + return () => clearInterval(timer); + }, [paused, advance, total]); + + const visible: NewsItem[] = []; + for (let i = 0; i < Math.min(VISIBLE_COUNT, total); i++) { + visible.push(items[(offset + i) % total]); + } + return ( -
+
setPaused(true)} + onMouseLeave={() => setPaused(false)} + data-testid="widget-news" + >

Musiknachrichten

-
- {(news || []).slice(0, 8).map((item, i) => ( +
+ {visible.map((item, i) => (
- {i < 4 &&
} + {i < VISIBLE_COUNT - 1 &&
} ))} {isLoading && ( -
- {Array.from({ length: 4 }).map((_, i) => ( +
+ {Array.from({ length: VISIBLE_COUNT }).map((_, i) => (
- {i < 3 &&
} + {i < VISIBLE_COUNT - 1 &&
}
))}
)} - {!isLoading && (!news || news.length === 0) && ( + {!isLoading && total === 0 && (

Keine Nachrichten verfügbar

)}