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 unnecessary middle truncation occurring in dialogs #26086

Merged
merged 1 commit into from
Nov 24, 2024

Conversation

bengotow
Copy link
Collaborator

Summary & Motivation

https://linear.app/dagster-labs/issue/FE-684/targeted-assets-dialog-is-too-aggressive-with-middle-truncate

Thankfully this turned out to be a quick fix - I verified in the docs that offsetWidth shouldn't have other implications beyond this:

image

How I Tested These Changes

Tested manually in the "Upstream assets modal" with some long asset names and also via a new storybook + verification that no other MiddleTruncate storybooks were impacted.

image

Changelog

[ui] Fixed unnecessary middle truncation occurring in dialogs.

Copy link

github-actions bot commented Nov 21, 2024

Deploy preview for dagit-storybook ready!

✅ Preview
https://dagit-storybook-2jol8xad7-elementl.vercel.app
https://bengotow-2024-11-FE-684.components-storybook.dagster-docs.io

Built with commit 971c853.
This pull request is being automatically deployed with vercel-action

Copy link

github-actions bot commented Nov 21, 2024

Deploy preview for dagit-core-storybook ready!

✅ Preview
https://dagit-core-storybook-oh3ggoewl-elementl.vercel.app
https://bengotow-2024-11-FE-684.core-storybook.dagster-docs.io

Built with commit 971c853.
This pull request is being automatically deployed with vercel-action

const width = container.getBoundingClientRect().width;

// https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model/Determining_the_dimensions_of_elements#how_much_room_does_it_use_up
const width = container.offsetWidth;
Copy link
Contributor

Choose a reason for hiding this comment

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

Not caused by your PR but can we wrap the usage of calculateMiddleTruncatedText in a requestAnimationFrame since accessing offsetWidth triggers a forced layout.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Hmm it looks like this fn is called in two places - one in a useLayoutEffect and one in a resize observer. I think in the resizeObserver case the layout is fresh so it's best to read it immediately vs allowing to change and then requesting it again, but I'm not sure about the useLayoutEffect callsite.

It looks like using useLayoutEffect instead of useEffect is the preferred way to implement this without an empty frame where the text was null while we were waiting to determine it's size, but if we're ok with the empty frame + not forcing a render, i think we switch that to useEffect and add a window.requestAnimationFrame.

I don't think it'll be that bad to have the null text for a single frame, I'll switch it and we can see if it's noticeable 👍

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Delay of doing it in a requestAnimationFrame isn't noticeable as far as I can tell - switched!

@bengotow bengotow merged commit d298e05 into master Nov 24, 2024
3 checks passed
@bengotow bengotow deleted the bengotow-2024-11/FE-684 branch November 24, 2024 00:46
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.

3 participants