Skip to content

Commit

Permalink
Merge pull request #4327 from Polymer/1.x-style-include
Browse files Browse the repository at this point in the history
1.x style include
  • Loading branch information
dfreedm authored Feb 23, 2017
2 parents fe535a2 + 20de928 commit 5d026bd
Show file tree
Hide file tree
Showing 6 changed files with 1,203 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/lib/style-util.html
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,42 @@
return cssText;
},

styleIncludesToTemplate: function(targetTemplate) {
var styles = targetTemplate.content.querySelectorAll('style[include]');
for (var i=0, s; i < styles.length; i++) {
s = styles[i];
s.parentNode.insertBefore(
this._includesToFragment(s.getAttribute('include')), s);
}
},

_includesToFragment: function(styleIncludes) {
var includeArray = styleIncludes.trim().split(' ');
var frag = document.createDocumentFragment();
for (var i=0; i < includeArray.length; i++) {
var t = Polymer.DomModule.import(includeArray[i], 'template');
if (t) {
this._addStylesToFragment(frag, t.content);
}
}
return frag;
},

_addStylesToFragment: function(frag, source) {
var s$ = source.querySelectorAll('style');
for (var i=0, s; i < s$.length; i++) {
s = s$[i];
var include = s.getAttribute('include');
if (include) {
frag.appendChild(this._includesToFragment(include));
}
if (s.textContent) {
frag.appendChild(s.cloneNode(true));
}

}
},

isTargetedBuild: function(buildType) {
return settings.useNativeShadow ? buildType === 'shadow' : buildType === 'shady';
},
Expand Down
3 changes: 3 additions & 0 deletions src/standard/styling.html
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@
var hasTargetedCssBuild = styleUtil.isTargetedBuild(this.__cssBuild);
if (settings.useNativeCSSProperties && this.__cssBuild === 'shadow'
&& hasTargetedCssBuild) {
if (settings.preserveStyleIncludes) {
styleUtil.styleIncludesToTemplate(this._template);
}
return;
}
this._styles = this._styles || this._collectStyles();
Expand Down
1 change: 1 addition & 0 deletions test/runner.html
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
'unit/resolveurl.html',
'unit/css-parse.html',
'unit/styling-scoped.html',
'unit/preserve-style-include/styling-scoped.html',
'unit/styling-extends.html',
'unit/styling-remote.html',
'unit/styling-cross-scope-var.html',
Expand Down
72 changes: 72 additions & 0 deletions test/smoke/preserve-include.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
Polymer = {
preserveStyleIncludes: true
}
</script>
<link rel="import" href="../../polymer.html">
</head>
<body>
<dom-module id="include4">
<template>
<style>
:host {
color: red;
--mixin: {
border: 2px solid tomato;
}
}
</style>
<style></style>
</template>
</dom-module>

<dom-module id="include2">
<template>
<style>
:host {
margin: 10px;
}
</style>
<style></style>
</template>
</dom-module>

<dom-module id="include1">
<template>
<style include="include2 include3">
:host {
padding: 10px;
}
</style>
<style include="include4"></style>
</template>
</dom-module>

<dom-module id="x-test">
<template>
<style include="include1">
:host {
display: block;
background: green;
@apply --mixin;
}

</style>
<div>Hi</div>
</template>
<script>
Polymer({
is: 'x-test'
});
</script>
</dom-module>


<x-test></x-test>
</body>
</html>
Loading

0 comments on commit 5d026bd

Please sign in to comment.