diff --git a/frontend/css/app.css b/frontend/css/app.css index 431df1a..21d6757 100644 --- a/frontend/css/app.css +++ b/frontend/css/app.css @@ -1455,6 +1455,9 @@ a { color: var(--primary); text-decoration: none; } .ct-dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; margin-right: 5px; vertical-align: middle; flex-shrink: 0; } .ct-empty { color: var(--text-3); font-size: 13px; padding: 16px 0; text-align: center; } .ct-toggle { cursor: pointer; } +.ct-eye { opacity: .55; transition: opacity .15s; } +.ct-eye[data-ct-visible="1"] { opacity: 1; } +.ct-eye:hover { opacity: 1; } /* ── Month View (spanning bars) ─────────────────────────── */ .month-body { diff --git a/frontend/js/calendar.js b/frontend/js/calendar.js index fd27cf2..e893a34 100644 --- a/frontend/js/calendar.js +++ b/frontend/js/calendar.js @@ -3355,11 +3355,13 @@ function renderCalendarTable() { const container = document.getElementById('cal-settings-table'); if (!container) return; - const TRASH = ``; + const TRASH = ``; + const EYE_ON = ``; + const EYE_OFF = ``; let rowCount = 0; - const hid = (src, id, checked) => - ``; + const hid = (src, id, isVisible) => + ``; const rem = (src, id, checked) => ``; const dot = (color, fb) => @@ -3470,15 +3472,16 @@ function renderCalendarTable() { container.innerHTML = ` - + ${rows}
NameHerkunftAusgeblendetBenachrichtigungenExport / ImportSyncNameHerkunftSichtbarBenachrichtigungenExport / ImportSync
`; - // Hidden toggle - container.querySelectorAll('.ct-toggle[data-ct-hid]').forEach(cb => { - cb.addEventListener('change', async () => { - const src = cb.dataset.ctHid, id = parseInt(cb.dataset.ctId), hidden = !cb.checked; + // Visibility eye toggle + container.querySelectorAll('.ct-eye[data-ct-hid]').forEach(btn => { + btn.addEventListener('click', async () => { + const src = btn.dataset.ctHid, id = parseInt(btn.dataset.ctId); + const hidden = btn.dataset.ctVisible === '1'; // currently visible → we're hiding it try { if (src === 'ical') { await api.put(`/ical/subscriptions/${id}`, { sidebar_hidden: hidden }); @@ -3494,8 +3497,9 @@ function renderCalendarTable() { await api.put(`/homeassistant/calendars/${id}`, { enabled: !hidden, sidebar_hidden: hidden }); for (const acc of state.haAccounts) { const c = acc.calendars.find(c => c.id === id); if (c) { c.sidebar_hidden = hidden; c.enabled = !hidden; } } } + renderCalendarTable(); renderCalendarList(); - } catch (e) { showToast(e.message, true); cb.checked = !cb.checked; } + } catch (e) { showToast(e.message, true); } }); }); diff --git a/frontend/js/version.js b/frontend/js/version.js index 53d928b..ff8bd7c 100644 --- a/frontend/js/version.js +++ b/frontend/js/version.js @@ -1,2 +1,2 @@ // Increment APP_VERSION with every code change -export const APP_VERSION = 'v52'; +export const APP_VERSION = 'v53';