Skip to content

Commit 7bc78fc

Browse files
chdefreneCopilot
andcommitted
fix(dev-portal): use tiered z-index instead of isolation for header stacking
Replace the blanket isolation: isolate on Styled.Main with a moderate explicit z-index (10) on Styled.Head. Isolation trapped ALL descendant stacking inside Main, including deliberate fullscreen overlays/scrims apps render when opening sidepanels, preventing them from ever covering the portal header even when that's the intended UX. The tiered z-index still beats small incidental leaks (like the original app-admin z-index: 2 regression) while staying below the z-index range conventionally used by real overlay/backdrop components, so intentional fullscreen app overlays can still render above the header. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent 128a135 commit 7bc78fc

2 files changed

Lines changed: 11 additions & 12 deletions

File tree

.changeset/portal-header-stacking-fix.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
"@equinor/fusion-framework-dev-portal": patch
33
---
44

5-
Fixes the portal chrome (Header/TopBar and its ContextSelector dropdown) being hidden behind a loaded app's content when the app sets its own internal `z-index`. The dev-portal's header region now establishes an explicit stacking context above the main content area, and the main content area isolates any stacking context an app creates internally so it can no longer escape and cover the portal chrome.
5+
Fixes the portal chrome (Header/TopBar and its ContextSelector dropdown) being hidden behind a loaded app's content when the app sets its own internal `z-index`. The dev-portal's header region now uses an explicit `z-index` high enough to beat small, incidental z-index values apps tend to use for ordinary layout elements, while staying below the conventional z-index range used by real overlay/backdrop components — so an app's intentional fullscreen scrim (e.g. opening a sidepanel) can still render above the header when desired.

packages/dev-portal/src/Router.tsx

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,26 +19,25 @@ const Styled = {
1919
Head: styled.section`
2020
grid-area: head;
2121
/**
22-
* Establish an explicit stacking context above the default (auto)
23-
* layer so the portal chrome (Header/TopBar and its ContextSelector
24-
* dropdown) always paints above the loaded app's content, regardless
25-
* of any z-index the app sets internally on its own elements.
22+
* Give the portal chrome (Header/TopBar and its ContextSelector
23+
* dropdown) an explicit stacking context comfortably above the
24+
* small, incidental z-index values apps tend to use for ordinary
25+
* layout elements (sticky headers, dropdowns, etc.), so those can
26+
* never leak above the portal chrome. Deliberately kept well below
27+
* the z-index range conventionally used by real overlay/backdrop
28+
* components (e.g. modal libraries typically use 1000+), so an
29+
* app's intentional fullscreen scrim (e.g. opening a sidepanel)
30+
* can still render above the header when that's the desired UX.
2631
*/
2732
position: relative;
28-
z-index: 1;
33+
z-index: 10;
2934
`,
3035
Main: styled.section`
3136
grid-area: main;
3237
overflow: auto;
3338
position: relative;
3439
max-width: 100%;
3540
display: grid;
36-
/**
37-
* Isolate the loaded app's stacking context so any z-index it sets
38-
* internally is contained within this region and can never escape
39-
* to compete with the portal chrome rendered in the Head section.
40-
*/
41-
isolation: isolate;
4241
`,
4342
};
4443

0 commit comments

Comments
 (0)