Skip to content

Commit 41cbbfd

Browse files
authored
fix(theme): variable inheritance without default imported twice
This PR should finally fix proper variable inheritance without scoping and without overriding/double importing the default files twice. This is solved by simply pointing the theme value to a non existing path in case it's default, because the default path is always imported anyway. Another workaround would have been to just replace 'default' for each component inside theme.config by an empty string, but as theme.config is a custom file, nobody would have updated it for the next release. I wanted this to be backward compatible, so i replaced the variable on the fly. However, by using any LESS function to declare a variable (i tried replace/if/when/e/%), the access breaks when trying to use such variable via @{theme} inside mixins (which are scoped). :( Even trying to trick it by using %('%s',@theme) instead of the string path did not work and resulted into "malformed import statement instead" That said ( and even if this could be considered a bug in LESS), to solve all those issues, i just replaced the mixin call by importing another overrides.less file instead, which now isn't scoped anymore, so the import using the theme-variable also works there as well Just in case somebody has made own custom components i left the loadUIOverrides mixin, but replaced the content by a comment warning so it's not a breaking change and people know what to do.
1 parent bda537d commit 41cbbfd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+120
-58
lines changed

src/definitions/collections/breadcrumb.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,5 @@
115115
});
116116
}
117117

118-
.loadUIOverrides();
118+
// stylelint-disable no-invalid-position-at-import-rule
119+
@import (multiple, optional) "../../overrides.less";

src/definitions/collections/form.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1160,4 +1160,5 @@
11601160
});
11611161
}
11621162

1163-
.loadUIOverrides();
1163+
// stylelint-disable no-invalid-position-at-import-rule
1164+
@import (multiple, optional) "../../overrides.less";

src/definitions/collections/grid.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1981,4 +1981,5 @@
19811981
}
19821982
}
19831983

1984-
.loadUIOverrides();
1984+
// stylelint-disable no-invalid-position-at-import-rule
1985+
@import (multiple, optional) "../../overrides.less";

src/definitions/collections/menu.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2011,4 +2011,5 @@ Floated Menu / Item
20112011
}
20122012
}
20132013

2014-
.loadUIOverrides();
2014+
// stylelint-disable no-invalid-position-at-import-rule
2015+
@import (multiple, optional) "../../overrides.less";

src/definitions/collections/message.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -442,4 +442,5 @@
442442
});
443443
}
444444

445-
.loadUIOverrides();
445+
// stylelint-disable no-invalid-position-at-import-rule
446+
@import (multiple, optional) "../../overrides.less";

src/definitions/collections/table.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1929,4 +1929,5 @@
19291929
});
19301930
}
19311931

1932-
.loadUIOverrides();
1932+
// stylelint-disable no-invalid-position-at-import-rule
1933+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/button.less

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2005,4 +2005,6 @@
20052005
}
20062006
}
20072007
}
2008-
.loadUIOverrides();
2008+
2009+
// stylelint-disable no-invalid-position-at-import-rule
2010+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/container.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,4 +294,5 @@
294294
}
295295
}
296296

297-
.loadUIOverrides();
297+
// stylelint-disable no-invalid-position-at-import-rule
298+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/divider.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,4 +282,5 @@
282282
});
283283
}
284284

285-
.loadUIOverrides();
285+
// stylelint-disable no-invalid-position-at-import-rule
286+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/emoji.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,5 @@ each(@emoji-map, {
9191

9292
/* rtl:end:ignore */
9393

94-
.loadUIOverrides();
94+
// stylelint-disable no-invalid-position-at-import-rule
95+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/flag.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,5 @@ each(@flags, {
8383

8484
/* rtl:end:ignore */
8585

86-
.loadUIOverrides();
86+
// stylelint-disable no-invalid-position-at-import-rule
87+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/header.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,4 +490,5 @@
490490
font-size: @mediumFontSize;
491491
}
492492

493-
.loadUIOverrides();
493+
// stylelint-disable no-invalid-position-at-import-rule
494+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/icon.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,4 +655,5 @@ i.icons {
655655
}
656656
}
657657

658-
.loadUIOverrides();
658+
// stylelint-disable no-invalid-position-at-import-rule
659+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/image.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,4 +307,5 @@ img.ui.image {
307307
}
308308
}
309309

310-
.loadUIOverrides();
310+
// stylelint-disable no-invalid-position-at-import-rule
311+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/input.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -791,4 +791,5 @@
791791
});
792792
}
793793

794-
.loadUIOverrides();
794+
// stylelint-disable no-invalid-position-at-import-rule
795+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/label.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1011,4 +1011,5 @@ a.ui.active.label:hover::before {
10111011
});
10121012
}
10131013

