diff --git a/frontend/src/pages.jsx b/frontend/src/pages.jsx index 5f3639e..abff120 100644 --- a/frontend/src/pages.jsx +++ b/frontend/src/pages.jsx @@ -3361,8 +3361,15 @@ export function PeriodeRoosterPage() { /* -------------------------------- Huisstijl / logo ------------------------ */ // Klein logo dat in elke roosterweergave en op afdrukken verschijnt. export function RoosterLogo({ print = false }) { - const [logo, setLogo] = useState(null); - useEffect(() => { getHuisstijl().then((h) => setLogo(h && h.logo ? h.logo : null)).catch(() => {}); }, []); + const [huis, setHuis] = useState(null); + useEffect(() => { + let actief = true; + getHuisstijl().then((h) => { if (actief) setHuis(h); }).catch(() => {}); + const update = (e) => setHuis(e.detail || null); + window.addEventListener("roosterwijs:huisstijl", update); + return () => { actief = false; window.removeEventListener("roosterwijs:huisstijl", update); }; + }, []); + const logo = logoUrl(huis); if (!logo) return null; return ; } @@ -3382,6 +3389,13 @@ function _themaDirect(h) { if (h && h.accent_kleur) root.style.setProperty("--accent", h.accent_kleur); } +function logoUrl(huis) { + if (!huis || !huis.logo) return ""; + const versie = huis.aangepast_op || ""; + if (!versie) return huis.logo; + return `${huis.logo}${huis.logo.includes("?") ? "&" : "?"}v=${encodeURIComponent(versie)}`; +} + export function HuisstijlPage() { const [huis, setHuis] = useState(null); const [kwaliteit, setKwaliteit] = useState(null); @@ -3424,6 +3438,7 @@ export function HuisstijlPage() { const r = await uploadLogo(f); setHuis(r); setKwaliteit(r.kwaliteit || null); + window.dispatchEvent(new CustomEvent("roosterwijs:huisstijl", { detail: r })); } catch (err) { setError(err.message); if (err.data && err.data.kwaliteit) setKwaliteit(err.data.kwaliteit); @@ -3432,7 +3447,7 @@ export function HuisstijlPage() { } async function wis() { setBezig(true); setError(null); - try { const r = await verwijderLogo(); setHuis(r); setKwaliteit(null); } catch (e) { setError(e.message); } + try { const r = await verwijderLogo(); setHuis(r); setKwaliteit(null); window.dispatchEvent(new CustomEvent("roosterwijs:huisstijl", { detail: r })); } catch (e) { setError(e.message); } setBezig(false); } @@ -3457,7 +3472,7 @@ export function HuisstijlPage() {

Het logo verschijnt in elke roosterweergave en op afdrukken. Gebruik bij voorkeur een transparante PNG of SVG; een logo met een gevulde (witte) achtergrond valt op een gekleurde balk lelijk op.

- {huis && huis.logo ? Logo : Nog geen logo} + {huis && huis.logo ? Logo : Nog geen logo}