Changeset b12e20d in Klonkt
- Timestamp:
- 06/19/2026 10:37:36 PM (3 months ago)
- Branches:
- main
- Children:
- 9163b15
- Parents:
- c1a4147
- Files:
-
- 2 edited
-
CHANGELOG.md (modified) (1 diff)
-
src/views/pages/post-edit.ejs (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
CHANGELOG.md
rc1a4147 rb12e20d 56 56 te scrollen (scroll-binnen-scroll was verwarrend). Het inline schrijfveld groeit 57 57 ook gewoon mee; typen op mobiel/tablet gaat sowieso fullscreen. 58 - Op **mobiel & tablet** (touch) is het content-veld inline **niet meer typbaar** — 59 het is geen tekstveld maar een tap-vlak met een "✎ Tik om te bewerken"-pill. Eén 60 tik opent **volledig scherm**, waar het wél bewerkbaar is. Eruit met de knop (⤡) 61 of Escape. Zo kun je nooit per ongeluk inline typen. 58 - Op **mobiel & tablet** (touch) gedraagt de inhoud zich als een post: inline is het 59 **niet typbaar** (tap-vlak met "✎ Tik om te bewerken"-pill). Eén tik opent een 60 **fullscreen schrijf-"pagina"** — met echte back-knop-ondersteuning, dus de 61 browser-back of de **"✓ Klaar"-knop** sluit 'm en je staat terug in het formulier 62 (alle velden intact), waarna je alles samen opslaat met de gewone Opslaan-knop. 62 63 - Schrijfvenster kan op **volledig scherm** (knop in de editor-toolbar, of Escape om 63 64 terug te gaan) — fijn voor afleidingsvrij schrijven op mobiel. De opmaak-toolbar -
src/views/pages/post-edit.ejs
rc1a4147 rb12e20d 77 77 <div class="pe-editor-frame"> 78 78 <div class="pe-toolbar" id="pe-toolbar" role="toolbar" aria-label="Format"> 79 <button type="button" id="pe-fs-done" class="pe-fs-done" title="Klaar met bewerken">✓ Klaar</button> 79 80 <button type="button" data-cmd="bold" title="Vet (Ctrl+B)" aria-label="Vet"> 80 81 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 4h8a4 4 0 0 1 0 8H6z"/><path d="M6 12h9a4 4 0 0 1 0 8H6z"/></svg> … … 461 462 af, en op touch zijn de scrollbalken verborgen → geen dubbele balk nodig. */ 462 463 464 /* "Klaar"-knop: alleen in fullscreen zichtbaar (links in de toolbar), duidelijke 465 accent-pill i.p.v. een vierkant icoontje. */ 466 .pe-fs-done { display: none; } 467 .pe-editor-frame.pe-fs .pe-fs-done { 468 display: inline-flex; align-items: center; 469 width: auto !important; height: auto !important; 470 padding: .4rem .9rem !important; margin-right: .35rem; 471 background: var(--accent); color: #fff; 472 font-weight: 700; font-size: .9rem; border-radius: 999px; 473 } 474 .pe-editor-frame.pe-fs .pe-fs-done:hover { background: var(--accent); color: #fff; } 475 463 476 /* Editor body — looks like prose, behaves like a textarea */ 464 477 .pe-editor { … … 1257 1270 editorFrame.style.height = ''; 1258 1271 } 1259 function toggleFullscreen() { 1272 function isFs() { return !!(editorFrame && editorFrame.classList.contains('pe-fs')); } 1273 function applyFs(on) { 1260 1274 if (!editorFrame) return; 1261 const on = editorFrame.classList.toggle('pe-fs');1275 editorFrame.classList.toggle('pe-fs', on); 1262 1276 document.body.classList.toggle('pe-fs-open', on); 1263 1277 document.documentElement.classList.toggle('pe-fs-open', on); 1264 1278 if (fsBtn) { 1265 1279 fsBtn.setAttribute('aria-pressed', on ? 'true' : 'false'); 1266 fsBtn.title = on ? ' Verklein' : 'Volledig scherm';1280 fsBtn.title = on ? 'Klaar' : 'Volledig scherm'; 1267 1281 } 1268 1282 if (window.visualViewport) { … … 1283 1297 } else { 1284 1298 if (isTouch) editor.blur(); 1285 // Bij verkleinen: naar de TOP van de content scrollen i.p.v. ergens onderaan1299 // Bij sluiten: naar de TOP van de content scrollen i.p.v. ergens onderaan 1286 1300 // (footer) te blijven hangen. 1287 1301 requestAnimationFrame(function () { … … 1290 1304 } 1291 1305 } 1306 // De fullscreen schrijf-"pagina": openen pusht een history-state zodat de browser- 1307 // back-knop (en de Klaar-knop) 'm sluit en je terug bent in het formulier — voelt 1308 // als een aparte pagina, maar álle formuliervelden blijven intact (zelfde DOM). 1309 function openFs() { 1310 if (isFs()) return; 1311 try { history.pushState({ peFs: true }, ''); } catch (_) {} 1312 applyFs(true); 1313 } 1314 function closeFs() { 1315 if (!isFs()) return; 1316 if (history.state && history.state.peFs) history.back(); // → popstate sluit af 1317 else applyFs(false); 1318 } 1319 function toggleFullscreen() { if (isFs()) closeFs(); else openFs(); } 1320 window.addEventListener('popstate', function () { if (isFs()) applyFs(false); }); 1292 1321 if (fsBtn) fsBtn.addEventListener('click', toggleFullscreen); 1322 var fsDoneBtn = document.getElementById('pe-fs-done'); 1323 if (fsDoneBtn) fsDoneBtn.addEventListener('click', closeFs); 1293 1324 document.addEventListener('keydown', (e) => { 1294 if (e.key === 'Escape' && editorFrame && editorFrame.classList.contains('pe-fs')) { 1295 e.preventDefault(); 1296 toggleFullscreen(); 1297 } 1325 if (e.key === 'Escape' && isFs()) { e.preventDefault(); closeFs(); } 1298 1326 }); 1299 1327 … … 1306 1334 editor.setAttribute('data-placeholder', 'Tik om te schrijven…'); 1307 1335 editor.addEventListener('click', function () { 1308 if ( editorFrame && !editorFrame.classList.contains('pe-fs')) toggleFullscreen();1336 if (!isFs()) openFs(); 1309 1337 }); 1310 1338 }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)