Skip to content

refactor(Popover, Menu): migrate slide animation from CSS to motion component (Feb 19)#35763

Draft
robertpenner wants to merge 5 commits intomicrosoft:masterfrom
robertpenner:feat/popover-motion
Draft

refactor(Popover, Menu): migrate slide animation from CSS to motion component (Feb 19)#35763
robertpenner wants to merge 5 commits intomicrosoft:masterfrom
robertpenner:feat/popover-motion

Conversation

@robertpenner
Copy link
Collaborator

Previous Behavior

New Behavior

Related Issue(s)

  • Fixes #

layershifter and others added 2 commits February 19, 2026 18:18
Replace inline keyframes with fadeAtom and slideAtom from
@fluentui/react-motion-components-preview, and extract
getPlacementSlideDistances helper to simplify the placement-based
slide distance logic.
@robertpenner robertpenner self-assigned this Feb 19, 2026
… make mainAxis functional

Rename --fui-positioning-slide-distance-x/y to --fui-positioning-slide-direction-x/y.
The vars now store unit direction vectors (-1, 0, 1) instead of full pixel distances.
PopoverSurfaceMotion multiplies direction by mainAxis via calc(), making the
mainAxis prop actually control the slide distance.
…t defaultProps

- Add surfaceMotion prop to PopoverProps (PresenceMotionSlotProps<{ mainAxis }>)
- Add surfaceMotion slot to PopoverState (SlotComponentType)
- Exclude surfaceMotion from PopoverBaseState
- Add missing mainAxis to presenceMotionSlot defaultProps
@@ -1,5 +1,6 @@
import * as React from 'react';

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🕵🏾‍♀️ visual changes to review in the Visual Change Report

vr-tests-react-components/Charts-DonutChart 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Charts-DonutChart.Dynamic - RTL.default.chromium.png 5570 Changed
vr-tests-react-components/Popover Converged 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Popover Converged.when rendering inline, it should not render behind relatively positioned elements.PopoverSurface focused.chromium.png 93 Changed
vr-tests-react-components/Positioning 2 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Positioning.Positioning end.updated 2 times.chromium.png 615 Changed
vr-tests-react-components/Positioning.Positioning end.chromium.png 883 Changed
vr-tests-react-components/Skeleton converged 1 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/Skeleton converged.Opaque Skeleton with circle - High Contrast.default.chromium.png 1 Changed
vr-tests-react-components/TagPicker 3 screenshots
Image Name Diff(in Pixels) Image Type
vr-tests-react-components/TagPicker.disabled - Dark Mode.chromium.png 658 Changed
vr-tests-react-components/TagPicker.disabled - RTL.chromium.png 635 Changed
vr-tests-react-components/TagPicker.disabled.disabled input hover.chromium.png 677 Changed

There were 3 duplicate changes discarded. Check the build logs for more information.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments