Skip to content

Commit 8fcae6c

Browse files
authored
feat: CSS nesting baseline support (#87)
1 parent 3d91042 commit 8fcae6c

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

src/rules/require-baseline.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,11 @@ class BaselineAvailability {
375375
* @returns {boolean} `true` if the feature is supported, `false` if not.
376376
*/
377377
isSupported(encodedStatus) {
378+
if (!encodedStatus) {
379+
// if we don't know the status, assume it's supported
380+
return true;
381+
}
382+
378383
const parts = encodedStatus.split(":");
379384
const status = Number(parts[0]);
380385
const year = Number(parts[1] || NaN);
@@ -776,6 +781,24 @@ export default {
776781
}
777782
}
778783
},
784+
785+
NestingSelector(node) {
786+
// NestingSelector implies CSS nesting
787+
const selector = "nesting";
788+
const featureStatus = selectors.get(selector);
789+
if (baselineAvailability.isSupported(featureStatus)) {
790+
return;
791+
}
792+
793+
context.report({
794+
loc: node.loc,
795+
messageId: "notBaselineSelector",
796+
data: {
797+
selector,
798+
availability: baselineAvailability.availability,
799+
},
800+
});
801+
},
779802
};
780803
},
781804
};

tests/rules/require-baseline.test.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,5 +440,26 @@ ruleTester.run("require-baseline", rule, {
440440
},
441441
],
442442
},
443+
{
444+
code: `label {
445+
& input {
446+
border: blue 2px dashed;
447+
}
448+
}`,
449+
options: [{ available: 2022 }],
450+
errors: [
451+
{
452+
messageId: "notBaselineSelector",
453+
data: {
454+
selector: "nesting",
455+
availability: 2022,
456+
},
457+
line: 2,
458+
column: 5,
459+
endLine: 2,
460+
endColumn: 6,
461+
},
462+
],
463+
},
443464
],
444465
});

0 commit comments

Comments
 (0)