XL landscape polish: btn-primary sizing, tray from right, footer bg, layout fixes
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- .btn-xl removed; .btn-primary absorbs 4rem sizing (same as PICK SIGS/PICK ROLES) - Landscape navbar .btn-primary: 3rem → 4rem to match base; XL stays 4rem (consistent) - _button-pad.scss XL: base .btn ×1.2 (2.4rem); .btn-xl block deleted - _tray.scss XL (≥1800px): portrait-style tray (slides from right, z-95) - tray.js: _isLandscape() returns false at ≥1800px; portrait code paths run throughout - Footer sidebar: background-color added so opaque footer masks tray sliding behind it - Copyright .footer-container: bottom → top in landscape sidebar - #id_room_menu: right: 2.5rem override in _room.scss XL block (cascade fix) - navbar-text XL: 0.65rem × 1.2 = 0.78rem - All landscape media queries: max-width: 1440px cutoff removed (already done prior) - btn-xl class stripped from all 5 templates; test_navbar.py assertion updated Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -40,6 +40,9 @@ var Tray = (function () {
|
||||
|
||||
function _isLandscape() {
|
||||
if (_landscapeOverride !== null) return _landscapeOverride;
|
||||
// ≥1800px uses portrait-style tray (slides from right) to match the
|
||||
// doubled sidebar widths and XL tray CSS reset.
|
||||
if (window.innerWidth >= 1800) return false;
|
||||
return window.innerWidth > window.innerHeight;
|
||||
}
|
||||
|
||||
@@ -94,12 +97,10 @@ var Tray = (function () {
|
||||
// Closed: tray hidden above viewport, handle visible at y=0.
|
||||
_maxTop = -(gearBtnTop - handleH);
|
||||
} else {
|
||||
// Portrait: slide on X axis.
|
||||
// Wrap width is pinned to viewportW (JS) so its right edge only
|
||||
// reaches the viewport boundary when left = 0 (fully open).
|
||||
// This mirrors landscape: the open edge appears only at the last moment.
|
||||
// Open: left = 0 → wrap right = viewportW exactly.
|
||||
// Closed: left = viewportW - handleW → tray fully off-screen right.
|
||||
// Portrait (and XL landscape, which uses portrait-style tray):
|
||||
// Wrap width = viewportW so the closed right edge reaches the viewport boundary.
|
||||
// The footer sidebar (z-100) is above the wrap (z-95) and has a solid background,
|
||||
// so the handle parks behind it and slides out from under it when opened.
|
||||
var handleW = _btn.offsetWidth || 48;
|
||||
if (_wrap) _wrap.style.width = window.innerWidth + 'px';
|
||||
_minLeft = 0;
|
||||
@@ -313,7 +314,7 @@ var Tray = (function () {
|
||||
}
|
||||
} else {
|
||||
if (_tray) _tray.style.display = 'none';
|
||||
if (_wrap) { _wrap.style.top = ''; _wrap.style.height = ''; }
|
||||
if (_wrap) { _wrap.style.top = ''; _wrap.style.height = ''; _wrap.style.width = ''; }
|
||||
_computeBounds();
|
||||
_applyVerticalBounds();
|
||||
_computeCellSize();
|
||||
@@ -342,8 +343,8 @@ var Tray = (function () {
|
||||
if (_wrap) _wrap.style.top = _maxTop + 'px';
|
||||
_computeCellSize();
|
||||
} else {
|
||||
// Clear landscape's inline top so portrait CSS applies.
|
||||
if (_wrap) _wrap.style.top = '';
|
||||
// Clear landscape's inline top/height/width so portrait CSS applies.
|
||||
if (_wrap) { _wrap.style.top = ''; _wrap.style.width = ''; }
|
||||
_applyVerticalBounds();
|
||||
_computeCellSize(); // wrap has correct height after _applyVerticalBounds
|
||||
_computeBounds();
|
||||
|
||||
Reference in New Issue
Block a user