Skip to content

Commit 18d01a2

Browse files
committed
7ce2892 fix(DomRenderer): correctly handle namespaced attributes
1 parent 54f6c23 commit 18d01a2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+400
-121
lines changed

BUILD_INFO

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
Wed Feb 10 18:03:08 UTC 2016
2-
50548fb5655bca742d1056ea91217a3b8460db08
1+
Wed Feb 10 22:43:11 UTC 2016
2+
7ce28920ea9621f4e1e3c00aa3a471edbb43115e

bundles/angular2-all-testing.umd.dev.js

Lines changed: 28 additions & 9 deletions
Large diffs are not rendered by default.

bundles/angular2-all.umd.dev.js

Lines changed: 28 additions & 9 deletions
Large diffs are not rendered by default.

bundles/angular2-all.umd.js

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25245,6 +25245,12 @@ return /******/ (function(modules) { // webpackBootstrap
2524525245
else {
2524625246
if (parts[0] == ATTRIBUTE_PREFIX) {
2524725247
boundPropertyName = parts[1];
25248+
var nsSeparatorIdx = boundPropertyName.indexOf(':');
25249+
if (nsSeparatorIdx > -1) {
25250+
var ns = boundPropertyName.substring(0, nsSeparatorIdx);
25251+
var name_1 = boundPropertyName.substring(nsSeparatorIdx + 1);
25252+
boundPropertyName = html_tags_1.mergeNsAndName(ns, name_1);
25253+
}
2524825254
bindingType = template_ast_1.PropertyBindingType.Attribute;
2524925255
}
2525025256
else if (parts[0] == CLASS_PREFIX) {
@@ -25628,7 +25634,7 @@ return /******/ (function(modules) { // webpackBootstrap
2562825634
return false;
2562925635
};
2563025636
TreeBuilder.prototype._consumeAttr = function (attrName) {
25631-
var fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]);
25637+
var fullName = html_tags_1.mergeNsAndName(attrName.parts[0], attrName.parts[1]);
2563225638
var end = attrName.sourceSpan.end;
2563325639
var value = '';
2563425640
if (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_VALUE) {
@@ -25652,17 +25658,14 @@ return /******/ (function(modules) { // webpackBootstrap
2565225658
};
2565325659
return TreeBuilder;
2565425660
})();
25655-
function mergeNsAndName(prefix, localName) {
25656-
return lang_1.isPresent(prefix) ? "@" + prefix + ":" + localName : localName;
25657-
}
2565825661
function getElementFullName(prefix, localName, parentElement) {
2565925662
if (lang_1.isBlank(prefix)) {
2566025663
prefix = html_tags_1.getHtmlTagDefinition(localName).implicitNamespacePrefix;
2566125664
if (lang_1.isBlank(prefix) && lang_1.isPresent(parentElement)) {
2566225665
prefix = html_tags_1.getNsPrefix(parentElement.name);
2566325666
}
2566425667
}
25665-
return mergeNsAndName(prefix, localName);
25668+
return html_tags_1.mergeNsAndName(prefix, localName);
2566625669
}
2566725670

2566825671

@@ -26750,6 +26753,10 @@ return /******/ (function(modules) { // webpackBootstrap
2675026753
return splitNsName(elementName)[0];
2675126754
}
2675226755
exports.getNsPrefix = getNsPrefix;
26756+
function mergeNsAndName(prefix, localName) {
26757+
return lang_1.isPresent(prefix) ? "@" + prefix + ":" + localName : localName;
26758+
}
26759+
exports.mergeNsAndName = mergeNsAndName;
2675326760

2675426761

2675526762
/***/ },
@@ -28073,19 +28080,24 @@ return /******/ (function(modules) { // webpackBootstrap
2807328080
var attrNs;
2807428081
var nsAndName = splitNamespace(attributeName);
2807528082
if (lang_1.isPresent(nsAndName[0])) {
28076-
attributeName = nsAndName[0] + ':' + nsAndName[1];
28083+
attributeName = nsAndName[1];
2807728084
attrNs = NAMESPACE_URIS[nsAndName[0]];
2807828085
}
2807928086
if (lang_1.isPresent(attributeValue)) {
2808028087
if (lang_1.isPresent(attrNs)) {
2808128088
dom_adapter_1.DOM.setAttributeNS(renderElement, attrNs, attributeName, attributeValue);
2808228089
}
2808328090
else {
28084-
dom_adapter_1.DOM.setAttribute(renderElement, nsAndName[1], attributeValue);
28091+
dom_adapter_1.DOM.setAttribute(renderElement, attributeName, attributeValue);
2808528092
}
2808628093
}
2808728094
else {
28088-
dom_adapter_1.DOM.removeAttribute(renderElement, attributeName);
28095+
if (lang_1.isPresent(attrNs)) {
28096+
dom_adapter_1.DOM.removeAttributeNS(renderElement, attrNs, attributeName);
28097+
}
28098+
else {
28099+
dom_adapter_1.DOM.removeAttribute(renderElement, attributeName);
28100+
}
2808928101
}
2809028102
};
2809128103
DomRenderer.prototype.setBindingDebugInfo = function (renderElement, propertyName, propertyValue) {
@@ -28992,12 +29004,19 @@ return /******/ (function(modules) { // webpackBootstrap
2899229004
return res;
2899329005
};
2899429006
BrowserDomAdapter.prototype.hasAttribute = function (element, attribute) { return element.hasAttribute(attribute); };
29007+
BrowserDomAdapter.prototype.hasAttributeNS = function (element, ns, attribute) {
29008+
return element.hasAttributeNS(ns, attribute);
29009+
};
2899529010
BrowserDomAdapter.prototype.getAttribute = function (element, attribute) { return element.getAttribute(attribute); };
29011+
BrowserDomAdapter.prototype.getAttributeNS = function (element, ns, name) {
29012+
return element.getAttributeNS(ns, name);
29013+
};
2899629014
BrowserDomAdapter.prototype.setAttribute = function (element, name, value) { element.setAttribute(name, value); };
2899729015
BrowserDomAdapter.prototype.setAttributeNS = function (element, ns, name, value) {
2899829016
element.setAttributeNS(ns, name, value);
2899929017
};
2900029018
BrowserDomAdapter.prototype.removeAttribute = function (element, attribute) { element.removeAttribute(attribute); };
29019+
BrowserDomAdapter.prototype.removeAttributeNS = function (element, ns, name) { element.removeAttributeNS(ns, name); };
2900129020
BrowserDomAdapter.prototype.templateAwareRoot = function (el) { return this.isTemplateElement(el) ? this.content(el) : el; };
2900229021
BrowserDomAdapter.prototype.createHtmlDocument = function () {
2900329022
return document.implementation.createHTMLDocument('fakeTitle');

bundles/angular2-all.umd.min.js

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bundles/angular2.dev.js

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13912,17 +13912,21 @@ System.register("angular2/src/platform/dom/dom_renderer", ["angular2/src/core/di
1391213912
var attrNs;
1391313913
var nsAndName = splitNamespace(attributeName);
1391413914
if (lang_1.isPresent(nsAndName[0])) {
13915-
attributeName = nsAndName[0] + ':' + nsAndName[1];
13915+
attributeName = nsAndName[1];
1391613916
attrNs = NAMESPACE_URIS[nsAndName[0]];
1391713917
}
1391813918
if (lang_1.isPresent(attributeValue)) {
1391913919
if (lang_1.isPresent(attrNs)) {
1392013920
dom_adapter_1.DOM.setAttributeNS(renderElement, attrNs, attributeName, attributeValue);
1392113921
} else {
13922-
dom_adapter_1.DOM.setAttribute(renderElement, nsAndName[1], attributeValue);
13922+
dom_adapter_1.DOM.setAttribute(renderElement, attributeName, attributeValue);
1392313923
}
1392413924
} else {
13925-
dom_adapter_1.DOM.removeAttribute(renderElement, attributeName);
13925+
if (lang_1.isPresent(attrNs)) {
13926+
dom_adapter_1.DOM.removeAttributeNS(renderElement, attrNs, attributeName);
13927+
} else {
13928+
dom_adapter_1.DOM.removeAttribute(renderElement, attributeName);
13929+
}
1392613930
}
1392713931
};
1392813932
DomRenderer.prototype.setBindingDebugInfo = function(renderElement, propertyName, propertyValue) {
@@ -19862,6 +19866,10 @@ System.register("angular2/src/compiler/html_tags", ["angular2/src/facade/lang"],
1986219866
return splitNsName(elementName)[0];
1986319867
}
1986419868
exports.getNsPrefix = getNsPrefix;
19869+
function mergeNsAndName(prefix, localName) {
19870+
return lang_1.isPresent(prefix) ? "@" + prefix + ":" + localName : localName;
19871+
}
19872+
exports.mergeNsAndName = mergeNsAndName;
1986519873
global.define = __define;
1986619874
return module.exports;
1986719875
});
@@ -22899,7 +22907,7 @@ System.register("angular2/src/compiler/html_parser", ["angular2/src/facade/lang"
2289922907
return false;
2290022908
};
2290122909
TreeBuilder.prototype._consumeAttr = function(attrName) {
22902-
var fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]);
22910+
var fullName = html_tags_1.mergeNsAndName(attrName.parts[0], attrName.parts[1]);
2290322911
var end = attrName.sourceSpan.end;
2290422912
var value = '';
2290522913
if (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_VALUE) {
@@ -22922,17 +22930,14 @@ System.register("angular2/src/compiler/html_parser", ["angular2/src/facade/lang"
2292222930
};
2292322931
return TreeBuilder;
2292422932
})();
22925-
function mergeNsAndName(prefix, localName) {
22926-
return lang_1.isPresent(prefix) ? "@" + prefix + ":" + localName : localName;
22927-
}
2292822933
function getElementFullName(prefix, localName, parentElement) {
2292922934
if (lang_1.isBlank(prefix)) {
2293022935
prefix = html_tags_1.getHtmlTagDefinition(localName).implicitNamespacePrefix;
2293122936
if (lang_1.isBlank(prefix) && lang_1.isPresent(parentElement)) {
2293222937
prefix = html_tags_1.getNsPrefix(parentElement.name);
2293322938
}
2293422939
}
22935-
return mergeNsAndName(prefix, localName);
22940+
return html_tags_1.mergeNsAndName(prefix, localName);
2293622941
}
2293722942
global.define = __define;
2293822943
return module.exports;
@@ -23343,9 +23348,15 @@ System.register("angular2/src/platform/browser/browser_adapter", ["angular2/src/
2334323348
BrowserDomAdapter.prototype.hasAttribute = function(element, attribute) {
2334423349
return element.hasAttribute(attribute);
2334523350
};
23351+
BrowserDomAdapter.prototype.hasAttributeNS = function(element, ns, attribute) {
23352+
return element.hasAttributeNS(ns, attribute);
23353+
};
2334623354
BrowserDomAdapter.prototype.getAttribute = function(element, attribute) {
2334723355
return element.getAttribute(attribute);
2334823356
};
23357+
BrowserDomAdapter.prototype.getAttributeNS = function(element, ns, name) {
23358+
return element.getAttributeNS(ns, name);
23359+
};
2334923360
BrowserDomAdapter.prototype.setAttribute = function(element, name, value) {
2335023361
element.setAttribute(name, value);
2335123362
};
@@ -23355,6 +23366,9 @@ System.register("angular2/src/platform/browser/browser_adapter", ["angular2/src/
2335523366
BrowserDomAdapter.prototype.removeAttribute = function(element, attribute) {
2335623367
element.removeAttribute(attribute);
2335723368
};
23369+
BrowserDomAdapter.prototype.removeAttributeNS = function(element, ns, name) {
23370+
element.removeAttributeNS(ns, name);
23371+
};
2335823372
BrowserDomAdapter.prototype.templateAwareRoot = function(el) {
2335923373
return this.isTemplateElement(el) ? this.content(el) : el;
2336023374
};
@@ -23986,6 +24000,12 @@ System.register("angular2/src/compiler/template_parser", ["angular2/src/facade/c
2398624000
} else {
2398724001
if (parts[0] == ATTRIBUTE_PREFIX) {
2398824002
boundPropertyName = parts[1];
24003+
var nsSeparatorIdx = boundPropertyName.indexOf(':');
24004+
if (nsSeparatorIdx > -1) {
24005+
var ns = boundPropertyName.substring(0, nsSeparatorIdx);
24006+
var name_1 = boundPropertyName.substring(nsSeparatorIdx + 1);
24007+
boundPropertyName = html_tags_1.mergeNsAndName(ns, name_1);
24008+
}
2398924009
bindingType = template_ast_1.PropertyBindingType.Attribute;
2399024010
} else if (parts[0] == CLASS_PREFIX) {
2399124011
boundPropertyName = parts[1];

bundles/angular2.js

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13912,17 +13912,21 @@ System.register("angular2/src/platform/dom/dom_renderer", ["angular2/src/core/di
1391213912
var attrNs;
1391313913
var nsAndName = splitNamespace(attributeName);
1391413914
if (lang_1.isPresent(nsAndName[0])) {
13915-
attributeName = nsAndName[0] + ':' + nsAndName[1];
13915+
attributeName = nsAndName[1];
1391613916
attrNs = NAMESPACE_URIS[nsAndName[0]];
1391713917
}
1391813918
if (lang_1.isPresent(attributeValue)) {
1391913919
if (lang_1.isPresent(attrNs)) {
1392013920
dom_adapter_1.DOM.setAttributeNS(renderElement, attrNs, attributeName, attributeValue);
1392113921
} else {
13922-
dom_adapter_1.DOM.setAttribute(renderElement, nsAndName[1], attributeValue);
13922+
dom_adapter_1.DOM.setAttribute(renderElement, attributeName, attributeValue);
1392313923
}
1392413924
} else {
13925-
dom_adapter_1.DOM.removeAttribute(renderElement, attributeName);
13925+
if (lang_1.isPresent(attrNs)) {
13926+
dom_adapter_1.DOM.removeAttributeNS(renderElement, attrNs, attributeName);
13927+
} else {
13928+
dom_adapter_1.DOM.removeAttribute(renderElement, attributeName);
13929+
}
1392613930
}
1392713931
};
1392813932
DomRenderer.prototype.setBindingDebugInfo = function(renderElement, propertyName, propertyValue) {
@@ -19862,6 +19866,10 @@ System.register("angular2/src/compiler/html_tags", ["angular2/src/facade/lang"],
1986219866
return splitNsName(elementName)[0];
1986319867
}
1986419868
exports.getNsPrefix = getNsPrefix;
19869+
function mergeNsAndName(prefix, localName) {
19870+
return lang_1.isPresent(prefix) ? "@" + prefix + ":" + localName : localName;
19871+
}
19872+
exports.mergeNsAndName = mergeNsAndName;
1986519873
global.define = __define;
1986619874
return module.exports;
1986719875
});
@@ -22899,7 +22907,7 @@ System.register("angular2/src/compiler/html_parser", ["angular2/src/facade/lang"
2289922907
return false;
2290022908
};
2290122909
TreeBuilder.prototype._consumeAttr = function(attrName) {
22902-
var fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]);
22910+
var fullName = html_tags_1.mergeNsAndName(attrName.parts[0], attrName.parts[1]);
2290322911
var end = attrName.sourceSpan.end;
2290422912
var value = '';
2290522913
if (this.peek.type === html_lexer_1.HtmlTokenType.ATTR_VALUE) {
@@ -22922,17 +22930,14 @@ System.register("angular2/src/compiler/html_parser", ["angular2/src/facade/lang"
2292222930
};
2292322931
return TreeBuilder;
2292422932
})();
22925-
function mergeNsAndName(prefix, localName) {
22926-
return lang_1.isPresent(prefix) ? "@" + prefix + ":" + localName : localName;
22927-
}
2292822933
function getElementFullName(prefix, localName, parentElement) {
2292922934
if (lang_1.isBlank(prefix)) {
2293022935
prefix = html_tags_1.getHtmlTagDefinition(localName).implicitNamespacePrefix;
2293122936
if (lang_1.isBlank(prefix) && lang_1.isPresent(parentElement)) {
2293222937
prefix = html_tags_1.getNsPrefix(parentElement.name);
2293322938
}
2293422939
}
22935-
return mergeNsAndName(prefix, localName);
22940+
return html_tags_1.mergeNsAndName(prefix, localName);
2293622941
}
2293722942
global.define = __define;
2293822943
return module.exports;
@@ -23343,9 +23348,15 @@ System.register("angular2/src/platform/browser/browser_adapter", ["angular2/src/
2334323348
BrowserDomAdapter.prototype.hasAttribute = function(element, attribute) {
2334423349
return element.hasAttribute(attribute);
2334523350
};
23351+
BrowserDomAdapter.prototype.hasAttributeNS = function(element, ns, attribute) {
23352+
return element.hasAttributeNS(ns, attribute);
23353+
};
2334623354
BrowserDomAdapter.prototype.getAttribute = function(element, attribute) {
2334723355
return element.getAttribute(attribute);
2334823356
};
23357+
BrowserDomAdapter.prototype.getAttributeNS = function(element, ns, name) {
23358+
return element.getAttributeNS(ns, name);
23359+
};
2334923360
BrowserDomAdapter.prototype.setAttribute = function(element, name, value) {
2335023361
element.setAttribute(name, value);
2335123362
};
@@ -23355,6 +23366,9 @@ System.register("angular2/src/platform/browser/browser_adapter", ["angular2/src/
2335523366
BrowserDomAdapter.prototype.removeAttribute = function(element, attribute) {
2335623367
element.removeAttribute(attribute);
2335723368
};
23369+
BrowserDomAdapter.prototype.removeAttributeNS = function(element, ns, name) {
23370+
element.removeAttributeNS(ns, name);
23371+
};
2335823372
BrowserDomAdapter.prototype.templateAwareRoot = function(el) {
2335923373
return this.isTemplateElement(el) ? this.content(el) : el;
2336023374
};
@@ -23986,6 +24000,12 @@ System.register("angular2/src/compiler/template_parser", ["angular2/src/facade/c
2398624000
} else {
2398724001
if (parts[0] == ATTRIBUTE_PREFIX) {
2398824002
boundPropertyName = parts[1];
24003+
var nsSeparatorIdx = boundPropertyName.indexOf(':');
24004+
if (nsSeparatorIdx > -1) {
24005+
var ns = boundPropertyName.substring(0, nsSeparatorIdx);
24006+
var name_1 = boundPropertyName.substring(nsSeparatorIdx + 1);
24007+
boundPropertyName = html_tags_1.mergeNsAndName(ns, name_1);
24008+
}
2398924009
bindingType = template_ast_1.PropertyBindingType.Attribute;
2399024010
} else if (parts[0] == CLASS_PREFIX) {
2399124011
boundPropertyName = parts[1];

bundles/angular2.min.js

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)