Skip to content

Commit

Permalink
fix(theme): variable inheritance without default imported twice
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
lubber-de authored Mar 1, 2023
1 parent bda537d commit 41cbbfd
Show file tree
Hide file tree
Showing 54 changed files with 120 additions and 58 deletions.
3 changes: 2 additions & 1 deletion src/definitions/collections/breadcrumb.less
Original file line number Diff line number Diff line change
Expand Up @@ -115,4 +115,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/collections/form.less
Original file line number Diff line number Diff line change
Expand Up @@ -1160,4 +1160,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/collections/grid.less
Original file line number Diff line number Diff line change
Expand Up @@ -1981,4 +1981,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/collections/menu.less
Original file line number Diff line number Diff line change
Expand Up @@ -2011,4 +2011,5 @@ Floated Menu / Item
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/collections/message.less
Original file line number Diff line number Diff line change
Expand Up @@ -442,4 +442,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/collections/table.less
Original file line number Diff line number Diff line change
Expand Up @@ -1929,4 +1929,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
4 changes: 3 additions & 1 deletion src/definitions/elements/button.less
Original file line number Diff line number Diff line change
Expand Up @@ -2005,4 +2005,6 @@
}
}
}
.loadUIOverrides();

// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/container.less
Original file line number Diff line number Diff line change
Expand Up @@ -294,4 +294,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/divider.less
Original file line number Diff line number Diff line change
Expand Up @@ -282,4 +282,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/emoji.less
Original file line number Diff line number Diff line change
Expand Up @@ -91,4 +91,5 @@ each(@emoji-map, {

/* rtl:end:ignore */

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/flag.less
Original file line number Diff line number Diff line change
Expand Up @@ -83,4 +83,5 @@ each(@flags, {

/* rtl:end:ignore */

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/header.less
Original file line number Diff line number Diff line change
Expand Up @@ -490,4 +490,5 @@
font-size: @mediumFontSize;
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/icon.less
Original file line number Diff line number Diff line change
Expand Up @@ -655,4 +655,5 @@ i.icons {
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/image.less
Original file line number Diff line number Diff line change
Expand Up @@ -307,4 +307,5 @@ img.ui.image {
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/input.less
Original file line number Diff line number Diff line change
Expand Up @@ -791,4 +791,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/label.less
Original file line number Diff line number Diff line change
Expand Up @@ -1011,4 +1011,5 @@ a.ui.active.label:hover::before {
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/list.less
Original file line number Diff line number Diff line change
Expand Up @@ -1023,4 +1023,5 @@ ol.ui.list ol li,
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/loader.less
Original file line number Diff line number Diff line change
Expand Up @@ -423,4 +423,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/placeholder.less
Original file line number Diff line number Diff line change
Expand Up @@ -248,4 +248,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/rail.less
Original file line number Diff line number Diff line change
Expand Up @@ -144,4 +144,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/reveal.less
Original file line number Diff line number Diff line change
Expand Up @@ -280,4 +280,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/segment.less
Original file line number Diff line number Diff line change
Expand Up @@ -934,4 +934,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/step.less
Original file line number Diff line number Diff line change
Expand Up @@ -617,4 +617,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/elements/text.less
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,5 @@ span.ui.medium.text {
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/globals/reset.less
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,5 @@ input[type="password"] {
-moz-appearance: none; /* mobile firefox too! */
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/globals/site.less
Original file line number Diff line number Diff line change
Expand Up @@ -207,4 +207,5 @@ input::selection {
color: @inputHighlightColor;
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/accordion.less
Original file line number Diff line number Diff line change
Expand Up @@ -364,4 +364,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/calendar.less
Original file line number Diff line number Diff line change
Expand Up @@ -215,4 +215,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/checkbox.less
Original file line number Diff line number Diff line change
Expand Up @@ -696,4 +696,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/dimmer.less
Original file line number Diff line number Diff line change
Expand Up @@ -390,4 +390,5 @@ body.dimmable > .dimmer {
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/dropdown.less
Original file line number Diff line number Diff line change
Expand Up @@ -1951,4 +1951,5 @@ select.ui.dropdown {
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/embed.less
Original file line number Diff line number Diff line change
Expand Up @@ -155,4 +155,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/flyout.less
Original file line number Diff line number Diff line change
Expand Up @@ -645,4 +645,5 @@ body.pushable > .pusher {
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/modal.less
Original file line number Diff line number Diff line change
Expand Up @@ -620,4 +620,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
4 changes: 3 additions & 1 deletion src/definitions/modules/nag.less
Original file line number Diff line number Diff line change
Expand Up @@ -207,4 +207,6 @@ a.ui.nag {
border-radius: @borderRadius;
}
}
.loadUIOverrides();

// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/popup.less
Original file line number Diff line number Diff line change
Expand Up @@ -928,4 +928,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/progress.less
Original file line number Diff line number Diff line change
Expand Up @@ -650,4 +650,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/rating.less
Original file line number Diff line number Diff line change
Expand Up @@ -177,4 +177,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/search.less
Original file line number Diff line number Diff line change
Expand Up @@ -553,4 +553,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/shape.less
Original file line number Diff line number Diff line change
Expand Up @@ -143,4 +143,5 @@
display: block;
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/sidebar.less
Original file line number Diff line number Diff line change
Expand Up @@ -667,4 +667,5 @@ body.pushable > .pusher {
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/slider.less
Original file line number Diff line number Diff line change
Expand Up @@ -426,4 +426,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/sticky.less
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,5 @@
position: sticky;
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/tab.less
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/toast.less
Original file line number Diff line number Diff line change
Expand Up @@ -714,4 +714,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/modules/transition.less
Original file line number Diff line number Diff line change
Expand Up @@ -113,4 +113,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/views/ad.less
Original file line number Diff line number Diff line change
Expand Up @@ -293,4 +293,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/views/card.less
Original file line number Diff line number Diff line change
Expand Up @@ -1178,4 +1178,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/views/comment.less
Original file line number Diff line number Diff line change
Expand Up @@ -291,4 +291,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/views/feed.less
Original file line number Diff line number Diff line change
Expand Up @@ -317,4 +317,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/views/item.less
Original file line number Diff line number Diff line change
Expand Up @@ -598,4 +598,5 @@
}
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
3 changes: 2 additions & 1 deletion src/definitions/views/statistic.less
Original file line number Diff line number Diff line change
Expand Up @@ -414,4 +414,5 @@
});
}

.loadUIOverrides();
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";
7 changes: 7 additions & 0 deletions src/overrides.less
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// ------------------
// Overrides
// -------------------

@import (optional) "@{themesFolder}/default/@{type}s/@{element}.overrides";
@import (optional) "@{themesFolder}/@{theme}/@{type}s/@{element}.overrides";
@import (optional) "@{siteFolder}/@{type}s/@{element}.overrides";
13 changes: 7 additions & 6 deletions src/theme.less
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
Theme
------------------- */

@theme: @@element;
@theme: if(@@element = "default", "", @@element);

/* --------------------
Site Variables
Expand Down Expand Up @@ -80,10 +80,11 @@
Overrides
------------------- */

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

0 comments on commit 41cbbfd

Please sign in to comment.