diff --git a/public/app.js b/public/app.js index 8648060..ff3d5bc 100644 --- a/public/app.js +++ b/public/app.js @@ -307,7 +307,7 @@ function route() { if (name === 'edit' ? !(allowed('files') || allowed('office')) : !allowed(name)) { name = 'home'; if (location.hash !== '#/home') history.replaceState(null, '', '#/home'); } // not one of their tabs try { editor?.destroyEditor(); } catch {} editor = null; - document.body.classList.toggle('editing', name === 'edit'); + document.body.classList.toggle('editing', name === 'edit'); document.body.classList.toggle('oo', name === 'edit'); // (oo: the Files/Office document editor) document.body.classList.remove('inedit', 'onaudio'); sg.timers.forEach(clearInterval); sg.timers = []; // (Signal screens start their own) const aw = $('#audiowrap'); if (aw) aw.className = 'off'; // hide (not destroy) the audiobooks frame diff --git a/public/signal-view.js b/public/signal-view.js index f9baef6..60e7337 100644 --- a/public/signal-view.js +++ b/public/signal-view.js @@ -249,7 +249,7 @@ function sgDockHide() { const d = $('#sgdock'), f = $('#sgfab'); if (d) d.hidden function sgDockSync(name) { // after every screen change if (!allowed('signal')) { sgDockHide(); return; } sgDockInit(); const f = $('#sgfab'), d = $('#sgdock'); if (!f) return; - if (name === 'signal' || name === 'edit') { sgDockHide(); return; } + if (name === 'signal') { sgDockHide(); return; } // (the document editor keeps the bubble, so a message is never out of reach) f.hidden = false; sgDockBadge(); if (sg.dockOpen) { d.hidden = false; if (sg.root !== $('#sgdbody')) sgMount($('#sgdbody'), true); } else d.hidden = true; } diff --git a/public/style.css b/public/style.css index 5d84d84..b02fddf 100644 --- a/public/style.css +++ b/public/style.css @@ -414,7 +414,8 @@ body:not(.editing) #view { padding-top: 8px; } #sgfab { position: fixed; z-index: 14; right: 22px; bottom: calc(var(--ph, 0px) + 22px); width: 54px; height: 54px; border-radius: 50%; border: 0; background: var(--accent); color: var(--accent-t); display: grid; place-items: center; box-shadow: 0 6px 20px rgba(0,0,0,.35); cursor: pointer; } #sgfab svg { width: 26px; height: 26px; } #sgfab .nbadge { top: -2px; left: auto; right: -2px; position: absolute; } -#sgfab[hidden], #sgdock[hidden], body.editing #sgfab, body.editing #sgdock { display: none; } +#sgfab[hidden], #sgdock[hidden], body.editing:not(.oo) #sgfab, body.editing:not(.oo) #sgdock { display: none; } +body.oo #sgfab { bottom: calc(var(--ph, 0px) + 60px); right: 18px; width: 48px; height: 48px; } body.oo #sgdock { bottom: calc(var(--ph, 0px) + 116px); } /* clear of the editor's own status bar */ #sgdock { position: fixed; z-index: 14; right: 22px; bottom: calc(var(--ph, 0px) + 88px); width: 400px; max-width: calc(100vw - 44px); height: min(640px, calc(100dvh - var(--ph, 0px) - 120px)); display: flex; flex-direction: column; background: var(--panel); border: 1px solid var(--line); border-radius: 16px; box-shadow: 0 12px 40px rgba(0,0,0,.4); overflow: hidden; } .sgdtop { display: flex; align-items: center; gap: 2px; padding: 4px 6px 4px 14px; border-bottom: 1px solid var(--line); } .sgdtop .ibtn { width: 38px; height: 38px; } .sgdtop svg { width: 20px; height: 20px; }