-
-
Notifications
You must be signed in to change notification settings - Fork 32.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
[material-ui][Drawer] Fix issue with main window being used instead of iframe's window #43818
Conversation
Netlify deploy previewhttps://deploy-preview-43818--material-ui.netlify.app/ Bundle size reportDetails of bundle changes (Toolpad) |
Sorry if I am being dumb, but how do I add a label to a pull request? |
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes | ||
const documentWidth = doc.documentElement.clientWidth; | ||
return Math.abs(window.innerWidth - documentWidth); | ||
return Math.abs(win.innerWidth - documentWidth); |
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.
Would this ever be any different than?
return Math.abs(win.innerWidth - documentWidth); | |
return Math.abs(doc.defaultView.innerWidth - documentWidth); |
Under the hood ownerWindow(container)
would be the same as doc.defaultView || window
.
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.
That does seem like it would behave the same way. And it would by extension fix all other usages of getScrollbarSize. If using the window of the given document is the intended behavior, then your suggested change is definitely better. I will change to that
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 also added the || window
since doc.defaultView
might be null.
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 also added the || window since doc.defaultView might be null.
We'd be comparing document width to a window it is not associated with. I think it would be a bug if we're ever in that situation. I feel like it would make more sense to error in that case 🤔.
I also feel like it almost would make more sense to start from the window
instead of the document
export default function getScrollbarSize(win: Window = window): number {
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
const documentWidth = win.document.documentElement.clientWidth;
return Math.abs(win.innerWidth - documentWidth);
}
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.
We'd be comparing document width to a window it is not associated with. I think it would be a bug if we're ever in that situation. I feel like it would make more sense to error in that case 🤔.
That makes sense, I can change that.
I also feel like it almost would make more sense to start from the window instead of the document
If I were to change this, I would need to change a lot of files, and I feel like it is also unrelated to this specific issue.
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.
It's only in a few places, but fair enough, I'll open a new issue
Thank you! |
Closes #43244
Before
After. Preview: https://deploy-preview-43818--material-ui.netlify.app/material-ui/react-drawer/#responsive-drawer