diff --git a/cms/admin/src/App.jsx b/cms/admin/src/App.jsx index 01cec75..c26fe09 100644 --- a/cms/admin/src/App.jsx +++ b/cms/admin/src/App.jsx @@ -70,6 +70,7 @@ function Login() { function Dashboard({ email }) { const [entries, setEntries] = useState([]); const [current, setCurrent] = useState(null); + const [query, setQuery] = useState(''); const [msg, setMsg] = useState(null); async function refresh() { @@ -80,15 +81,16 @@ function Dashboard({ email }) { useEffect(() => { if (!msg) return; const t = setTimeout(() => setMsg(null), 4000); return () => clearTimeout(t); }, [msg]); async function open(entry) { - try { - const e = await api.read(entry.path); - setCurrent(fromRead(e)); - } catch (err) { setMsg({ type: 'err', text: err.message }); } + try { setCurrent(fromRead(await api.read(entry.path))); } + catch (err) { setMsg({ type: 'err', text: err.message }); } } - // Nach Typ gruppieren. + const q = query.trim().toLowerCase(); + const filtered = q + ? entries.filter((e) => e.title.toLowerCase().includes(q) || (e.section || '').includes(q)) + : entries; const groups = { beitrag: [], seite: [], rubrik: [] }; - for (const e of entries) (groups[e.kind] || groups.seite).push(e); + for (const e of filtered) (groups[e.kind] || groups.seite).push(e); return (
@@ -96,22 +98,29 @@ function Dashboard({ email }) { OPENBUREAU Redaktion - {email} + {email}