-
Notifications
You must be signed in to change notification settings - Fork 6.8k
fix(material-experimental/mdc-list): avoid style conflicts with other list-based components #22562
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
Conversation
… list-based components Currently the styles for the MDC-based list are included globally which causes conflicts with other list-based components like `mat-select` and `mat-autocomplete`. This can be seen by going to the MDC list demo and then the MDC select demo, and observing that the option text is now truncated. These changes resolve the issue by nesting the styles under the `mat-mdc-list-base` class.
host: { | ||
'class': 'mat-mdc-list mat-mdc-list-base mdc-deprecated-list', | ||
'class': 'mat-mdc-list mat-mdc-list-base', |
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.
Is there a better way we can avoid style conflicts? I think this makes it a bit inconvenient in terms of instantiating the MDCList
foundation, and declaring the adapter. I'm not sure if this currently has any a11y impact.
export function getInteractiveListAdapter( |
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.
Agreed that this isn't great, but the alternative would be to fix it in the select, autocomplete and menu specifically, but then it could still conflict with other list-based components in the future or other non-Material components the user might have on the page.
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 should probably change the adapter to apply any classes, attributes, etc to the div. The only other way I can think to do this is if MDC changed their mixins to allow us to add to the root selector:
@mixin deprecated-without-ripple(..., $root: '') {
#{$root}.mdc-deprecated-list {
...
}
}
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.
@mmalerba Yeah, I thought that too, but then realized that this could break a11y because the MDCList
"root" usually receives the aria-
attributes from the foundation. Personally I'd prefer what you showed. We might be able to convince MDC to support this because list is commonly used in various other components too, and it makes style isolation easier.
Closing this since the concerns are valid and landing it will be tricky. I'll fix the issues in the specific components instead. |
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
Currently the styles for the MDC-based list are included globally which causes conflicts with other list-based components like
mat-select
andmat-autocomplete
. This can be seen by going to the MDC list demo and then the MDC select demo, and observing that the option text is now truncated.These changes resolve the issue by nesting the styles under the
mat-mdc-list-base
class.