Comments (8)
This is happening when using classnames with postcss modules.
I have something like this.
import s from './Button.module.css';
import cn from 'classnames';
const rootClassName = cn(
s.root,
{
[s.primary]: variant === 'primary',
[s.secondary]: variant === 'secondary',
},
className
);
If className
is a string, then it is applied before the css modules with posts are applied, even though I specify that className
should be the last thing applied in the function.
UPDATE
After using classnames
and clsx
for a year now, I believe the reason that className
is applied after the CSS module is due to specificity. The CSS module has higher specificity than the className
string passed to the cn()
.
from classnames.
Order is guaranteed: https://github.com/JedWatson/classnames/blob/master/index.js#L16
What kind of inconsistencies are you experiencing?
from classnames.
@Amberlamps It might have been a CSS modules composes
issue actually. But thanks for the answer, at least I know that classnames guarantees class application order.
from classnames.
Order of class names is not correct.
Imagine we have this:
className='foo bar'
If we use this module there is a problem.
className= classNames('foo','bar') // return 'bar foo'
Class names should be reversed.
from classnames.
@hosseinmd can you provide an example of this?
https://codesandbox.io/s/vigilant-smoke-cnogr?file=/src/App.js
I created a codesandbox for this; it works as expected.
from classnames.
@charkour looks like order is not guaranteed based on your post.
from classnames.
Hey @rodoabad, thanks for your comment, but I'm not quite sure what you mean. Would you care to elaborate? Just so you know, I was able to solve the issue by learning how specificity works (which I had trouble comprehending before) and by finding a different workaround (we stopped using CSS modules).
After using classnames
and clsx
for a year now, I believe the reason that className
is applied after the CSS module is due to specificity. The CSS module has higher specificity than the className
string passed to the cn()
.
from classnames.
Hi there! Have you guys found any solution yet? I've just stumbled upon the same issue. Thinking how to prioritize the string classname over CSS module.
from classnames.
Related Issues (20)
- Interface types aren't compatible in 2.3.2 HOT 4
- Throwing an exception when accessing non-existent classes HOT 2
- why not using one build tool for publish the npm package? HOT 2
- Incomplete type signature for classnames/bind HOT 2
- Advanced typing for classnames/bind HOT 4
- Explain to me about "cx" HOT 1
- Getting error says 'this' context of type 'void' is not assignable HOT 4
- [Question] When I used Object's value to computed key, what happened? HOT 2
- SyntaxError: Unexpected end of script (Mobile Safari) HOT 5
- When no classes are selected, classNames should return null HOT 5
- Vulnerable dependencies (indirect security issues) HOT 1
- How to erase or replace the properties of the conditional class from external component? HOT 1
- why number can be a className HOT 1
- Can we add exports field for this package? HOT 4
- Need a maintainer? HOT 7
- Preparing for version 3.0 HOT 9
- Should we support CommonJS for 3.0? HOT 5
- No default export (v2.5.1) HOT 5
- Import from 'classnames' broken since v2.5.0 HOT 5
- Please use GitHub Releases HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from classnames.