mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-06 11:24:00 +00:00
fix(ui): keep panels the right rail hides itself in its layout
Exclusive presentation hides collapsed right-rail panels with display: none. Skipping every display: none panel also skipped those, so panels the rail had auto-collapsed stayed collapsed after the HUD was hidden or left Tactical. Only panels hidden by other CSS are skipped now. Adds the changelog and current-state notes.
This commit is contained in:
1 parent
fba4517ce1
commit
6f0d1bb35f
4 files changed
+40
-2
No files matched your search
@@ -1,5 +1,9 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
- The right rail ignores panels that other CSS hides, such as during an event
|
||||||
|
view, so they no longer force one-panel-at-a-time layout or collapse visible
|
||||||
|
panels. Panels the rail collapses itself are still restored.
|
||||||
|
|
||||||
- Bing Aerial and Bing Labels request HTTPS tiles on HTTP localhost through
|
- Bing Aerial and Bing Labels request HTTPS tiles on HTTP localhost through
|
||||||
their ion-backed providers, retaining ion and per-tile attribution without
|
their ion-backed providers, retaining ion and per-tile attribution without
|
||||||
widening the Content Security Policy.
|
widening the Content Security Policy.
|
||||||
|
|||||||
@@ -1047,6 +1047,9 @@ Automatic collapse remains presentation only, prioritizes the latest explicit
|
|||||||
panel, and honors keyboard focus on the right. Mobile layout still releases
|
panel, and honors keyboard focus on the right. Mobile layout still releases
|
||||||
desktop allocation styles. Stable Display allocation avoids unnecessary style
|
desktop allocation styles. Stable Display allocation avoids unnecessary style
|
||||||
writes. This extraction does not change panel positions or layout defaults.
|
writes. This extraction does not change panel positions or layout defaults.
|
||||||
|
The right rail skips panels hidden by other CSS (computed `display: none`), but
|
||||||
|
keeps the collapsed panels its own exclusive presentation hides, so automatic
|
||||||
|
collapse can still be undone.
|
||||||
|
|
||||||
## Surface keyboard lifecycle
|
## Surface keyboard lifecycle
|
||||||
|
|
||||||
|
|||||||
@@ -723,6 +723,32 @@ test('right layout ignores a CSS-hidden expanded panel when deciding exclusivity
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('right layout still restores panels that exclusive presentation hides', () => {
|
||||||
|
const f = fixture('right');
|
||||||
|
// Model layers.css: an exclusive rail hides its collapsed panels.
|
||||||
|
f.options.windowRef.getComputedStyle = (node) => ({
|
||||||
|
...node.computed,
|
||||||
|
display:
|
||||||
|
f.stack.classList.contains('layout-exclusive') &&
|
||||||
|
node.classList.contains('collapsed')
|
||||||
|
? 'none'
|
||||||
|
: node.computed.display,
|
||||||
|
});
|
||||||
|
f.expand(f.first, 250);
|
||||||
|
f.second.classList.add('layout-auto-collapsed');
|
||||||
|
f.stack.classList.add('layout-exclusive');
|
||||||
|
|
||||||
|
f.run();
|
||||||
|
assert.equal(f.stack.classList.contains('layout-exclusive'), true);
|
||||||
|
assert.equal(f.second.getAttribute('aria-hidden'), 'true');
|
||||||
|
|
||||||
|
f.options.hud.visible = false;
|
||||||
|
f.run();
|
||||||
|
assert.equal(f.second.classList.contains('collapsed'), false);
|
||||||
|
assert.equal(f.second.classList.contains('layout-auto-collapsed'), false);
|
||||||
|
assert.deepEqual(f.collapsed, ['second']);
|
||||||
|
});
|
||||||
|
|
||||||
test('right layout ignores a hidden panel: no lane, no gap, no auto-collapse', () => {
|
test('right layout ignores a hidden panel: no lane, no gap, no auto-collapse', () => {
|
||||||
const f = fixture('right');
|
const f = fixture('right');
|
||||||
const imagery = element('recent-imagery-panel', { height: 0 });
|
const imagery = element('recent-imagery-panel', { height: 0 });
|
||||||
|
|||||||
@@ -69,12 +69,17 @@ export function layoutRightPanelRail({
|
|||||||
// A collapse may schedule one follow-up, which only measures and allocates.
|
// A collapse may schedule one follow-up, which only measures and allocates.
|
||||||
const isCollapseRetry = pendingCollapseRetries.delete(stack);
|
const isCollapseRetry = pendingCollapseRetries.delete(stack);
|
||||||
|
|
||||||
// A floating (lifted-out) panel is not laid out by the rail.
|
// A floating (lifted-out) panel is not laid out by the rail. Neither is one
|
||||||
|
// that other CSS hides, such as an event view. Exclusive presentation hides
|
||||||
|
// collapsed panels itself; those stay in the rail so they can be restored.
|
||||||
|
const hiddenByRail = (panel) =>
|
||||||
|
stack.classList.contains('layout-exclusive') &&
|
||||||
|
panel.classList.contains('collapsed');
|
||||||
const panels = [...stack.children].filter(
|
const panels = [...stack.children].filter(
|
||||||
(panel) =>
|
(panel) =>
|
||||||
panel.matches('[data-panel-id]:not(.panel-floating)') &&
|
panel.matches('[data-panel-id]:not(.panel-floating)') &&
|
||||||
!panel.hidden &&
|
!panel.hidden &&
|
||||||
getComputedStyle(panel).display !== 'none',
|
(hiddenByRail(panel) || getComputedStyle(panel).display !== 'none'),
|
||||||
);
|
);
|
||||||
if (!hud.visible || hud.variant !== 'tactical') {
|
if (!hud.visible || hud.variant !== 'tactical') {
|
||||||
for (const panel of panels.filter((item) =>
|
for (const panel of panels.filter((item) =>
|
||||||
|
|||||||
Reference in new issue
Block a user