Skip to content

Commit 2dec9f6

Browse files
committed
Fix problem with some classeNames not beeing parsed
1 parent 2f2eec7 commit 2dec9f6

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

src/bin/css_to_ts/classNames.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,27 @@ import { objectKeys } from "tsafe/objectKeys";
55
export const parseClassNames = memoize((rawCssCode: string): string[] => {
66
const rulesByBreakpoint = getRulesByBreakpoint(rawCssCode);
77

8-
const classes = new Set<string>();
8+
const classNames = new Set<string>();
99

1010
objectKeys(rulesByBreakpoint).forEach(breakpoint => {
1111
const rules = rulesByBreakpoint[breakpoint];
1212

1313
rules.forEach(({ selectors }) => {
1414
selectors.forEach(selector => {
15-
const matchArr = selector.match(/^\.(fr-[a-zA-Z0-9_-]+)/);
15+
const matchArr = selector.match(/\.fr-[a-zA-Z0-9_-]+/g);
1616

1717
if (matchArr === null) {
1818
return;
1919
}
2020

21-
classes.add(matchArr[1]);
21+
matchArr
22+
.map(matchedStr => matchedStr.replace(/^\./, ""))
23+
.forEach(className => classNames.add(className));
2224
});
2325
});
2426
});
2527

26-
return Array.from(classes);
28+
return Array.from(classNames);
2729
});
2830

2931
export function generateClassNamesTsCode(params: {

test/runtime/bin/classNames/parseClassNames.test.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,26 @@ it("Parsing of fr classnames", () => {
2020
padding: 0.5rem;
2121
}
2222
23+
.fr-header__navbar .fr-btn--menu {
24+
color: #3a3a3a;
25+
}
26+
2327
@media (min-width: 36em) { }
2428
@media (min-width: 48em) { }
2529
@media (min-width: 62em) { }
2630
@media (min-width: 78em) { }
2731
2832
`;
2933

30-
const expected = ["fr-text--light", "fr-text--xl", "fr-text--lead", "fr-grid-row--gutters"];
34+
const expected = [
35+
"fr-text--light",
36+
"fr-text--xl",
37+
"fr-text--lead",
38+
"fr-grid-row--gutters",
39+
"fr-col",
40+
"fr-header__navbar",
41+
"fr-btn--menu"
42+
];
3143

3244
const got = parseClassNames(input);
3345

0 commit comments

Comments
 (0)