Description
Feature Request
It would be very powerful if :extend could be passed a class name as a variable.
e.g. something like:
&:extend(@{extending-class-string});
or:
&:extend(@extending-class);
Use Cases:
(tl;dr this would be brilliant for making mixins reusable and for grid systems)
If you want to extend a class with numbered additions it is possible, as long as you create a mixin for every class you want to extend.
for example:
.dec-loop (@length) {
@i: @length;
.extended-class {
float: left;
}
.loop (@i) when (@i > 0) {
@loop-class: ~".dec-@{i}";
@{loop-class} {
&:extend(.extended-class);
}
.loop(@i - 1);
}
.loop(@i);
}
.dec-loop(4);
will create:
.extended-class,
.extended-class-4,
.extended-class-3,
.extended-class-2,
.extended-class-1 {
float: left;
}
However the name of the class being extended is hard coded into the mixin, requiring a new mixin for every class you want to extend in this way. But imagine if this worked:
.inc-loop (@extending-class-name; @total) {
@i: 1;
@extending-class-string: ~".@{extending-class-name}";
.loop (@i) when (@i =< @total) {
@loop-class: ~".@{extending-class-name}-@{i}";
@{loop-class} {
&:extend(@{extending-class-string}); // feature request
}
.loop(@i + 1);
}
.loop(@i);
}
.extended-class {
float: left;
}
.inc-loop(extended-class, 8);
or even better, if this worked!:
.inc-loop (@extending-class-name; @total) {
@i: 1;
@extending-class-string: ~".@{extending-class-name}";
.@{extending-class-name} { // another feature request?
float: left;
}
.loop (@i) when (@i =< @total) {
@loop-class: ~".@{extending-class-name}-@{i}";
@{loop-class} {
&:extend(@{extending-class-string}); // feature request
}
.loop(@i + 1);
}
.loop(@i);
}
.inc-loop(extended-class, 8);
Because this would allow us to have a SINGLE mixin, that could create and extend many different classes. Which might be just what you want if you are working on a grid layout system.
P.S.
I suspect that:
.@{extending-class-name}{}
may not work for quite a different reason. Somehow it does not create a class that can be extended, however this probably ought to be a separate Feature Request or Bug Issue.