From 4459f60019ecc7133948a7b88a7fa3c04f50f460 Mon Sep 17 00:00:00 2001 From: bes-r <27369668+bes-r@users.noreply.github.com> Date: Mon, 6 Jul 2026 20:55:18 +0200 Subject: [PATCH] Improve schedule duplicate blocks and conflict styling --- frontend/src/pages.jsx | 10 +++++----- frontend/src/styles.css | 23 +++++++++++++++++++---- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/frontend/src/pages.jsx b/frontend/src/pages.jsx index 81a1528..99450dd 100644 --- a/frontend/src/pages.jsx +++ b/frontend/src/pages.jsx @@ -2464,7 +2464,7 @@ export function RoosterScherm({ mode }) { out.push(
{klasKop(eerste.doel_naam, eerste.doel_type, blks.length > 1 ? blks.length : null, doelIcoon(eerste.doel_type))} -
{blks.map((b) => renderVakKaart(b, iso, kal))}
+
1 ? "split-vakken meerdere-vakken" : "split-vakken"}>{blks.map((b) => renderVakKaart(b, iso, kal))}
); }); @@ -2481,7 +2481,7 @@ export function RoosterScherm({ mode }) { return (
{groep ? groep.naam : "Groep"}
-
{groepBlokken.map((b) => renderVakKaart(b, iso, kal))}
+
1 ? "split-vakken meerdere-vakken" : "split-vakken"}>{groepBlokken.map((b) => renderVakKaart(b, iso, kal))}
); })} @@ -2499,7 +2499,7 @@ export function RoosterScherm({ mode }) { out.push(
{klasKop(groepNaam, "groep", groepBlokken.length > 1 ? groepBlokken.length : null, "👥")} -
{groepBlokken.map((b) => renderVakKaart(b, iso, kal))}
+
1 ? "split-vakken meerdere-vakken" : "split-vakken"}>{groepBlokken.map((b) => renderVakKaart(b, iso, kal))}
); return; @@ -2514,7 +2514,7 @@ export function RoosterScherm({ mode }) { {heleGroep.length > 0 && (
Hele groep
-
{heleGroep.map((b) => renderVakKaart(b, iso, kal))}
+
1 ? "split-vakken meerdere-vakken" : "split-vakken"}>{heleGroep.map((b) => renderVakKaart(b, iso, kal))}
)} {subIds.map((sid) => { @@ -2523,7 +2523,7 @@ export function RoosterScherm({ mode }) { return (
{sub ? sub.naam : "Subgroep"}
-
{blocks.map((b) => renderVakKaart(b, iso, kal))}
+
1 ? "split-vakken meerdere-vakken" : "split-vakken"}>{blocks.map((b) => renderVakKaart(b, iso, kal))}
); })} diff --git a/frontend/src/styles.css b/frontend/src/styles.css index cc1e166..8b67b1f 100644 --- a/frontend/src/styles.css +++ b/frontend/src/styles.css @@ -235,6 +235,14 @@ input[type="color"] { padding: 2px; width: 44px; min-width: 44px; height: 38px; .split-kop { font-size: 11px; font-weight: 700; color: var(--muted); margin: 0 0 4px; } .split-node-kop { display: inline-flex; max-width: 100%; align-items: center; border: 1px solid #bfdbfe; border-radius: 6px; background: #fff; color: var(--brand); padding: 4px 7px; margin-bottom: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .split-vakken { display: grid; gap: 6px; } +.split-vakken.meerdere-vakken { + gap: 5px; + padding-left: 7px; + border-left: 2px solid var(--line); +} +.split-vakken.meerdere-vakken .vak-kaart { + border-radius: 6px; +} .split-vak { position: relative; border: 1px solid var(--line); border-left: 4px solid var(--brand); border-radius: 6px; background: #fff; padding: 6px 6px 5px; margin-bottom: 6px; cursor: pointer; box-shadow: 0 1px 0 rgba(31,41,55,.03); } .split-vak.open { box-shadow: 0 0 0 2px var(--brand-soft); } .split-vak.vervallen { opacity: .55; } @@ -572,7 +580,10 @@ input[type="color"] { padding: 2px; width: 44px; min-width: 44px; height: 38px; .wm-vak-kop { display: flex; align-items: center; gap: 4px; } .wm-vak-naam { flex: 1; min-width: 0; font-size: 12px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; } .wm-vak-meta { color: var(--muted); font-size: 11px; margin-top: 2px; } -.wm-vak.in-conflict { outline: 2px solid #ef4444; outline-offset: 1px; box-shadow: 0 0 0 4px rgba(239,68,68,.15); } +.wm-vak.in-conflict { + outline: 0; + box-shadow: inset 0 0 0 2px #ef4444, 0 1px 0 rgba(31,41,55,.03); +} .wm-add { width: 100%; border: 1px dashed var(--line); background: transparent; color: var(--muted); border-radius: 7px; padding: 4px; cursor: pointer; font: inherit; font-size: 13px; opacity: .6; } .wm-cel:hover .wm-add { opacity: 1; } .wm-add:hover { border-color: var(--brand); color: var(--brand); background: var(--brand-soft); } @@ -608,8 +619,7 @@ input[type="color"] { padding: 2px; width: 44px; min-width: 44px; height: 38px; .details-compact .split-kolommen { gap: 6px; } .details-compact .split-vakken { gap: 5px; } .details-compact .rb-picto { height: 18px; width: 18px; } -.details-compact .split-title span, -.details-compact .split-count { display: none; } +.details-compact .split-title span { display: none; } .rooster-edit .vak-kaart { background: #fff; } .rooster-edit .slot-add { opacity: .35; padding: 4px; } .rooster-edit .slot-cel:hover .slot-add { opacity: 1; } @@ -679,4 +689,9 @@ input[type="color"] { padding: 2px; width: 44px; min-width: 44px; height: 38px; .conflict-lijst li { padding: 4px 0 4px 16px; position: relative; color: #7f1d1d; font-size: 14px; } .conflict-lijst li::before { content: "•"; position: absolute; left: 2px; } .conflict-lijst li.waarschuwing { color: #92400e; } -.rooster-blok.in-conflict, .split-vak.in-conflict, .vak-kaart.in-conflict { outline: 2px solid #ef4444; outline-offset: 1px; box-shadow: 0 0 0 4px rgba(239,68,68,.15); } +.rooster-blok.in-conflict, +.split-vak.in-conflict, +.vak-kaart.in-conflict { + outline: 0; + box-shadow: inset 0 0 0 2px #ef4444, 0 1px 0 rgba(31,41,55,.03); +}