Skip to content

Commit 41e88d2

Browse files
authored
Merge pull request #480 from dev-five-git/fix-global-css-issue
Fix global css issue
2 parents 37172a8 + 211e7ab commit 41e88d2

File tree

4 files changed

+61
-4
lines changed

4 files changed

+61
-4
lines changed

.changeset/clever-teeth-itch.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@devup-ui/wasm': patch
3+
---
4+
5+
Fix global css issue

libs/extractor/src/css_utils.rs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,18 +149,30 @@ pub fn optimize_css_block(css: &str) -> String {
149149
.join("}")
150150
.split(";")
151151
.map(|s| {
152-
if !s.contains(":") {
153-
s.trim().to_string()
152+
println!("s: {}", s);
153+
let parts = s.split("{").collect::<Vec<&str>>();
154+
let first_part = if parts.len() == 1 {
155+
"".to_string()
154156
} else {
155-
let mut iter = s.split(":");
157+
format!("{}{{", parts.first().unwrap().trim())
158+
};
159+
println!("first_part: {}", first_part);
160+
let last_part = parts.last().unwrap().trim();
161+
if !last_part.contains(":") {
162+
println!("last_part: {}", last_part);
163+
format!("{first_part}{last_part}")
164+
} else {
165+
let mut iter = last_part.split(":");
156166
let property = iter.next().unwrap().trim();
157167
let value = iter.next().unwrap().trim();
168+
169+
println!("property: {}, value: {}", property, value);
158170
let value = if check_multi_css_optimize(property.split("{").last().unwrap()) {
159171
optimize_mutli_css_value(value)
160172
} else {
161173
value.to_string()
162174
};
163-
format!("{property}:{value}")
175+
format!("{first_part}{property}:{value}")
164176
}
165177
})
166178
.collect::<Vec<String>>()
@@ -224,6 +236,14 @@ mod tests {
224236
"ul{font-family:\"Roboto Hello\",sans-serif}"
225237
)]
226238
#[case("section{ }", "section{}")]
239+
#[case(":root{ }", ":root{}")]
240+
#[case(":root{ background: red; }", ":root{background:red}")]
241+
#[case(
242+
":root, :section{ background: red; }",
243+
":root,:section{background:red}"
244+
)]
245+
#[case("*:hover{ background: red; }", "*:hover{background:red}")]
246+
#[case(":root {color-scheme: light dark }", ":root{color-scheme:light dark}")]
227247
fn test_optimize_css_block(#[case] input: &str, #[case] expected: &str) {
228248
assert_eq!(optimize_css_block(input), expected);
229249
}

libs/extractor/src/lib.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6227,6 +6227,23 @@ globalCss({
62276227
r#"import { globalCss } from "@devup-ui/core";
62286228
globalCss`
62296229
`
6230+
"#,
6231+
ExtractOption {
6232+
package: "@devup-ui/core".to_string(),
6233+
css_dir: "@devup-ui/core".to_string(),
6234+
single_css: true,
6235+
import_main_css: false
6236+
}
6237+
)
6238+
.unwrap()
6239+
));
6240+
6241+
reset_class_map();
6242+
assert_debug_snapshot!(ToBTreeSet::from(
6243+
extract(
6244+
"test.tsx",
6245+
r#"import { globalCss } from "@devup-ui/core";
6246+
globalCss`:root {color-scheme: light dark}`
62306247
"#,
62316248
ExtractOption {
62326249
package: "@devup-ui/core".to_string(),
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import { globalCss } from \"@devup-ui/core\";\n globalCss`:root {color-scheme: light dark}`\n \"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: true, import_main_css: false\n}).unwrap())"
4+
---
5+
ToBTreeSet {
6+
styles: {
7+
Css(
8+
ExtractCss {
9+
css: ":root{color-scheme:light dark}",
10+
file: "test.tsx",
11+
},
12+
),
13+
},
14+
code: "import \"@devup-ui/core/devup-ui.css\";\n;\n",
15+
}

0 commit comments

Comments
 (0)