-
-
Notifications
You must be signed in to change notification settings - Fork 9.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
UI: Fix panel layout resizing do not apply when done too fast #26460
UI: Fix panel layout resizing do not apply when done too fast #26460
Conversation
When trying to resize any panel too fast, the changes would not be applied. The fix was done by changing a comparison condition in "useLayoutEffect()". Instead of using a variable ("prevManagerLayoutStateRef") that was also modified by another function ("useEffect()") that could execute at the same time, it now uses a variable that is only modified by the own function, making it so that the supposed layout values are not changed after they are set.
☁️ Nx Cloud ReportCI is running/has finished running commands for commit f4b07b5. As they complete they will appear below. Click to see the status, the terminal output, and the build insights. 📂 See all runs for this CI Pipeline Execution ✅ Successfully ran 1 targetSent with 💌 from NxCloud. |
@ndelangen , hello, sorry to bother, but I'm a bit confused with what the check errors mean. |
3423ff1
to
eae5d3a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can't really reproduce the original issue with or without this patch, but I trust that this fixes it. At least I can confirm that it doesn't break anything based on my testing.
Thanks. ❤️
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe I was wrong, it appears that this breaks the keyboard shortcuts for toggling the sidebar/addon panel/fullscreen, as is also evident by the failing e2e tests.
It's not about the keyboard though, using the menu dropdown to toggle doesn't work either.
I think it's because of the added state to the dependency array.
If you toggle the layout via keyboard it will update the manager layout state. This will now trigger this useLayoutEffect
, which will immediately set the manager layout state back to what it was initially.
Sorry for the delay, I believe that fixes the broken toggles, all e2e tests are also passing. I'm not sure why test-portable-stories-svelte is failing, hopefully it's not due to the changes. |
Closes #25759
What I did
Fixed resizing of panel not applying when done too fast.
The fix was done by changing a comparison condition in "useLayoutEffect()". Instead of using a variable ("prevManagerLayoutStateRef") that was also modified by another function ("useEffect()") that could execute at the same time, it now uses a variable that is only modified by the own function, ensuring that the supposed layout values are not changed after they are set.
panel_resizing.mp4
Checklist for Contributors
Testing
The changes in this PR are covered in the following automated tests:
Manual testing
This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!
yarn start
Documentation
MIGRATION.MD
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal
,ci:merged
orci:daily
GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli/src/sandbox-templates.ts
Make sure this PR contains one of the labels below:
Available labels
bug
: Internal changes that fixes incorrect behavior.maintenance
: User-facing maintenance tasks.dependencies
: Upgrading (sometimes downgrading) dependencies.build
: Internal-facing build tooling & test updates. Will not show up in release changelog.cleanup
: Minor cleanup style change. Will not show up in release changelog.documentation
: Documentation only changes. Will not show up in release changelog.feature request
: Introducing a new feature.BREAKING CHANGE
: Changes that break compatibility in some way with current major version.other
: Changes that don't fit in the above categories.🦋 Canary release
This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the
@storybookjs/core
team here.core team members can create a canary release here or locally with
gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=<PR_NUMBER>