From eda90dbba69b59242bd0dcd33d0761ccbec4c9f2 Mon Sep 17 00:00:00 2001 From: Niek Rabelink Date: Wed, 9 Sep 2026 22:06:42 +0200 Subject: [PATCH] Refactor board layout for improved full-width maximization and responsive design --- board.php | 125 +++++++++++++++++++++++++++--------------------------- 1 file changed, 63 insertions(+), 62 deletions(-) diff --git a/board.php b/board.php index 878618e..7d2c47f 100644 --- a/board.php +++ b/board.php @@ -13,25 +13,21 @@ $isAdmin = ($userRole === 'ADMIN'); ?> -
+
- -
+ +
+
@@ -120,26 +116,32 @@ $isAdmin = ($userRole === 'ADMIN');
- - -
-
-
- -
-
- - Bord laden... + +
+ + +
+
+
+ + +
+
+ + Bord laden... +
+
+
@@ -635,9 +637,9 @@ function renderCards() { const dotColorClass = LANE_ACCENT_COLORS[lane.color] || 'bg-slate-500'; - // Lane kolom HTML (past zich automatisch aan de schermbreedte aan) + // Lane kolom HTML: flex-1 en min-w-[160px] zodat 5+ lanes in standaardmodus binnen 1280px passen zonder scrollbalk const laneEl = document.createElement('div'); - laneEl.className = 'flex-1 min-w-[260px] rounded-2xl bg-slate-100/70 dark:bg-[#0c0f17]/70 border border-slate-200/80 dark:border-slate-800/80 p-3.5 flex flex-col shadow-xs max-h-[82vh] transition-all duration-200'; + laneEl.className = 'flex-1 min-w-0 sm:min-w-[160px] rounded-2xl bg-slate-100/70 dark:bg-[#0c0f17]/70 border border-slate-200/80 dark:border-slate-800/80 p-3 flex flex-col shadow-xs max-h-[calc(100vh-310px)] min-h-[440px] transition-all duration-200'; laneEl.setAttribute('data-lane-id', lane.id); let cardsHtml = ''; @@ -695,16 +697,16 @@ function renderCards() { ondragstart="onCardDragStart(event, ${card.id})" ondragend="onCardDragEnd(event)" onclick="onCardClick(event, ${card.id})" - class="group/card relative p-3.5 rounded-xl border ${colorClass} shadow-2xs hover:shadow-md hover:-translate-y-0.5 transition cursor-grab active:cursor-grabbing mb-2.5" + class="group/card relative p-3 rounded-xl border ${colorClass} shadow-2xs hover:shadow-md hover:-translate-y-0.5 transition cursor-grab active:cursor-grabbing mb-2.5" > -
-

+
+

${escapeHtml(card.title)}

- ${priorityBadge} +
${priorityBadge}
- ${card.description ? `

${escapeHtml(card.description)}

` : ''} + ${card.description ? `

${escapeHtml(card.description)}

` : ''}
${assigneeHtml} @@ -725,14 +727,14 @@ function renderCards() { laneEl.innerHTML = ` -
-
- -

+
+
+ +

${escapeHtml(lane.title)}

- + ${cards.length}
@@ -1206,40 +1208,39 @@ function escapeHtml(str) { .replace(/'/g, '''); } -// 10. Bord Maximaliseren & Verkleinen (Soepele breedte-overgang) +// 10. Kolommen Maximaliseren & Verkleinen (Soepele breedte-overgang) +// De site-header blijft ALTIJD staan. +// De bovenbalk (Hoofdbord, filters, actieknoppen) behoudt altijd de vaste standaard breedte. +// ALLEEN de aparte lanes wisselen tussen standaard gecentreerde breedte en de volledige schermbreedte. let isBoardMaximized = localStorage.getItem('fociz_board_maximized') === 'true'; function applyMaximizeState(isMax) { - const wrapper = document.getElementById('boardMainWrapper'); + const lanesWrapper = document.getElementById('lanesSectionWrapper'); const mainContainer = document.getElementById('focizMainContainer'); const icon = document.getElementById('maximizeIcon'); const btn = document.getElementById('btnToggleMaximize'); - if (!wrapper || !btn) return; + if (!lanesWrapper || !btn) return; + + // Zorg dat header altijd zichtbaar blijft + document.querySelector('header')?.classList.remove('hidden'); + if (mainContainer) { + mainContainer.style.maxWidth = ''; + mainContainer.style.paddingLeft = ''; + mainContainer.style.paddingRight = ''; + } if (isMax) { - wrapper.classList.add('is-maximized'); - if (mainContainer) { - mainContainer.style.maxWidth = '100vw'; - mainContainer.style.width = '100%'; - mainContainer.style.paddingLeft = '0.5rem'; - mainContainer.style.paddingRight = '0.5rem'; - } - document.querySelector('header')?.classList.add('hidden'); - btn.setAttribute('title', 'Bord verkleinen / navigatie tonen (Escape)'); + lanesWrapper.classList.remove('max-w-7xl', 'mx-auto'); + lanesWrapper.classList.add('is-maximized', 'max-w-none', 'w-full', 'px-1', 'sm:px-3'); + btn.setAttribute('title', 'Kolommen verkleinen naar standaard breedte (Escape)'); if (icon) { icon.setAttribute('data-lucide', 'minimize-2'); } } else { - wrapper.classList.remove('is-maximized'); - if (mainContainer) { - mainContainer.style.maxWidth = ''; - mainContainer.style.width = ''; - mainContainer.style.paddingLeft = ''; - mainContainer.style.paddingRight = ''; - } - document.querySelector('header')?.classList.remove('hidden'); - btn.setAttribute('title', 'Bord maximaliseren (volledig venster)'); + lanesWrapper.classList.remove('is-maximized', 'max-w-none', 'px-1', 'sm:px-3'); + lanesWrapper.classList.add('max-w-7xl', 'mx-auto', 'w-full'); + btn.setAttribute('title', 'Kolommen maximaliseren naar volledige vensterbreedte'); if (icon) { icon.setAttribute('data-lucide', 'maximize-2'); }