Skip to content

feat: Animate side navigation collapse and expandable section reveal - #4867

Open
jkuelz wants to merge 5 commits into
dev-v3-jkuelz-side-nav-icon-layoutfrom
dev-v3-jkuelz-side-nav-animations-refactor
Open

feat: Animate side navigation collapse and expandable section reveal#4867
jkuelz wants to merge 5 commits into
dev-v3-jkuelz-side-nav-icon-layoutfrom
dev-v3-jkuelz-side-nav-animations-refactor

Conversation

@jkuelz

@jkuelz jkuelz commented Aug 5, 2026

Copy link
Copy Markdown
Member

Description

Animates SideNavigation's collapsed icon rail transition and ExpandableSection's content reveal, scoped to 1T only as per the animation strategy and to prevent breaking changes.

  • Replaces ExpandableSection's display: none/block content toggle with an animated grid-template-rows reveal. The content stays mounted and inert while collapsed, to allow for smooth transition states that weren't possible with the previous display: none.
  • Refactors SideNavigation's to the same grid-template-rows strategy as expandable sections to enable transitions: text fade, spatial collapse/expand, and staggered enter/exit timing for links, sections, section-groups, link-groups, and expandable-link-groups.
  • Adds a one-theme-with-motion mixin (internal/styles/motion/mixins.scss) alongside the existing with-motion, so animation-only CSS additions can be scoped to one-theme without affecting other themes' timing.
  • Gives one-theme its own values, reusing the existing token pair rather than introducing new ones. These may change with the upcoming animations strategy.

Other behavior changes:

  • Added warnings when a collapsed-rail item (a root-level link, link-group, or expandable-link-group, or a link/link-group/ELG nested inside a root-level section/section-group) has no icon and would therefore be invisible or have no visual indicator in the collapsed rail.
  • Expandable-link-group children are now forced closed when the nav is collapsed, regardless of the ELG's own expanded/collapsed state or icon presence. Previously an ELG's would either collapse their children or show their children depending on whether the parent had an icon.
  • Sections are now forced open when the nav is collapsed, so their icon-bearing children always flatten into the rail — this existed conceptually before but is now explicit and paired with the ELG behavior above.
  • Sections, link-groups, and ELGs use inert (not just visual hiding) to remove their headers/parent links from the tab order and assistive technology when they collapse to zero size in the rail.
  • Reverted an earlier change that added dividers between sections/groups in the collapsed state and returned to using space instead.
  • New ariaLabel plumbing and aria-hidden on section/section-group header text for collapsed-rail accessibility.

Why animations only in 1T?
The initial version of this animation applied to all themes and broke the pre-existing contract for ExpandableSection that collapsed/hidden content is visually removed instantly (display: none) — which means any downstream tests that asserted isDisplayed()/isExisting() immediately after a collapse toggle with no wait, could fail. Scoping the animation to one-theme (opt-in) avoids that regression for existing VR/classic consumers while still shipping the new motion for one-theme.

Related links, issue #, if available: n/a

How has this been tested?

dev pipeline

Review checklist

The following items are to be evaluated by the author(s) and the reviewer(s).

Correctness

  • Changes include appropriate documentation updates.
  • Changes are backward-compatible if not indicated, see CONTRIBUTING.md.
  • Changes do not include unsupported browser features, see CONTRIBUTING.md.
  • Changes were manually tested for accessibility, see accessibility guidelines.

Security

Testing

  • Changes are covered with new/existing unit tests?
  • Changes are covered with new/existing integration tests?

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

jkuelz added 4 commits August 4, 2026 16:43
Replace the display:none content toggle in ExpandableSection with a grid-template-rows reveal, and animate the SideNavigation collapse/expand: text fades while icons stay centered, spatial and opacity transitions are staggered with tunable local timing vars, groups get collapsed-state spacing, and hidden content is inert for accessibility.

WIP checkpoint on dev-v3-jkuelz-side-nav-animations-refactor so the existing icon-layout PR stays clean.
@jkuelz
jkuelz requested a review from mxschll August 5, 2026 06:36
@jkuelz
jkuelz marked this pull request as ready for review August 5, 2026 06:36
@jkuelz
jkuelz requested a review from a team as a code owner August 5, 2026 06:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant