From b8ab84a009d620a73fe614ecc0ed25b61df67266 Mon Sep 17 00:00:00 2001 From: nmemmert <67961292+nmemmert@users.noreply.github.com> Date: Thu, 22 Oct 2026 08:57:18 -0400 Subject: [PATCH] Planner: Add event sits on the same row as the Calendar | Tasks switch Co-Authored-By: Claude Sonnet 5.5 --- public/calendar.js | 3 +-- public/planner.js | 9 +++++---- public/style.css | 3 +++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/public/calendar.js b/public/calendar.js index 390199e..297dede 100644 --- a/public/calendar.js +++ b/public/calendar.js @@ -54,9 +54,8 @@ const calState = { y: now0.getFullYear(), m: now0.getMonth(), sel: ymd(now0) }; async function viewCalendar() { const mode = store.get('cal_view', 'month'); const v = $('#view'); - v.innerHTML = `
${plannerHead('calendar')} + v.innerHTML = `
${plannerHead('calendar', ``)}
${[['month', 'Month'], ['week', 'Week'], ['day', 'Day'], ['agenda', 'Agenda']].map(([k, l]) => `${l}`).join('')}
-

Loading…

`; $('#ne').onclick = () => newEvent(mode === 'agenda' ? ymd(new Date()) : calState.sel); v.querySelectorAll('.seg a[data-v]').forEach(a => a.onclick = e => { e.preventDefault(); store.set('cal_view', a.dataset.v); viewCalendar(); }); diff --git a/public/planner.js b/public/planner.js index b212382..c740289 100644 --- a/public/planner.js +++ b/public/planner.js @@ -6,10 +6,11 @@ function viewPlanner(args = []) { const want = args[0] && ok.includes(args[0]) ? args[0] : store.get('planner_pane', ok[0]); location.replace('#/' + (ok.includes(want) ? want : ok[0] || 'home')); } -/** The page heading, with a Calendar | Tasks switch when this person may use both. */ -function plannerHead(active) { +/** The page heading, with a Calendar | Tasks switch when this person may use both. `extra` (a button, say) sits on the same row, at the right. */ +function plannerHead(active, extra = '') { try { localStorage.setItem(nk('planner_pane'), JSON.stringify(active)); } catch {} const panes = PLANNER_PANES.filter(p => allowed(p[0])); - if (panes.length < 2) return `

${esc((PLANNER_PANES.find(p => p[0] === active) || [0, 'Planner'])[1])}

`; - return `

Planner

${panes.map(([k, l]) => `${l}`).join('')}
`; + const seg = panes.length < 2 ? '' : `
${panes.map(([k, l]) => `${l}`).join('')}
`; + const title = panes.length < 2 ? (PLANNER_PANES.find(p => p[0] === active) || [0, 'Planner'])[1] : 'Planner'; + return `

${esc(title)}

${seg || extra ? `
${seg}${extra}
` : ''}`; } diff --git a/public/style.css b/public/style.css index 450d465..d591c15 100644 --- a/public/style.css +++ b/public/style.css @@ -559,3 +559,6 @@ body.lyropen { overflow: hidden; } .ngrp span { font-size: 10px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); } body.nav-mini .ngrp { margin: 6px 14px; padding-top: 0; } body.nav-mini .ngrp span { display: none; } + +.prow { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 6px 0 10px; } +.prow .seg { margin: 0; }