-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
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
[Button] Add loading
prop
#44637
[Button] Add loading
prop
#44637
Conversation
@oliviertassinari |
Netlify deploy preview
IconButton: parsed: +4.55% , gzip: +3.60% Bundle size reportDetails of bundle changes (Toolpad) |
Wouldn't it be better to automatically add the span if the loading prop has a boolean value (true/false), and don't add it if it has a nullish value. We can explain in the demos the usage. |
That's a nice suggestion. If I understand correctly, there is no need for the new prop, right. The default value of loading is |
Yes, the downside is that a component cannot alternative between supporting loading or not (at least in terms of working with Google translate). I think that's nice compromise. |
I like this approach 👍🏼 let's add a short explanation in the docs as well. |
…/button-loading3
This reverts commit f317e69.
@mnajdova @DiegoAndai Ready for review. |
@siriwatknp I’ve linked two issues in the description that should be closed when this PR merges, the same as in #44637. |
{...other} | ||
classes={classes} | ||
> | ||
{startIcon} | ||
{enableLoadingWrapper ? ( | ||
// use plain HTML span to minimize the runtime overhead | ||
<span className={classes.loadingWrapper} style={{ display: 'contents' }}> |
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.
Done
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.
Hey Jun! Thanks for pickling this one back up again.
I think the loadingPosition
needs some work, see these examples: https://codesandbox.io/p/sandbox/44637-feedback-1-wtf45k
In these examples users would expect the loading indicator to position itself correctly.
The root cause is that there is no icon to provide the space for the loading. I fixed this by render a |
{...other} | ||
classes={classes} | ||
> | ||
{startIcon} | ||
{enableLoadingWrapper ? ( | ||
// use plain HTML span to minimize the runtime overhead | ||
<span className={classes.loadingWrapper} style={{ display: 'contents' }}> |
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.
Should we move style={{ display: 'contents' }}
as well?
@DiegoAndai If you meant to move it to be styled components, I added a comment above it to keep that element as plain HTML for least overhead. Its purpose is to prevent google translate error, not for customization because it has |
@siriwatknp The last thing from my side is this comment which hasn't been fixed yet: #44637 (comment) |
d3d0926
to
0e87a59
Compare
I misunderstood your point but it's fixed now. |
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.
Just these two things. Rest looks good.
Co-authored-by: Zeeshan Tamboli <[email protected]> Co-authored-by: Diego Andai <[email protected]> Signed-off-by: Siriwat K <[email protected]>
…/button-loading3
This looks good to me from the technical perspective 👍🏼 I would like for @aarongarciah to approve this from the product perspective. If he does, then we're ready to merge. I'll be OOO until Wednesday. If Aaron approves from the product perspective, don't wait for me, you can just merge. |
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.
Nice work! Left some small comments on the docs
The loading behavior is now built-in: mui/material-ui#44637.
Preview: https://deploy-preview-44637--material-ui.netlify.app/material-ui/react-button/#loading-2
Closes #42684
Closes #31235
Context
This PR build on top of the reverted #42987 by making the default value of
loading
to benull
to fix the problem with Google Translation Crash without introducing overhead of the loading wrapper to the existing projects.When the prop is
boolean
, a span is always present as a wrapper regardless of the loading state:The reasons to go with this approach instead of wrapping children with a span are:
styled
.Note
When this PR is merged, the next release should be
v6.4.0