1014-
.loadUIOverrides();
1014+
// stylelint-disable no-invalid-position-at-import-rule
1015+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/list.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1023,4 +1023,5 @@ ol.ui.list ol li,
10231023
});
10241024
}
10251025

1026-
.loadUIOverrides();
1026+
// stylelint-disable no-invalid-position-at-import-rule
1027+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/loader.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,4 +423,5 @@
423423
}
424424
}
425425

426-
.loadUIOverrides();
426+
// stylelint-disable no-invalid-position-at-import-rule
427+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/placeholder.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,4 +248,5 @@
248248
}
249249
}
250250

251-
.loadUIOverrides();
251+
// stylelint-disable no-invalid-position-at-import-rule
252+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/rail.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,5 @@
144144
});
145145
}
146146

147-
.loadUIOverrides();
147+
// stylelint-disable no-invalid-position-at-import-rule
148+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/reveal.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,4 +280,5 @@
280280
});
281281
}
282282

283-
.loadUIOverrides();
283+
// stylelint-disable no-invalid-position-at-import-rule
284+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/segment.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -934,4 +934,5 @@
934934
});
935935
}
936936

937-
.loadUIOverrides();
937+
// stylelint-disable no-invalid-position-at-import-rule
938+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/step.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,4 +617,5 @@
617617
}
618618
}
619619

620-
.loadUIOverrides();
620+
// stylelint-disable no-invalid-position-at-import-rule
621+
@import (multiple, optional) "../../overrides.less";

src/definitions/elements/text.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,5 @@ span.ui.medium.text {
7171
});
7272
}
7373

74-
.loadUIOverrides();
74+
// stylelint-disable no-invalid-position-at-import-rule
75+
@import (multiple, optional) "../../overrides.less";

src/definitions/globals/reset.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,5 @@ input[type="password"] {
4040
-moz-appearance: none; /* mobile firefox too! */
4141
}
4242

43-
.loadUIOverrides();
43+
// stylelint-disable no-invalid-position-at-import-rule
44+
@import (multiple, optional) "../../overrides.less";

src/definitions/globals/site.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,5 @@ input::selection {
207207
color: @inputHighlightColor;
208208
}
209209

210-
.loadUIOverrides();
210+
// stylelint-disable no-invalid-position-at-import-rule
211+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/accordion.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,4 +364,5 @@
364364
}
365365
}
366366

367-
.loadUIOverrides();
367+
// stylelint-disable no-invalid-position-at-import-rule
368+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/calendar.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,4 +215,5 @@
215215
}
216216
}
217217

218-
.loadUIOverrides();
218+
// stylelint-disable no-invalid-position-at-import-rule
219+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/checkbox.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -696,4 +696,5 @@
696696
});
697697
}
698698

699-
.loadUIOverrides();
699+
// stylelint-disable no-invalid-position-at-import-rule
700+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/dimmer.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,4 +390,5 @@ body.dimmable > .dimmer {
390390
}
391391
}
392392

393-
.loadUIOverrides();
393+
// stylelint-disable no-invalid-position-at-import-rule
394+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/dropdown.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1951,4 +1951,5 @@ select.ui.dropdown {
19511951
}
19521952
}
19531953

1954-
.loadUIOverrides();
1954+
// stylelint-disable no-invalid-position-at-import-rule
1955+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/embed.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,4 +155,5 @@
155155
}
156156
}
157157

158-
.loadUIOverrides();
158+
// stylelint-disable no-invalid-position-at-import-rule
159+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/flyout.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,4 +645,5 @@ body.pushable > .pusher {
645645
}
646646
}
647647

648-
.loadUIOverrides();
648+
// stylelint-disable no-invalid-position-at-import-rule
649+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/modal.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -620,4 +620,5 @@
620620
}
621621
}
622622

623-
.loadUIOverrides();
623+
// stylelint-disable no-invalid-position-at-import-rule
624+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/nag.less

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,6 @@ a.ui.nag {
207207
border-radius: @borderRadius;
208208
}
209209
}
210-
.loadUIOverrides();
210+
211+
// stylelint-disable no-invalid-position-at-import-rule
212+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/popup.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -928,4 +928,5 @@
928928
});
929929
}
930930

931-
.loadUIOverrides();
931+
// stylelint-disable no-invalid-position-at-import-rule
932+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/progress.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -650,4 +650,5 @@
650650
}
651651
}
652652

653-
.loadUIOverrides();
653+
// stylelint-disable no-invalid-position-at-import-rule
654+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/rating.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,4 +177,5 @@
177177
});
178178
}
179179

