Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(150)

Side by Side Diff: third_party/polymer/v0_8/components/polymer/src/lib/x-style.html

Issue 1162563004: Upgrade to 1.0 and switch clients to dom-repeat where needed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix a layout import and remove the gzipped webanimation in reproduce.sh Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!--
2 @license
3 Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
4 This code may only be used under the BSD style license found at http://polymer.g ithub.io/LICENSE.txt
5 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
6 The complete set of contributors may be found at http://polymer.github.io/CONTRI BUTORS.txt
7 Code distributed by Google as part of the polymer project is also
8 subject to an additional IP rights grant found at http://polymer.github.io/PATEN TS.txt
9 -->
10 <link rel="import" href="style-util.html">
11 <link rel="import" href="style-transformer.html">
12 <link rel="import" href="style-defaults.html">
13
14 <!--
15
16 The `x-style` extension of the native `<style>` element allows defining styles
17 in the main document that can take advantage of several special features of
18 Polymer's styling system:
19
20 * Document styles defined in an `x-style` will be shimmed to ensure they do
21 not leak into local DOM when running on browsers without non-native Shadow DOM.
22 * Shadow DOM-specific `/deep/` and `::shadow` combinators will be shimmed on
23 browsers without non-native Shadow DOM.
24 * Custom properties used by Polymer's experimental shim for cross-scope styling
25 may be defined in an `x-style`.
26
27 Example:
28
29 ```html
30 <!doctype html>
31 <html>
32 <head>
33 <script src="components/webcomponentsjs/webcomponents-lite.js"></script>
34 <link rel="import" href="components/polymer/polymer.html">
35
36 <style is="x-style">
37
38 /* Will be prevented from affecting local DOM of Polymer elements */
39 * {
40 box-sizing: border-box;
41 }
42
43 /* Can use /deep/ and ::shadow combinators */
44 body /deep/ .my-special-view::shadow #thing-inside {
45 background: yellow;
46 }
47
48 /* Custom properties that inherit down the document tree may be defined */
49 body {
50 --my-toolbar-title-color: green;
51 }
52
53 </style>
54
55 </head>
56 <body>
57
58 ...
59
60 </body>
61 </html>
62 ```
63
64 Note, all features of `x-style` are available when defining styles as part of Po lymer elements (e.g. `<style>` elements within `<dom-module>`'s used for definin g Polymer elements. The `x-style` extension should only be used for defining doc ument styles, outside of a custom element's local DOM.
65
66 -->
67
68 <script>
69 (function() {
70
71 Polymer({
72
73 is: 'x-style',
74 extends: 'style',
75
76 created: function() {
77 var rules = Polymer.StyleUtil.parser.parse(this.textContent);
78 this.applyProperties(rules);
79 // TODO(sorvell): since custom rules must match directly, they tend to be
80 // made with selectors like `*`.
81 // We *remove them here* so they don't apply too widely and nerf recalc.
82 // This means that normal properties mixe in rules with custom
83 // properties will *not* apply.
84 var cssText = Polymer.StyleUtil.parser.stringify(rules);
85 this.textContent = this.scopeCssText(cssText);
86 },
87
88 scopeCssText: function(cssText) {
89 return Polymer.Settings.useNativeShadow ?
90 cssText :
91 Polymer.StyleUtil.toCssText(cssText, function(rule) {
92 Polymer.StyleTransformer.rootRule(rule);
93 });
94 },
95
96 applyProperties: function(rules) {
97 var cssText = '';
98 Polymer.StyleUtil.forEachStyleRule(rules, function(rule) {
99 if (rule.cssText.match(CUSTOM_RULE)) {
100 // TODO(sorvell): use parser.stringify, it needs an option not to
101 // strip custom properties.
102 cssText += rule.selector + ' {\n' + rule.cssText + '\n}\n';
103 }
104 });
105 if (cssText) {
106 Polymer.StyleDefaults.applyCss(cssText);
107 }
108 }
109
110 });
111
112 var CUSTOM_RULE = /--[^;{'"]*\:/;
113
114 })();
115 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698