Skip to content
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

Merged

Conversation

jorge-ji
Copy link
Contributor

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:

  • stories
  • unit tests
  • integration tests
  • end-to-end tests

Manual testing

This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!

  1. Run the default sandbox yarn start
  2. Try to resize any panel quickly

Documentation

  • Add or update documentation reflecting your changes
  • If you are deprecating/removing a feature, make sure to update
    MIGRATION.MD

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/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>

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.
@jonniebigodes jonniebigodes changed the title Layout: Fix panel layout resizing do not apply when done too fast UI: Fix panel layout resizing do not apply when done too fast Mar 25, 2024
Copy link

nx-cloud bot commented Mar 25, 2024

☁️ Nx Cloud Report

CI 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 target

Sent with 💌 from NxCloud.

@jorge-ji
Copy link
Contributor Author

jorge-ji commented Mar 28, 2024

@ndelangen , hello, sorry to bother, but I'm a bit confused with what the check errors mean.

@jorge-ji jorge-ji force-pushed the my-first-storybook-contribution branch from 3423ff1 to eae5d3a Compare April 23, 2024 19:39
Copy link
Contributor

@JReinhold JReinhold left a 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. ❤️

Copy link
Contributor

@JReinhold JReinhold left a 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.

@jorge-ji
Copy link
Contributor Author

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.

@JReinhold JReinhold merged commit abff28c into storybookjs:next May 7, 2024
46 of 51 checks passed
@JReinhold JReinhold added the needs qa Indicates that this needs manual QA during the upcoming minor/major release label May 9, 2024
@ndelangen ndelangen removed the needs qa Indicates that this needs manual QA during the upcoming minor/major release label May 9, 2024
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.

[Bug]: Resizing of Storybook Panel doesn't always apply
6 participants