Changeset 61bb585 in Klonkt


Ignore:
Timestamp:
06/19/2026 12:50:52 PM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
a4f6827
Parents:
5d68686
Message:

feat(editor): content not typeable inline on touch — editing = fullscreen

On pointer:coarse the content field is inline contenteditable=false (not
a text field); a tap opens fullscreen where contenteditable=true is set +
focus is given. Exit fullscreen → non-editable again + blur. "Tap to
edit" pill as affordance; placeholder → "Tap to write…". Desktop
unchanged.

Co-Authored-By: Claude <noreply@…>

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CHANGELOG.md

    r5d68686 r61bb585  
    4949  te scrollen (scroll-binnen-scroll was verwarrend). Het inline schrijfveld groeit
    5050  ook gewoon mee; typen op mobiel/tablet gaat sowieso fullscreen.
    51 - Op **mobiel & tablet** (touch) gebeurt typen voortaan **altijd in volledig scherm**:
    52   zodra je in het schrijfveld tikt, gaat de editor automatisch fullscreen. Eruit met
    53   de knop (⤡) of Escape.
     51- Op **mobiel & tablet** (touch) is het content-veld inline **niet meer typbaar** —
     52  het is geen tekstveld maar een tap-vlak met een "✎ Tik om te bewerken"-pill. Eén
     53  tik opent **volledig scherm**, waar het wél bewerkbaar is. Eruit met de knop (⤡)
     54  of Escape. Zo kun je nooit per ongeluk inline typen.
    5455- Schrijfvenster kan op **volledig scherm** (knop in de editor-toolbar, of Escape om
    5556  terug te gaan) — fijn voor afleidingsvrij schrijven op mobiel. De opmaak-toolbar
  • src/views/pages/post-edit.ejs

    r5d68686 r61bb585  
    477477   scrollt. */
    478478.pe-editor-frame:not(.pe-fs) .pe-editor { overflow: visible; }
     479
     480/* Touch: het inline content-veld is geen tekstveld maar een tap-vlak → fullscreen
     481   bewerken. Een duidelijke "tik om te bewerken"-pill maakt dat zichtbaar. */
     482.pe-editor.pe-tap-to-edit { cursor: pointer; }
     483@media (pointer: coarse) {
     484  .pe-editor-frame:not(.pe-fs) { position: relative; }
     485  .pe-editor-frame:not(.pe-fs)::after {
     486    content: "✎ Tik om te bewerken";
     487    position: absolute; right: .6rem; bottom: .6rem;
     488    background: var(--accent); color: #fff;
     489    font-size: .8rem; font-weight: 600; padding: .3rem .7rem; border-radius: 999px;
     490    pointer-events: none; opacity: .92; box-shadow: 0 2px 8px rgba(0,0,0,.25);
     491  }
     492}
    479493.pe-editor.is-dragover {
    480494  outline: 2px dashed var(--accent);
     
    12141228  const fsBtn = document.getElementById('pe-fullscreen-btn');
    12151229  const editorFrame = document.querySelector('.pe-editor-frame');
     1230  const isTouch = !!(window.matchMedia && window.matchMedia('(pointer: coarse)').matches);
    12161231
    12171232  // Op mobiel duwt het toetsenbord de zichtbare (visual) viewport omhoog terwijl
     
    12511266      }
    12521267    }
     1268    // Op touch is het veld inline NIET bewerkbaar; alleen in fullscreen wel.
     1269    if (isTouch) editor.setAttribute('contenteditable', on ? 'true' : 'false');
    12531270    if (on) editor.focus({ preventScroll: true });
     1271    else if (isTouch) editor.blur();
    12541272  }
    12551273  if (fsBtn) fsBtn.addEventListener('click', toggleFullscreen);
     
    12611279  });
    12621280
    1263   // Op mobiel/tablet (touch-apparaat = pointer:coarse) gebeurt typen ALTIJD
    1264   // fullscreen. We gaan fullscreen zowel bij focus ALS bij de eerste invoer
    1265   // (beforeinput) — zo kun je ook na het verlaten van fullscreen niet per ongeluk
    1266   // zonder fullscreen doortypen. Eruit kan met de knop (⤡) of Escape.
    1267   var isTouch = window.matchMedia && window.matchMedia('(pointer: coarse)').matches;
     1281  // Op mobiel/tablet (touch): het content-veld is INLINE NIET bewerkbaar — het is
     1282  // dan geen tekstveld. Eén tik → fullscreen, waar het wél bewerkbaar wordt
     1283  // (toggleFullscreen zet contenteditable aan/uit). Zo kun je nooit inline typen.
    12681284  if (isTouch) {
    1269     var enterFs = function () {
     1285    editor.setAttribute('contenteditable', 'false');
     1286    editor.classList.add('pe-tap-to-edit');
     1287    editor.setAttribute('data-placeholder', 'Tik om te schrijven…');
     1288    editor.addEventListener('click', function () {
    12701289      if (editorFrame && !editorFrame.classList.contains('pe-fs')) toggleFullscreen();
    1271     };
    1272     editor.addEventListener('focus', enterFs);
    1273     editor.addEventListener('beforeinput', enterFs);
    1274     editor.addEventListener('pointerup', enterFs);
     1290    });
    12751291  }
    12761292
Note: See TracChangeset for help on using the changeset viewer.