Skip to content

global-header NFS wrapper obscures the first sidebar item #28

Open

Description

@kadel

When the Global Header NFS module is enabled in an app-next RHDH instance, the first sidebar navigation item is obscured by the global header.

The sidebar remains usable after scrolling or selecting another item, but its initial top item is partially or fully hidden.

This affects only the New Frontend System (app-next); it does not occur in the legacy frontend system.

Activity

  1. fullsend-ai-triage commented on Sep 3, 2026

    @fullsend-ai-triage

    🤖 Finished Triage · ✅ Success · Started 1:32 PM UTC · Completed 1:38 PM UTC

    Commit: 45fe3a5 · View workflow run →

    Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $1.31

  2. fullsend-ai-triage commented on Sep 3, 2026

    @fullsend-ai-triage

    Root cause hypothesis

    The NFS GlobalHeaderWrapper (src/extensions/globalHeaderModule.tsx) uses AppRootWrapperBlueprint to render a sticky AppBar above {children}. The sidebar sits inside those children and starts at the viewport top without accounting for the header height, so the first item gets hidden behind it. The legacy frontend system avoids this because the header is mounted differently — as a component extension within the layout rather than as a root wrapper.

    Notably, the workspace README documents a position config option (above-sidebar | above-main-content), but this does not appear to be wired into the NFS wrapper code — implementing it may be part of the fix.

    Recommended fix

    Ensure the sidebar content is offset below the header. Options include a flex-based column layout (header then sidebar+content), a CSS custom property for the header height, or a top offset on the children container. The position config option should also be implemented in the NFS code path if it isn't already.

    Proposed test case

    // Unit: verify the wrapper applies offset styling
    render(
      <GlobalHeaderWrapper extensionComponents={[]} extensionMenuItems={[]}>
        <div data-testid="sidebar-first-item">Home</div>
      </GlobalHeaderWrapper>
    );
    const header = document.getElementById('global-header');
    const firstItem = screen.getByTestId('sidebar-first-item');
    expect(firstItem.getBoundingClientRect().top)
      .toBeGreaterThanOrEqual(header.getBoundingClientRect().bottom);

    Next steps:

    • /fs-code — agent creates a PR to implement this issue
    • /fs-code <your instruction> — agent implements with your specific guidance
  3. kadel commented on Sep 3, 2026

    @kadel
    Author

    /fs-code

  4. fullsend-ai-coder commented on Sep 3, 2026

    @fullsend-ai-coder

    🤖 Finished Code · ✅ Success · Started 1:40 PM UTC · Completed 1:59 PM UTC

    Commit: 45fe3a5 · View workflow run →

    Runtime: claude · Model: claude-opus-4-6 · Cost: $3.44

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions