[object Object]

← back to Ticket System

board: inline ✕ on each stat pill — click to hide that pill without opening the ◍ menu (stopPropagation so it doesn't also filter); re-check it in ◍ Pills to bring back. Verified 7→6 on ✕ click (TK-10429)

83a32f4123a66d4a79337bb178d0d13ebd4cd79e · 2026-08-10 16:29:40 -0700 · steve

Files touched

Diff

commit 83a32f4123a66d4a79337bb178d0d13ebd4cd79e
Author: steve <steve@designerwallcoverings.com>
Date:   Mon Aug 10 16:29:40 2026 -0700

    board: inline ✕ on each stat pill — click to hide that pill without opening the ◍ menu (stopPropagation so it doesn't also filter); re-check it in ◍ Pills to bring back. Verified 7→6 on ✕ click (TK-10429)
---
 board.html | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/board.html b/board.html
index a05badce..0983f870 100644
--- a/board.html
+++ b/board.html
@@ -9,6 +9,7 @@
   h1{font-size:15px;margin:0;letter-spacing:.06em;white-space:nowrap}
   .pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--mut);background:var(--card);border:1px solid var(--line);border-radius:20px;padding:3px 9px;cursor:pointer;user-select:none}
   .pill b{color:var(--ink)} .pill.on{outline:1px solid var(--acc)}
+  .pill .px{margin-left:6px;color:var(--faint);cursor:pointer;font-size:10px;opacity:.55} .pill:hover .px{opacity:1} .pill .px:hover{color:var(--blocked)}
   .dot{width:8px;height:8px;border-radius:50%;display:inline-block}
   .search{background:var(--card);border:1px solid var(--line);color:var(--ink);border-radius:9px;padding:7px 11px;font-size:13px;min-width:200px}
   .btn{background:var(--card);border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:6px 10px;font-size:12px;cursor:pointer}
@@ -149,15 +150,17 @@ function render(){
 function renderPills(){
   const by={open:0,doing:0,blocked:0,done:0};for(const t of DATA)by[t.status]=(by[t.status]||0)+1;
   const stale=DATA.filter(t=>t.status==='doing'&&agoH(lastTs(t))>24).length;
-  const statPill=s=>`<span class="pill" onclick="setQ('${s}')"><span class="dot s-${s}" style="background:currentColor"></span>${s} <b>${by[s]}</b></span>`;
+  const x=k=>`<span class="px" title="hide this pill" onclick="event.stopPropagation();hidePill('${k}')">✕</span>`;
+  const statPill=s=>`<span class="pill" onclick="setQ('${s}')"><span class="dot s-${s}" style="background:currentColor"></span>${s} <b>${by[s]}</b>${x(s)}</span>`;
   const html={
     open:statPill('open'), doing:statPill('doing'), blocked:statPill('blocked'), done:statPill('done'),
-    stale:`<span class="pill" title="doing >24h">⚠ stale <b>${stale}</b></span>`,
-    total:`<span class="pill">total <b>${DATA.length}</b></span>`,
-    shown:`<span class="pill">shown <b id="count">${DATA.filter(match).length}</b></span>`,
+    stale:`<span class="pill" title="doing >24h">⚠ stale <b>${stale}</b>${x('stale')}</span>`,
+    total:`<span class="pill">total <b>${DATA.length}</b>${x('total')}</span>`,
+    shown:`<span class="pill">shown <b id="count">${DATA.filter(match).length}</b>${x('shown')}</span>`,
   };
   $('#pills').innerHTML=PILLS.filter(p=>PILL_VIS[p.k]).map(p=>html[p.k]).join('');
 }
+window.hidePill=k=>{PILL_VIS[k]=0;save('tkPills',PILL_VIS);renderPills();renderPillMenu();};
 function renderColMenu(){
   const m=$('#colmenu');const groups=[...new Set(COLS.map(c=>c.g))];
   m.innerHTML=groups.map(g=>`<div class="gh">${g}</div>`+COLS.filter(c=>c.g===g).map(c=>`<label><input type="checkbox" data-k="${c.k}" ${VIS[c.k]?'checked':''}>${esc(c.l)}</label>`).join('')).join('');

← dddb9a42 board: split the combined total/shown pill into two independ  ·  back to Ticket System  ·  auto-data-snapshot: 2026-08-10T16:40:28 (1 data files) — 5x/ 554efcc7 →