components icon indicating copy to clipboard operation
components copied to clipboard

m3 Issue with Dialog Width Property

Open nedpuganti opened this issue 2 years ago • 1 comments

Is this a regression?

  • [ ] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was

No response

Description

When attempting to set the width property of a dialog element, it does not behave as expected. Specifically, using a fixed width or setting it to 100% results in unexpected behavior. When setting the width to 100%, the dialog is pushed to the left instead of occupying the entire viewport width. This inconsistency in behavior hampers the intended layout and user experience. Further investigation is required to identify the root cause and implement a suitable solution.

Reproduction

StackBlitz link: Steps to reproduce:

  1. https://ng-comp-devapp.web.app/dialog

Expected Behavior

  1. When setting the width of the dialog element using a fixed value (e.g., pixels), the dialog should render with the specified width without any distortion or unexpected positioning.
  2. When setting the width of the dialog element to 100%, it should occupy the entire width of the viewport, ensuring that it is centered horizontally and does not get pushed to the left or right edges of the screen.
  3. The dialog should maintain responsiveness, adjusting its width dynamically based on the viewport size while adhering to the specified width constraints.

Actual Behavior

  1. When setting the width of the dialog element using a fixed value, the dialog may render with the specified width, but it might not align properly within the viewport or may not respect the specified width, leading to unexpected layout issues.
  2. When setting the width of the dialog element to 100%, it may not occupy the entire width of the viewport as intended. Instead, it might get pushed to the left side of the screen, causing it to appear off-center or misaligned.
  3. The responsiveness of the dialog may be compromised, with the width not adjusting appropriately based on the viewport size, leading to inconsistent presentation across different devices or screen sizes.

Environment

  • Angular: 17.2
  • CDK/Material: 17.2
  • Browser(s): Chrinr
  • Operating System (e.g. Windows, macOS, Ubuntu): macos

nedpuganti avatar Feb 18 '24 06:02 nedpuganti

We should resolve this on our end, but you can also work around it by setting an explicit maxWidth or minWidth yourself. In M3 the dialog has default min and max widths in order to align with the spec better.

crisbeto avatar Feb 18 '24 07:02 crisbeto

for now you can set the max width variable in your theme file

// html.<theme token>, using "dark" for example
html.dark {
  --mat-dialog-container-max-width: 95vw;
}

Venipa avatar Jun 01 '24 19:06 Venipa