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

[material-ui][Drawer] Fix issue with main window being used instead of iframe's window #43818

Merged
merged 3 commits into from
Sep 20, 2024

Conversation

albarv340
Copy link
Contributor

@albarv340 albarv340 commented Sep 19, 2024

@mui-bot
Copy link

mui-bot commented Sep 19, 2024

Netlify deploy preview

https://deploy-preview-43818--material-ui.netlify.app/

Bundle size report

Details of bundle changes (Toolpad)
Details of bundle changes

Generated by 🚫 dangerJS against 503c9ef

@albarv340 albarv340 changed the title Fix issue with main window being used instead of iframe's window [material-ui][Drawer] Fix issue with main window being used instead of iframe's window Sep 19, 2024
@albarv340
Copy link
Contributor Author

Sorry if I am being dumb, but how do I add a label to a pull request?

@Janpot Janpot added component: drawer This is the name of the generic UI component, not the React module! bug 🐛 Something doesn't work labels Sep 19, 2024
// 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);
Copy link
Member

@Janpot Janpot Sep 19, 2024

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?

Suggested change
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.

Copy link
Contributor Author

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

Copy link
Contributor Author

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.

Copy link
Member

@Janpot Janpot Sep 19, 2024

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);
}

Copy link
Contributor Author

@albarv340 albarv340 Sep 19, 2024

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.

Copy link
Member

@Janpot Janpot Sep 20, 2024

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

@Janpot Janpot merged commit aba3bc9 into mui:master Sep 20, 2024
19 checks passed
@Janpot
Copy link
Member

Janpot commented Sep 20, 2024

Thank you!

@oliviertassinari oliviertassinari added the component: modal This is the name of the generic UI component, not the React module! label Sep 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 🐛 Something doesn't work component: drawer This is the name of the generic UI component, not the React module! component: modal This is the name of the generic UI component, not the React module!
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[material-ui][Drawer] Temporary drawer changes content and header width when open in an iframe
4 participants