180-
.loadUIOverrides();
180+
// stylelint-disable no-invalid-position-at-import-rule
181+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/search.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,4 +553,5 @@
553553
}
554554
}
555555

556-
.loadUIOverrides();
556+
// stylelint-disable no-invalid-position-at-import-rule
557+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/shape.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,4 +143,5 @@
143143
display: block;
144144
}
145145

146-
.loadUIOverrides();
146+
// stylelint-disable no-invalid-position-at-import-rule
147+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/sidebar.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -667,4 +667,5 @@ body.pushable > .pusher {
667667
}
668668
}
669669

670-
.loadUIOverrides();
670+
// stylelint-disable no-invalid-position-at-import-rule
671+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/slider.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,4 +426,5 @@
426426
});
427427
}
428428

429-
.loadUIOverrides();
429+
// stylelint-disable no-invalid-position-at-import-rule
430+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/sticky.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,5 @@
6565
position: sticky;
6666
}
6767

68-
.loadUIOverrides();
68+
// stylelint-disable no-invalid-position-at-import-rule
69+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/tab.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,5 @@
8282
}
8383
}
8484

85-
.loadUIOverrides();
85+
// stylelint-disable no-invalid-position-at-import-rule
86+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/toast.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -714,4 +714,5 @@
714714
}
715715
}
716716

717-
.loadUIOverrides();
717+
// stylelint-disable no-invalid-position-at-import-rule
718+
@import (multiple, optional) "../../overrides.less";

src/definitions/modules/transition.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,5 @@
113113
}
114114
}
115115

116-
.loadUIOverrides();
116+
// stylelint-disable no-invalid-position-at-import-rule
117+
@import (multiple, optional) "../../overrides.less";

src/definitions/views/ad.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -293,4 +293,5 @@
293293
}
294294
}
295295

296-
.loadUIOverrides();
296+
// stylelint-disable no-invalid-position-at-import-rule
297+
@import (multiple, optional) "../../overrides.less";

src/definitions/views/card.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1178,4 +1178,5 @@
11781178
}
11791179
}
11801180

1181-
.loadUIOverrides();
1181+
// stylelint-disable no-invalid-position-at-import-rule
1182+
@import (multiple, optional) "../../overrides.less";

src/definitions/views/comment.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,4 +291,5 @@
291291
}
292292
}
293293

294-
.loadUIOverrides();
294+
// stylelint-disable no-invalid-position-at-import-rule
295+
@import (multiple, optional) "../../overrides.less";

src/definitions/views/feed.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,4 +317,5 @@
317317
}
318318
}
319319

320-
.loadUIOverrides();
320+
// stylelint-disable no-invalid-position-at-import-rule
321+
@import (multiple, optional) "../../overrides.less";

src/definitions/views/item.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -598,4 +598,5 @@
598598
}
599599
}
600600

601-
.loadUIOverrides();
601+
// stylelint-disable no-invalid-position-at-import-rule
602+
@import (multiple, optional) "../../overrides.less";

src/definitions/views/statistic.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,4 +414,5 @@
414414
});
415415
}
416416

417-
.loadUIOverrides();
417+
// stylelint-disable no-invalid-position-at-import-rule
418+
@import (multiple, optional) "../../overrides.less";

src/overrides.less

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// ------------------
2+
// Overrides
3+
// -------------------
4+
5+
@import (optional) "@{themesFolder}/default/@{type}s/@{element}.overrides";
6+
@import (optional) "@{themesFolder}/@{theme}/@{type}s/@{element}.overrides";
7+
@import (optional) "@{siteFolder}/@{type}s/@{element}.overrides";

src/theme.less

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
Theme
77
------------------- */
88

9-
@theme: @@element;
9+
@theme: if(@@element = "default", "", @@element);
1010

1111
/* --------------------
1212
Site Variables
@@ -80,10 +80,11 @@
8080
Overrides
8181
------------------- */
8282

83+
// Keep empty mixin in case of custom components using it so they dont break
8384
.loadUIOverrides() {
84-
& when not (@theme = "default") {
85-
@import (optional) "@{themesFolder}/default/@{type}s/@{element}.overrides";
86-
}
87-
@import (optional) "@{themesFolder}/@{theme}/@{type}s/@{element}.overrides";
88-
@import (optional) "@{siteFolder}/@{type}s/@{element}.overrides";
85+
/* loadUIOverrides mixin is deprecated and will be removed in 2.10.0
86+
Replace mixin call by
87+
@import (multiple, optional) "../../overrides.less";
88+
instead
89+
*/
8990
}

0 commit comments

Comments
 (0)