Comments (3)
Hey, this issue was fixed in makeStyles
sometime ago, microsoft/fluentui#20348. But read below ⬇️
It breaks with rules that flip in RTL, the simplest example is:
makeStyles({
root: {
":active,:focus-within": {
paddingLeft: "10px"
}
}
});
⬇️⬇️⬇️
.f14f5aie:active,
.f14f5aie:focus-within {
padding-left: 10px;
}
.f1sheuf0:active,
:focus-within {
padding-right: 10px;
}
P.S. You can dump all rules with:
console.log(
[...document.querySelectorAll("[data-make-styles-bucket]")]
.flatMap(el => [...el.sheet.cssRules].map(rule => rule.cssText))
.join("\n")
);
P.P.S. We have tryout page to check generated CSS.
P.P.P.S. Thanks for reporting 🙏
from griffel.
The fix is needed in compileCSS.ts
:
griffel/packages/core/src/runtime/compileCSS.ts
Lines 102 to 105 in 8a6d180
It's not visible with template literals, but cssRule
on 101 & 104 are different - there are missing curly brackets 🤦♂️
-cssRule = `${cssRule}; ${rtlClassNameSelector}${normalizedPseudo} ${rtlCSSDeclaration};`;
+cssRule = `${cssRule}; ${rtlClassNameSelector}{${normalizedPseudo} ${rtlCSSDeclaration}};`;
We also need to cover this with a unit test:
it('handles complex nested selectors', () => {
expect(resolveStyleRules({ '& > :first-child': { '& svg': { color: 'red' } } })).toMatchInlineSnapshot(`
.fxfx2ih > :first-child svg {
color: red;
}
`);
});
+ it('handles comma separated selectors', () => {
+ expect(
+ resolveStyleRules({
+ ':active,:focus-within': {
+ paddingLeft: '10px',
+ },
+ }),
+ ).toMatchInlineSnapshot(`
+ .f14f5aie:active,
+ .f14f5aie:focus-within {
+ padding-left: 10px;
+ }
+ .f1sheuf0:active,
+ .f1sheuf0:focus-within {
+ padding-right: 10px;
+ }
+ `);
+ });
P.S. @spmonahan are you interested in contributing a fix? 😉
from griffel.
Didn't see an issue for this in the issue log but glad it was (mostly) fixed already!
Thanks for the debugging tips -- they will be very helpful! I've been following the work on Griffel DevTools and while looking into this issue was thinking, "can't wait for DevTools!".
Happy to contribute a fix. Should have time to work on it today.
from griffel.
Related Issues (20)
- core: shorthands.gridArea() does not expand custom idents properly HOT 7
- core: Support object literal with multiline keys HOT 2
- Can we cache the `makeStyles` internal HOT 2
- Failed to override styles when selectors are grouped
- lint: add lint rule which warn unused makeStyles classes HOT 2
- vite: add support for CSS extraction HOT 2
- core: add support for fallback properties in `makeStaticStyles` HOT 3
- lint: forbid comma separated selectors in selectors HOT 1
- `shorthands.flex(1)` should produce `flex: 1 1 0%` instead of `flex: 1 1 0px` HOT 3
- Vite plugin: TypeError: griffel is not a function HOT 5
- eslint-plugin: Is not compatible with eslint 8.x HOT 2
- eslint-plugin: add no-unnecesary-shorthands rule HOT 1
- `csstype` bump to 3.1.3 causing BREAKING CHANGEs on type-level
- babel-preset: transforms don't work with native ESM packages that use `.mjs` HOT 2
- babel-preset: transforms dont work with `swc` commonjs output HOT 1
- makeResetStyles should not override makeStyles HOT 2
- core: add support for CSS shorthands
- docs: add mergeClasses() to playground
- babel-preset: huge perf slowdown on first babel transform invoction
- core: `makeStaticStyles` to support @at-rules HOT 1
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 griffel.