Skip to content

Commit 655fcfc

Browse files
authored
Properly support selector lists for selector.extend() (#1378)
Closes #1301
1 parent 83343d7 commit 655fcfc

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
URLs (those that begin with `/`) in `@import` rules would be passed to
1414
both Dart and JS importers as `file:` URLs.
1515

16+
* Properly support selector lists for the `$extendee` argument to
17+
`selector.extend()` and `selector.replace()`.
18+
1619
* Fix an edge case where `@extend` wouldn't affect a selector within a
1720
pseudo-selector such as `:is()` that itself extended other selectors.
1821

lib/src/extend/extension_store.dart

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -95,28 +95,25 @@ class ExtensionStore {
9595
SelectorList targets,
9696
ExtendMode mode,
9797
FileSpan span) {
98-
var compoundTargets = [
99-
for (var complex in targets.components)
100-
if (complex.components.length != 1)
101-
throw SassScriptException("Can't extend complex selector $complex.")
102-
else
103-
complex.components.first as CompoundSelector
104-
];
105-
106-
var extensions = {
107-
for (var compound in compoundTargets)
98+
var extender = ExtensionStore._mode(mode);
99+
if (!selector.isInvisible) {
100+
extender._originals.addAll(selector.components);
101+
}
102+
103+
for (var complex in targets.components) {
104+
if (complex.components.length != 1) {
105+
throw SassScriptException("Can't extend complex selector $complex.");
106+
}
107+
var compound = complex.components.first as CompoundSelector;
108+
109+
selector = extender._extendList(selector, span, {
108110
for (var simple in compound.components)
109111
simple: {
110112
for (var complex in source.components)
111113
complex: Extension(complex, span, simple, span, optional: true)
112114
}
113-
};
114-
115-
var extender = ExtensionStore._mode(mode);
116-
if (!selector.isInvisible) {
117-
extender._originals.addAll(selector.components);
115+
});
118116
}
119-
selector = extender._extendList(selector, span, extensions);
120117

121118
return selector;
122119
}

0 commit comments

Comments
 (0)