Changeset 1c6d61c in Klonkt for src/views/partials


Ignore:
Timestamp:
06/20/2026 08:19:11 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
cf0de0c
Parents:
4dcefa1
Message:

fix(nav): Timeline/Grid active state via aria-selected (htmx-robust)

Root cause: body-attribute CSS (body[data-feed-view]) does NOT react reliably
after an htmx OOB swap; element attributes do. Therefore the active Timeline/Grid
state is now via [aria-selected="true"] (set by syncAria, which fires on
htmx:afterSettle) instead of body[data-feed-view]. syncAria sets aria-selected
only on feed pages → on calendar/downloads/post both are grey. Template also
sets the initial aria-selected neutral on non-feed pages.

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

Location:
src/views/partials
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/views/partials/shared-styles.ejs

    r4dcefa1 r1c6d61c  
    3636}
    3737.view-switch-btn:hover { color: var(--ink); }
    38 .view-switch-btn[aria-selected="true"] { background: var(--paper); color: var(--ink); box-shadow: 0 1px 2px rgba(0,0,0,.06); }
     38/* Actief = wit (lichte achtergrond, donkere tekst). Via aria-selected (element-
     39   attribuut, door syncAria gezet + op htmx:afterSettle) → htmx-robuust. Op niet-
     40   feed-pagina's zet syncAria aria-selected=false → beide grijs. */
     41.view-switch-btn[aria-selected="true"] { background: var(--ink); color: var(--paper); border-color: var(--ink); }
    3942
    4043/* Agenda = een EIGEN pill (los van Tijdlijn/Grid, zodat de feed-toggle nooit
  • src/views/partials/view-switcher.ejs

    r4dcefa1 r1c6d61c  
    3636    <div class="view-switcher" role="tablist" aria-label="Weergave">
    3737      <button type="button" class="view-switch-btn" data-view="timeline" role="tab"
    38               aria-selected="<%= (typeof site !== 'undefined' && site && site.feed_view_default === 'grid') ? 'false' : 'true' %>">
     38              aria-selected="<%= (!_neutral && !(typeof site !== 'undefined' && site && site.feed_view_default === 'grid')) ? 'true' : 'false' %>">
    3939        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg>
    4040        <span>Tijdlijn</span>
    4141      </button>
    4242      <button type="button" class="view-switch-btn" data-view="grid" role="tab"
    43               aria-selected="<%= (typeof site !== 'undefined' && site && site.feed_view_default === 'grid') ? 'true' : 'false' %>">
     43              aria-selected="<%= (!_neutral && (typeof site !== 'undefined' && site && site.feed_view_default === 'grid')) ? 'true' : 'false' %>">
    4444        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg>
    4545        <span>Grid</span>
Note: See TracChangeset for help on using the changeset viewer.