-
Notifications
You must be signed in to change notification settings - Fork 4.1k
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
"Circular dependency detected" error on using @apply in custom class #6386
Comments
Same here. |
I upgraded to v3.0.7 in my project with the circular dependency and the error doesn't come up again. Seems like the issue was fixed in #6588. Closing this issue as resolved, thanks @RobinMalfait! 🙏 |
@dcastil Ah perfect! Thanks for notifying and closing the issue! |
I'm still seeing this issue in 3.0.7.
https://play.tailwindcss.com/YxcQz4gSop?file=css In our web components, we have a class If we rename our class to |
I can open a new issue if you want. |
This PR fixed false positives, but the example you posted is not a false positive but an actual circular dependency. It's like you would do this: .btn {
@apply btn;
} |
Ok thanks. I'll update our classes. 👍 |
I also face similar, but in my case it's so weird. For example this does not give any error.
But this does;
even i do not use block inside that selector. But what i found we also use block in other classes which might be related
The error is: Are there anything to escape utility? |
@vd-eerkul the issue is not the individual rules, they all work on their own. But it's when you use both of them at the same time. It works if you only have this: .region > .block {
@apply m-0;
} It also works if you only have this: .sidr .block {
@apply mb-0 h-auto;
} It also works if you only have this: .sidr ul.sf-menu.menu {
@apply block bg-white;
} But if you have this: .sidr .block {
@apply mb-0 h-auto;
}
.sidr ul.sf-menu.menu {
@apply block bg-white;
} then it won't work. The reason for this is because by using Later if you use I know this sounds very confusing, but let's look at another example to try and understand what I mean with "applying all rules such that it works as a drop-in replacement". Let's say you have this structure: <div class="flex hover:underline"></div> The CSS for this looks like: .flex {
display: flex;
}
.hover\:underline:hover {
text-decoration-line: underline;
} If you want to use apply to abstract it to a new class we have to make sure that:
.foo { @apply flex hover:underline } This generates: .foo {
display: flex;
}
.foo:hover {
text-decoration-line: underline;
} such that you can use this in your HTML as: <div class="foo"></div> This now applies all the rules, which means that you can safely use But now imagine that you wrote custom CSS like this as well: .abc .flex {
color: red;
} A bit farfetched maybe, but imagine you did. This means that if you were using: <div class="abc">
<div class="flex hover:underline">Hello World!</div>
</div> That the text would be red if it is inside of an element with a When using .abc .flex {
color: red;
}
.foo { @apply flex hover:underline } And later you use it in your html: <div class="abc">
<div class="foo">Hello World!</div>
</div> Then we want the text to be red as well, so we have to take the .abc .flex {
color: red;
}
.foo {
display: flex;
}
.abc .foo {
color: red;
}
.foo:hover {
text-decoration-line: underline;
} Notice how the I know this is a hard feature to wrap your head around, but we do have to apply all the rules to ensure that you can:
If we circle back to your issue, you are extending the So, to solve this I would recommend to either:
|
Thank you @RobinMalfait for the detailed answer. |
What version of Tailwind CSS are you using?
v3.0.1
What build tool (or framework if it abstracts the build tool) are you using?
Tailwind Playground
What version of Node.js are you using?
Not applicable
What browser are you using?
Chrome Version 96.0.4664.55
What operating system are you using?
macOS 12.0.1
Reproduction URL
https://play.tailwindcss.com/oslkj6dpmz?file=css
Only change was adding this CSS
Describe your issue
I'm getting a compilation error "<css input>: Circular dependency detected when using:
@apply sr-only
". But I'd expect the project to run without issues. This class was used in Tailwind CSS v2 without any issues.I also don't understand how the circular dependency could come up since I'm using a class name not available in Tailwind CSS:
group-inner-focus-within:sr-only
. The issue goes away when I remove the last charactery
from the class. Seems like Tailwind tries to evaluate the class as a Tailwind class despite the prefix not existing in Tailwind.The text was updated successfully, but these errors were encountered: