diff --git a/frontend/src/pages.jsx b/frontend/src/pages.jsx index 1f02ac2..f73b4f0 100644 --- a/frontend/src/pages.jsx +++ b/frontend/src/pages.jsx @@ -2179,6 +2179,17 @@ export function RoosterScherm({ mode }) { setBewerkBlok(null); setToonForm(true); } + // Direct vanuit een tijdvak in het rooster een vak toevoegen: tijdslot vast, + // en het doel alvast op de actieve scope (klas/leerling) zetten. + function openNieuwBlokVoorSlot(tijdslotId) { + setBewerkBlok(null); + const basis = { ...leeg, tijdslot: String(tijdslotId) }; + if (scopeType === "klas" && scopeId) { basis.doel_type = "groep"; basis.doel = String(scopeId); } + else if (scopeType === "leerling" && scopeId) { basis.doel_type = "leerling"; basis.doel = String(scopeId); } + setForm(basis); + resetNieuweSplit(); + setToonForm(true); + } function sluitNieuwBlok() { setToonForm(false); resetNieuweSplit(); @@ -2471,7 +2482,6 @@ export function RoosterScherm({ mode }) { )} - {edit && schooljaar && tab === "week" && } {schooljaar && (edit ? tab === "week" : true) && ( )} @@ -2528,7 +2538,6 @@ export function RoosterScherm({ mode }) { {edit && (
- {(blokwizardAan || autoroosterAan) && (
@@ -2696,6 +2705,9 @@ export function RoosterScherm({ mode }) { >
{t.start_tijd?.slice(0, 5)} {t.naam}
{renderSlotBlokken(slotBlokken, iso, kal)} + {edit && !kal && ( + + )}
); })} @@ -2705,24 +2717,33 @@ export function RoosterScherm({ mode }) {
)} - {tab === "schooljaar" && ( -
-

Maak hier snel een schooljaar aan en beheer de kalender (studiedagen, vrije dagen, vakanties).

- -
- )} - {edit && tab === "wizard" && blokwizardAan && } {edit && tab === "auto" && autoroosterAan && } {tab === "instellingen" && ( -
-

Bouwstenen van het rooster — beheer ze hier zonder het Rooster te verlaten.

- - - - +
+

Beheer hier alle bouwstenen van het rooster. Klik een onderdeel open om het te bewerken.

+
+ 📅 Schooljaar & kalender +

Maak een schooljaar aan en beheer de kalender (studiedagen, vrije dagen, vakanties).

+
+
+ 🕒 Tijdvakken +

De dag- en tijdindeling waarop vakken geplaatst kunnen worden.

+
+
+ 📚 Vakken & activiteiten +

De vakken/activiteiten met kleur en icoon.

+
+
+ 🚪 Lokalen +

Ruimtes met capaciteit; meetellen in de dubbele-boekingcheck.

+
+
+ 📍 Locaties +

Vrije locatie-aanduidingen (bv. gymzaal, zwembad).

+
)} diff --git a/frontend/src/styles.css b/frontend/src/styles.css index 9862ec1..3cdf6d0 100644 --- a/frontend/src/styles.css +++ b/frontend/src/styles.css @@ -166,6 +166,18 @@ input[type="color"] { padding: 2px; width: 44px; min-width: 44px; height: 38px; .slot-cel { border: 1px dashed transparent; border-radius: 8px; padding: 4px; margin-bottom: 8px; transition: background .1s, border-color .1s; } .slot-cel.hover { border-color: var(--brand); background: var(--brand-soft); } .slot-tijd { font-size: 11px; color: var(--muted); padding: 2px 2px 4px; } +/* Snel een vak toevoegen direct in een tijdvak */ +.slot-add { width: 100%; margin-top: 4px; border: 1px dashed var(--line); background: transparent; color: var(--muted); border-radius: 8px; padding: 5px; font: inherit; font-size: 12px; cursor: pointer; opacity: .55; transition: opacity .1s, border-color .1s, color .1s, background .1s; } +.slot-cel:hover .slot-add, .slot-add:focus-visible { opacity: 1; } +.slot-add:hover { border-color: var(--brand); color: var(--brand); background: var(--brand-soft); } +/* Instellingen als overzichtelijke uitklapsecties */ +.instellingen-secties { display: flex; flex-direction: column; gap: 10px; } +.inst-sectie { border: 1px solid var(--line); border-radius: 10px; background: var(--panel); padding: 0 14px; } +.inst-sectie > summary { cursor: pointer; font-weight: 600; padding: 12px 0; list-style: none; display: flex; align-items: center; gap: 8px; } +.inst-sectie > summary::-webkit-details-marker { display: none; } +.inst-sectie > summary::after { content: "▸"; color: var(--muted); margin-left: auto; } +.inst-sectie[open] > summary::after { content: "▾"; } +.inst-body { padding: 0 0 14px; border-top: 1px solid var(--line); margin-top: -2px; padding-top: 12px; } .rooster-blok { touch-action: none; } .rooster-blok.vervallen { opacity: .55; }