material-ui
material-ui copied to clipboard
Fixes emotion compat, className overwriting more specific classes
Hi,
This PR is related to #33205.
What is happening is that classNames
overwrites the classes
that applies to the root component.
I have implemented a fix for the Tab
component. If you are fine with it I can generalize it.
The visual test case can be run with:
yarn test:regressions:dev
Then accessing: http://localhost:3000/regression-Table/EmotionCompat#no-dev
With this branch you'll get:
With mui/material-ui#master
:
Best regard,
Generated by :no_entry_sign: dangerJS against 9c4a028aa0f6d01b25ab88eea8ad562059c2e42c
This will complicate things too much
OK I understand why you don't see it as being worth fixing.
More over, how do we decide what "more specific classes" mean? I am saying this because there is no such thing as a more specific class, there are more specific selectors.
While I agree that I didn't phrase it correctly, I disagree on the fact that there is an ambiguity on what the expected behavior is.
If a user writes the following code, he will, for sure, expect the background to be green.
<Tab
icon={<PhoneIcon />}
label="Background should be green"
className={css({ backgroundColor: 'red' })}
classes={{
labelIcon: css({ backgroundColor: 'green' })
}}
/>
Any classes specified in the classes
props that apply to the root component is expected to take priority over the className
. (Except for classes.root
where it isn't clear but we don't care.)
Anyway, I can make this work with a hack on TSS side so, no worries, feel free to close.
As always, thanks for reviewing @mnajdova!
Anyway, I can make this work with a hack on TSS side so, no worries, feel free to close.
Let's try to go with this first.
As always, thanks for reviewing @mnajdova!
Sure