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

Side by Side Diff: third_party/polymer/components-chromium/core-iconset-svg/core-iconset-svg-extracted.js

Issue 592593002: Inline scripts were extracted from Polymer elements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: s/echo ""/echo/ Created 6 years, 2 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
3 Polymer('core-iconset-svg', {
4
5
6 /**
7 * The size of an individual icon. Note that icons must be square.
8 *
9 * @attribute iconSize
10 * @type number
11 * @default 24
12 */
13 iconSize: 24,
14 type: 'iconset',
15
16 created: function() {
17 this._icons = {};
18 },
19
20 ready: function() {
21 this.super();
22 this.updateIcons();
23 },
24
25 iconById: function(id) {
26 return this._icons[id] || (this._icons[id] = this.querySelector('#' + id ));
27 },
28
29 cloneIcon: function(id) {
30 var icon = this.iconById(id);
31 if (icon) {
32 var content = icon.cloneNode(true);
33 content.removeAttribute('id');
34 var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg' );
35 svg.setAttribute('viewBox', '0 0 ' + this.iconSize + ' ' +
36 this.iconSize);
37 // NOTE(dfreedm): work around https://crbug.com/370136
38 svg.style.pointerEvents = 'none';
39 svg.appendChild(content);
40 return svg;
41 }
42 },
43
44 get iconNames() {
45 if (!this._iconNames) {
46 this._iconNames = this.findIconNames();
47 }
48 return this._iconNames;
49 },
50
51 findIconNames: function() {
52 var icons = this.querySelectorAll('[id]').array();
53 if (icons.length) {
54 return icons.map(function(n){ return n.id });
55 }
56 },
57
58 /**
59 * Applies an icon to the given element. The svg icon is added to the
60 * element's shadowRoot if one exists or directly to itself.
61 *
62 * @method applyIcon
63 * @param {Element} element The element to which the icon is
64 * applied.
65 * @param {String|Number} icon The name the icon to apply.
66 * @return {Element} The icon element
67 */
68 applyIcon: function(element, icon) {
69 var root = element;
70 // remove old
71 var old = root.querySelector('svg');
72 if (old) {
73 old.remove();
74 }
75 // install new
76 var svg = this.cloneIcon(icon);
77 if (!svg) {
78 return;
79 }
80 svg.setAttribute('height', '100%');
81 svg.setAttribute('width', '100%');
82 svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');
83 svg.style.display = 'block';
84 root.insertBefore(svg, root.firstElementChild);
85 return svg;
86 },
87
88 /**
89 * Tell users of the iconset, that the set has loaded.
90 * This finds all elements matching the selector argument and calls
91 * the method argument on them.
92 * @method updateIcons
93 * @param selector {string} css selector to identify iconset users,
94 * defaults to '[icon]'
95 * @param method {string} method to call on found elements,
96 * defaults to 'updateIcon'
97 */
98 updateIcons: function(selector, method) {
99 selector = selector || '[icon]';
100 method = method || 'updateIcon';
101 var deep = window.ShadowDOMPolyfill ? '' : 'html /deep/ ';
102 var i$ = document.querySelectorAll(deep + selector);
103 for (var i=0, e; e=i$[i]; i++) {
104 if (e[method]) {
105 e[method].call(e);
106 }
107 }
108 }
109
110
111 });
112
113
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698