Question about adding scroll capability to the site info panel #2992
Zak Siddiqui opened 1 day ago

The sticky side info panels should be scrollable because they are now getting content which is being cut off at the bottom of the screen.

  max-height: 100vh;
  overflow-y: auto;

Create an implementation plan.

Don't assume. Ask high-level clarifying questions if needed.

  • Numbered questions (1, 2, 3, etc)
  • Lettered answer options (A, B, C, etc)
  • Include a markdown table that contains the following for each question:
    • Pros and Cons?
    • Your recommendation (including justification)?
  • Service Desk commented 1 day ago

    Current behavior

    On wide viewports (min-width: 1199px), SideInfoPanel is sticky (position: sticky; top: 0; align-self: flex-start) and intentionally shares the page scroller — no max-height / inner scrollbar (see issue #2909). Overlay mode (narrow viewports and .hide-side-info) already scrolls via div.side-info > .body { overflow: auto } with the panel stretched top: 0; bottom: 0.

    When sticky content is taller than the visible area, the bottom is clipped while the pane is stuck — that matches this report.

    Caveat on the suggested CSS: bare max-height: 100vh is a poor fit here. Sticky top: 0 is relative to .autofit, which already sits below the fixed topbar, so 100vh overshoots the available height.

    Provisional implementation plan

    1. Change only the wide/sticky rules in side-info.css (overlay already scrolls).
    2. Cap open sticky panel height to the sticky scrollport (prefer a height tied to .autofit / containing block — not raw 100vh).
    3. Put overflow on the chosen scroll region (whole panel vs .body only — see Q1).
    4. Keep closed-state rules (max-height: 0, overflow: hidden, etc.) intact so collapse animation/behavior stays correct.
    5. Verify on issue / PR / build / pack detail (and board card detail if applicable) at wide width with tall side content; confirm overlay / breakpoint behavior unchanged.
    6. Expect CSS-only unless measured height against topbar/autofit proves necessary.

    Implementation is blocked on the clarifying choices below.

    Clarifying questions

    1. Where should the scrollbar live?

    • A. Entire sticky panel scrolls (header + body)
    • B. Only .body scrolls; header (title/close) stays pinned — same as overlay mode
    • C. Keep sharing page scroll only; do not add an inner scrollbar (reject the suggested approach)
    OptionProsConsRecommendation
    AMinimal CSS; one scroll regionHeader scrolls away; worse than overlay UX
    BConsistent with overlay; title/close always visibleNeeds flex + min-height: 0 care so .body can shrinkRecommended — parity with overlay and better UX
    CPreserves the #2909 “no inner scrollbar” intentDoes not fix cut-off content

    2. How should max height be computed?

    • A. max-height: 100vh as suggested
    • B. Cap to the sticky containing block / autofit viewport (e.g. max-height: 100% or equivalent relative to .autofit)
    • C. Explicit chrome offset, e.g. max-height: calc(100vh - <topbar>) / 100dvh
    OptionProsConsRecommendation
    ASimpleIgnores topbar; panel taller than visible area; vh quirks with browser chrome
    BAligns with existing sticky/top: 0 relative to .autofit% must resolve against the right ancestor; needs a quick layout checkRecommended if it works in practice
    CExplicit and predictableHardcodes topbar height; more brittle if chrome changesFallback if B fails

    3. Nested scroll UX (page + side panel)?

    • A. Accept dual scrollers when side content overflows
    • B. Make the sticky panel fill the viewport and primarily scroll internally
    • C. Enable inner scroll only when content would otherwise clip (dynamic / JS)
    OptionProsConsRecommendation
    ASmallest change; common sidebar patternTwo scroll contexts can feel awkwardRecommended for a first iteration
    BSide panel always fully usable without relying on page scrollLarger layout change; may fight the sticky design
    CAvoids a scrollbar when not neededExtra JS/complexityOverkill unless A proves problematic

    4. Change scope?

    • A. Shared sticky rules in side-info.css only (all SideInfoPanel pages on wide viewports); leave overlay CSS unchanged
    • B. Per-page overrides only where content is known to be tall
    • C. Also revisit / change overlay scrolling behavior
    OptionProsConsRecommendation
    AOne consistent fix; overlay already correctBroader QA across detail pagesRecommended
    BNarrower blast radiusInconsistent UX; easy to miss a page
    CCould unify scroll behavior furtherOut of scope for the reported sticky clipping bug

    Please reply with choices (e.g. 1B, 2B, 3A, 4A) or alternatives, and we can proceed to implementation from there.

  • Zak Siddiqui commented 1 day ago

    There should only be one visible scroll bar, which is the main scroll bar. The side panel should scroll up and down with the main scroll bar. Any scrolling activity on the page should first scroll the side panel to its limit and then scroll the main page.

    This ensures that we only have a single scroll gesture with a highly positive UX

    @servicedesk

  • Service Desk commented 1 day ago

    @zaakiy Thanks — that clarifies the intent, and it matches the sidebar-first linked scroll option discussed in issue #2908 (then called 3D), which was deferred when we shipped the simpler sticky + shared page scroll design in issue #2909.

    Interpretation

    RequirementImplication
    Only one visible scrollbar (the main one)No overflow / inner scrollbar on the sticky pane (rejects the earlier Q1A/Q1B “scroll inside the panel” approach)
    Side panel moves with the main scrollbar / single scroll gestureKeep a single scroll stream (.autofit), not dual nested scrollers
    Scroll activity should move the side panel to its limit first, then scroll the main pageNeeds linked / prioritized scroll — plain CSS position: sticky cannot do “sidebar first, then main”

    So this is not a small CSS tweak (max-height + overflow-y: auto). Current sticky behavior (issue #2909) already gives one scroller and no inner bar; the remaining gap for tall side content is exactly the missing sidebar-first priority.

    Updated implementation plan

    1. Keep today’s wide-viewport sticky foundation (side-info.css: sticky under .autofit / top chrome, natural height, no inner scrollbar; overlay / .hide-side-info unchanged).
    2. Add sidebar-first scroll coordination in side-info.js for wide/sticky mode only:
      • On wheel / trackpad / keyboard scroll while the sticky pane is in play, apply delta to the side panel first (via offset / translate within the sticky viewport) until it hits its top or bottom limit.
      • Pass remaining delta to the main .autofit scroller so the page moves only after the side panel cannot move further.
      • Reverse the priority when scrolling up.
    3. Short side content: keep current sticky “pin under top chrome while main scrolls” behavior (no-op for the linker when the pane fits the viewport).
    4. Tall side content: lower fields become reachable via the same main scrollbar / gesture, without a second visible bar.
    5. Scope: shared sticky path for all SideInfoPanel pages (issue / PR / build / pack); do not change overlay scrolling.
    6. QA focus: tall vs short side content; wheel, trackpad inertia, and keyboard; open/close / resize / breakpoint; confirm overlay mode unchanged.

    Caveat

    With true sidebar-first linking, the visible scrollbar still tracks the main .autofit scroll position. Early gesture motion may move only the side panel while the thumb stays put — that is inherent to “one bar + sidebar priority,” not a bug. If that feels wrong in practice, we would revisit (but that would trade off one of the constraints above).

    Next step

    If this plan matches what you want, reply to confirm and we will open a fresh Improvement issue for implementation (same pattern as issue #2908issue #2909) and close this Question.

    If you would rather take a simpler CSS-only compromise instead (still one scrollbar, tall pane reveals as the page scrolls, but not strict “sidebar first then main”), say so and we can outline that smaller plan instead.

  • Zak Siddiqui commented 1 day ago

    @servicedesk confirming that this plan matches what I wanted.

  • Service Desk commented 1 day ago

    Closing as answered; implementation tracked in issue #2994.

  • Service Desk commented 1 day ago

    @zaakiy Created implementation issue #2994 with the agreed design:

    • Sticky foundation unchanged; no inner scrollbar on the side pane
    • Sidebar-first linked scroll for wide/sticky mode (side-info.js)
    • Short side content keeps today’s sticky behavior; tall content is reachable via a single scroll gesture
    • Narrow / .hide-side-info overlay unchanged

    Closing this Question as answered.

  • Service Desk changed state to 'Closed' 1 day ago
    Previous Value Current Value
    Open
    Closed
1/1
Type
Question
Priority
Normal
Assignee
Labels
No labels
Issue Votes (0)
Watchers (3)
Reference
OD-2992
Please wait...
Connection lost or session expired, reload to recover
Page is in error, reload to recover