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

Unified Diff: third_party/polymer/v1_0/components-chromium/iron-iconset-svg/iron-iconset-svg-extracted.js

Issue 2413613002: Roll Polymer element iron-iconset-svg, 1.0.9 -> 1.0.11 to pick up: (Closed)
Patch Set: fix Created 4 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 side-by-side diff with in-line comments
Download patch
Index: third_party/polymer/v1_0/components-chromium/iron-iconset-svg/iron-iconset-svg-extracted.js
diff --git a/third_party/polymer/v1_0/components-chromium/iron-iconset-svg/iron-iconset-svg-extracted.js b/third_party/polymer/v1_0/components-chromium/iron-iconset-svg/iron-iconset-svg-extracted.js
index f1e7cb92cd0937e23f79f6b74b0f4137e6c766c3..5dc18de590dcd7aaf58b15e0fc8995dc96dbf24f 100644
--- a/third_party/polymer/v1_0/components-chromium/iron-iconset-svg/iron-iconset-svg-extracted.js
+++ b/third_party/polymer/v1_0/components-chromium/iron-iconset-svg/iron-iconset-svg-extracted.js
@@ -52,8 +52,25 @@
size: {
type: Number,
value: 24
+ },
+
+ /**
+ * Set to true to enable mirroring of icons where specified when they are
+ * stamped. Icons that should be mirrored should be decorated with a
+ * `mirror-in-rtl` attribute.
+ */
+ rtlMirroring: {
+ type: Boolean,
+ value: false
+ }
+ },
+
+ _targetIsRTL: function(target) {
+ if (target && target.nodeType !== Node.ELEMENT_NODE) {
+ target = target.host;
}
+ return target && window.getComputedStyle(target)['direction'] === 'rtl';
},
attached: function() {
@@ -89,7 +106,8 @@
// Remove old svg element
this.removeIcon(element);
// install new svg element
- var svg = this._cloneIcon(iconName);
+ var svg = this._cloneIcon(iconName,
+ this.rtlMirroring && this._targetIsRTL(element));
if (svg) {
var pde = Polymer.dom(element);
pde.insertBefore(svg, pde.childNodes[0]);
@@ -106,6 +124,7 @@
*/
removeIcon: function(element) {
// Remove old svg element
+ element = element.root || element;
if (element._svgIcon) {
Polymer.dom(element).removeChild(element._svgIcon);
element._svgIcon = null;
@@ -148,28 +167,35 @@
* @return {Element} Returns an installable clone of the SVG element
* matching `id`.
*/
- _cloneIcon: function(id) {
+ _cloneIcon: function(id, mirrorAllowed) {
// create the icon map on-demand, since the iconset itself has no discrete
// signal to know when it's children are fully parsed
this._icons = this._icons || this._createIconMap();
- return this._prepareSvgClone(this._icons[id], this.size);
+ return this._prepareSvgClone(this._icons[id], this.size, mirrorAllowed);
},
/**
* @param {Element} sourceSvg
* @param {number} size
+ * @param {Boolean} mirrorAllowed
* @return {Element}
*/
- _prepareSvgClone: function(sourceSvg, size) {
+ _prepareSvgClone: function(sourceSvg, size, mirrorAllowed) {
if (sourceSvg) {
var content = sourceSvg.cloneNode(true),
svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'),
- viewBox = content.getAttribute('viewBox') || '0 0 ' + size + ' ' + size;
+ viewBox = content.getAttribute('viewBox') || '0 0 ' + size + ' ' + size,
+ cssText = 'pointer-events: none; display: block; width: 100%; height: 100%;';
+
+ if (mirrorAllowed && content.hasAttribute('mirror-in-rtl')) {
+ cssText += '-webkit-transform:scale(-1,1);transform:scale(-1,1);';
+ }
+
svg.setAttribute('viewBox', viewBox);
svg.setAttribute('preserveAspectRatio', 'xMidYMid meet');
// TODO(dfreedm): `pointer-events: none` works around https://crbug.com/370136
// TODO(sjmiles): inline style may not be ideal, but avoids requiring a shadow-root
- svg.style.cssText = 'pointer-events: none; display: block; width: 100%; height: 100%;';
+ svg.style.cssText = cssText;
svg.appendChild(content).removeAttribute('id');
return svg;
}

Powered by Google App Engine
This is Rietveld 408576698