diff --git a/lerna.json b/lerna.json index 93a2dc0ec..d190800cd 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "packages/*" ], "npmClient": "npm", - "version": "3.12.1" + "version": "3.12.2" } diff --git a/packages/less/Gruntfile.js b/packages/less/Gruntfile.js index 8d30d93a7..bf967b102 100644 --- a/packages/less/Gruntfile.js +++ b/packages/less/Gruntfile.js @@ -251,6 +251,7 @@ module.exports = function(grunt) { command: [ // @TODO: make this more thorough // CURRENT OPTIONS + `node bin/lessc --ie-compat ${lessFolder}/_main/lazy-eval.less tmp/lazy-eval.css`, // --math `node bin/lessc --math=always ${lessFolder}/_main/lazy-eval.less tmp/lazy-eval.css`, `node bin/lessc --math=parens-division ${lessFolder}/_main/lazy-eval.less tmp/lazy-eval.css`, diff --git a/packages/less/bin/lessc b/packages/less/bin/lessc index 82420826b..18599a728 100755 --- a/packages/less/bin/lessc +++ b/packages/less/bin/lessc @@ -516,6 +516,10 @@ function processPluginQueue() { } break; + + case 'ie-compat': + console.warn('The --ie-compat option is deprecated, as it has no effect on compilation.'); + break; case 'relative-urls': console.warn('The --relative-urls option has been deprecated. Use --rewrite-urls=all.'); diff --git a/packages/less/src/less/functions/list.js b/packages/less/src/less/functions/list.js index 71e5e5c56..1463a5232 100644 --- a/packages/less/src/less/functions/list.js +++ b/packages/less/src/less/functions/list.js @@ -1,4 +1,5 @@ import Comment from '../tree/comment'; +import Node from '../tree/node'; import Dimension from '../tree/dimension'; import Declaration from '../tree/declaration'; import Expression from '../tree/expression'; @@ -65,20 +66,27 @@ export default { let newRules; let iterator; + const tryEval = val => { + if (val instanceof Node) { + return val.eval(this.context); + } + return val; + }; + if (list.value && !(list instanceof Quote)) { if (Array.isArray(list.value)) { - iterator = list.value; + iterator = list.value.map(tryEval); } else { - iterator = [list.value]; + iterator = [tryEval(list.value)]; } } else if (list.ruleset) { - iterator = list.ruleset.rules; + iterator = tryEval(list.ruleset).rules; } else if (list.rules) { - iterator = list.rules; + iterator = list.rules.map(tryEval); } else if (Array.isArray(list)) { - iterator = list; + iterator = list.map(tryEval); } else { - iterator = [list]; + iterator = [tryEval(list)]; } let valueName = '@value'; diff --git a/packages/test-data/css/namespacing/namespacing-8.css b/packages/test-data/css/namespacing/namespacing-8.css new file mode 100644 index 000000000..a68bb76ae --- /dev/null +++ b/packages/test-data/css/namespacing/namespacing-8.css @@ -0,0 +1,10 @@ +:root { + --background-color: black; + --color: #fff; +} +div { + display: inline-block; + padding: 1rem; + background-color: var(--background-color); + color: var(--color); +} diff --git a/packages/test-data/less/namespacing/namespacing-8.less b/packages/test-data/less/namespacing/namespacing-8.less new file mode 100644 index 000000000..e73835c6b --- /dev/null +++ b/packages/test-data/less/namespacing/namespacing-8.less @@ -0,0 +1,31 @@ +// see: https://github.com/less/less.js/issues/3368 +@vars: { + background-color: black; + color: contrast($background-color, #000, #fff); +} + +:root { + each(@vars, { + --@{key}: @value; + }); +} + +div { + display: inline-block; + padding: 1rem; + background-color: var(--background-color); + color: var(--color); +} + +// see: https://github.com/less/less.js/issues/3339 +// still fails - move to 4.0 +// @components: { +// columns: true; +// ratios: false; +// }; + +// each(@components, { +// & when (@value = true) { +// @import (optional) "components/@{key}.less"; +// } +// }); \ No newline at end of file