createText(parentElement, value, debugInfo) { var node = DOM.createTextNode(value); if (isPresent(parentElement)) { DOM.appendChild(parentElement, node); } return node; }
createTemplateAnchor(parentElement, debugInfo) { var comment = DOM.createComment(TEMPLATE_COMMENT_TEXT); if (isPresent(parentElement)) { DOM.appendChild(parentElement, comment); } return comment; }
setElementStyle(renderElement, styleName, styleValue) { if (isPresent(styleValue)) { DOM.setStyle(renderElement, styleName, stringify(styleValue)); } else { DOM.removeStyle(renderElement, styleName); } }
setElementClass(renderElement, className, isAdd) { if (isAdd) { DOM.addClass(renderElement, className); } else { DOM.removeClass(renderElement, className); } }
this.raf(function (timestamp) { dom_adapter_1.DOM.on(div, 'transitionend', function (event) { var elapsed = math_1.Math.round(event.elapsedTime * 1000); _this.elapsedTimeIncludesDelay = elapsed == 2; dom_adapter_1.DOM.remove(div); }); dom_adapter_1.DOM.setStyle(div, 'width', '2px'); }, 2);
selectRootElement(selector) { var el = DOM.querySelector(this._rootRenderer.document, selector); if (isBlank(el)) { throw new BaseException(`The selector "${selector}" did not match any elements`); } DOM.clearNodes(el); return el; }
this.raf((timestamp) => { DOM.on(div, 'transitionend', (event) => { var elapsed = Math.round(event.elapsedTime * 1000); this.elapsedTimeIncludesDelay = elapsed == 2; DOM.remove(div); }); DOM.setStyle(div, 'width', '2px'); }, 2);
MdToolbar.prototype.updateToolbarHeight = function () { this._toolbarHeight = dom_adapter_1.DOM.getProperty(this.el.nativeElement, 'offsetHeight'); if (this._content) { var margin = (-this._toolbarHeight * this.mdShrinkSpeed) + 'px'; dom_adapter_1.DOM.setStyle(this._content, "margin-top", margin); dom_adapter_1.DOM.setStyle(this._content, "margin-bottom", margin); this.onContentScroll(); } };
util_1.rAF(function () { var hasWhiteFrame = dom_adapter_1.DOM.hasClass(_this.el.nativeElement, 'md-whiteframe-z1'); if (hasWhiteFrame && !_this._currentY) { dom_adapter_1.DOM.removeClass(_this.el.nativeElement, 'md-whiteframe-z1'); } else if (!hasWhiteFrame && _this._currentY) { dom_adapter_1.DOM.addClass(_this.el.nativeElement, 'md-whiteframe-z1'); } });
/** * Performs animations if necessary * @param node */ animateNodeEnter(node) { if (DOM.isElementNode(node) && DOM.hasClass(node, 'ng-animate')) { DOM.addClass(node, 'ng-enter'); this._rootRenderer.animate.css() .addAnimationClass('ng-enter-active') .start(node) .onComplete(() => { DOM.removeClass(node, 'ng-enter'); }); } }
DomElementSchemaRegistry.prototype._getProtoElement = function (tagName) { var element = this._protoElements.get(tagName); if (lang_1.isBlank(element)) { var nsAndName = html_tags_1.splitNsName(tagName); element = lang_1.isPresent(nsAndName[0]) ? dom_adapter_1.DOM.createElementNS(NAMESPACE_URIS[nsAndName[0]], nsAndName[1]) : dom_adapter_1.DOM.createElement(nsAndName[1]); this._protoElements.set(tagName, element); } return element; };
_getProtoElement(tagName) { var element = this._protoElements.get(tagName); if (isBlank(element)) { var nsAndName = splitNsName(tagName); element = isPresent(nsAndName[0]) ? DOM.createElementNS(NAMESPACE_URIS[nsAndName[0]], nsAndName[1]) : DOM.createElement(nsAndName[1]); this._protoElements.set(tagName, element); } return element; }
setBindingDebugInfo(renderElement, propertyName, propertyValue) { var dashCasedPropertyName = camelCaseToDashCase(propertyName); if (DOM.isCommentNode(renderElement)) { var existingBindings = RegExpWrapper.firstMatch(TEMPLATE_BINDINGS_EXP, StringWrapper.replaceAll(DOM.getText(renderElement), /\n/g, '')); var parsedBindings = Json.parse(existingBindings[1]); parsedBindings[dashCasedPropertyName] = propertyValue; DOM.setText(renderElement, StringWrapper.replace(TEMPLATE_COMMENT_TEXT, '{}', Json.stringify(parsedBindings))); } else { this.setElementAttribute(renderElement, propertyName, propertyValue); } }
MdToolbar.prototype.ngAfterContentInit = function () { this.disableScrollShrink(); if (!this.mdScrollShrink) { return; } this._content = dom_adapter_1.DOM.querySelector(dom_adapter_1.DOM.parentElement(this.el.nativeElement), 'md-content'); if (!this._content) { return; } this._cancelScrollShrink = dom_adapter_1.DOM.onAndCancel(this._content, 'scroll', this._debouncedContentScroll); dom_adapter_1.DOM.setAttribute(this._content, 'scroll-shrink', 'true'); util_1.rAF(this.updateToolbarHeight.bind(this)); };
createElement(parent, name, debugInfo) { var nsAndName = splitNamespace(name); var el = isPresent(nsAndName[0]) ? DOM.createElementNS(NAMESPACE_URIS[nsAndName[0]], nsAndName[1]) : DOM.createElement(nsAndName[1]); if (isPresent(this._contentAttr)) { DOM.setAttribute(el, this._contentAttr, ''); } if (isPresent(parent)) { DOM.appendChild(parent, el); } return el; }
/** * Determines if `event.elapsedTime` includes transition delay in the current browser. At this * time, Chrome and Opera seem to be the only browsers that include this. */ doesElapsedTimeIncludesDelay() { var div = DOM.createElement('div'); DOM.setAttribute(div, 'style', `position: absolute; top: -9999px; left: -9999px; width: 1px; height: 1px; transition: all 1ms linear 1ms;`); // Firefox requires that we wait for 2 frames for some reason this.raf((timestamp) => { DOM.on(div, 'transitionend', (event) => { var elapsed = Math.round(event.elapsedTime * 1000); this.elapsedTimeIncludesDelay = elapsed == 2; DOM.remove(div); }); DOM.setStyle(div, 'width', '2px'); }, 2); }
selectRootElement(selectorOrNode, debugInfo) { var el; if (isString(selectorOrNode)) { el = DOM.querySelector(this._rootRenderer.document, selectorOrNode); if (isBlank(el)) { throw new BaseException(`The selector "${selectorOrNode}" did not match any elements`); } } else { el = selectorOrNode; } DOM.clearNodes(el); return el; }
BrowserDetails.prototype.doesElapsedTimeIncludesDelay = function () { var _this = this; var div = dom_adapter_1.DOM.createElement('div'); dom_adapter_1.DOM.setAttribute(div, 'style', "position: absolute; top: -9999px; left: -9999px; width: 1px;\n height: 1px; transition: all 1ms linear 1ms;"); // Firefox requires that we wait for 2 frames for some reason this.raf(function (timestamp) { dom_adapter_1.DOM.on(div, 'transitionend', function (event) { var elapsed = math_1.Math.round(event.elapsedTime * 1000); _this.elapsedTimeIncludesDelay = elapsed == 2; dom_adapter_1.DOM.remove(div); }); dom_adapter_1.DOM.setStyle(div, 'width', '2px'); }, 2); };
return (event) => { var allowDefaultBehavior = eventHandler(event); if (allowDefaultBehavior === false) { // TODO(tbosch): move preventDefault into event plugins... DOM.preventDefault(event); } };
findTestabilityInTree(registry, elem, findInAncestors) { if (elem == null) { return null; } var t = registry.getTestability(elem); if (isPresent(t)) { return t; } else if (!findInAncestors) { return null; } if (DOM.isShadowRoot(elem)) { return this.findTestabilityInTree(registry, DOM.getHost(elem), true); } return this.findTestabilityInTree(registry, DOM.parentElement(elem), true); }
detachView(viewRootNodes) { for (var i = 0; i < viewRootNodes.length; i++) { var node = viewRootNodes[i]; DOM.remove(node); this.animateNodeLeave(node); } }
function moveNodesAfterSibling(sibling, nodes) { var parent = DOM.parentElement(sibling); if (nodes.length > 0 && isPresent(parent)) { var nextSibling = DOM.nextSibling(sibling); if (isPresent(nextSibling)) { for (var i = 0; i < nodes.length; i++) { DOM.insertBefore(nextSibling, nodes[i]); } } else { for (var i = 0; i < nodes.length; i++) { DOM.appendChild(parent, nodes[i]); } } } }
function appDoc() { try { return DOM.defaultDoc(); } catch (e) { return null; } }
constructor(ua) { if (isPresent(ua)) { this._ua = ua; } else { this._ua = isPresent(DOM) ? DOM.getUserAgent() : ''; } }
createViewRoot(hostElement) { var nodesParent; if (this.componentProto.encapsulation === ViewEncapsulation.Native) { nodesParent = DOM.createShadowRoot(hostElement); this._rootRenderer.sharedStylesHost.addHost(nodesParent); for (var i = 0; i < this._styles.length; i++) { DOM.appendChild(nodesParent, DOM.createStyleElement(this._styles[i])); } } else { if (isPresent(this._hostAttr)) { DOM.setAttribute(hostElement, this._hostAttr, ''); } nodesParent = hostElement; } return nodesParent; }
return function (actual, className) { return { pass: dom_adapter_1.DOM.hasClass(actual, className) == !isNot, get message() { return "Expected " + actual.outerHTML + " " + (isNot ? 'not ' : '') + "to contain the CSS class \"" + className + "\""; } }; };
return function (actual, className) { return { pass: DOM.hasClass(actual, className) == !isNot, get message() { return `Expected ${actual.outerHTML} ${isNot ? 'not ' : ''}to contain the CSS class "${className}"`; } }; };
setElementAttribute(renderElement, attributeName, attributeValue) { var attrNs; var nsAndName = splitNamespace(attributeName); if (isPresent(nsAndName[0])) { attributeName = nsAndName[0] + ':' + nsAndName[1]; attrNs = NAMESPACE_URIS[nsAndName[0]]; } if (isPresent(attributeValue)) { if (isPresent(attrNs)) { DOM.setAttributeNS(renderElement, attrNs, attributeName, attributeValue); } else { DOM.setAttribute(renderElement, nsAndName[1], attributeValue); } } else { DOM.removeAttribute(renderElement, attributeName); } }
hasProperty(tagName, propName) { if (tagName.indexOf('-') !== -1) { // can't tell now as we don't know which properties a custom element will get // once it is instantiated return true; } else { var elm = this._getProtoElement(tagName); return DOM.hasProperty(elm, propName); } }
DomElementSchemaRegistry.prototype.hasProperty = function (tagName, propName) { if (tagName.indexOf('-') !== -1) { // can't tell now as we don't know which properties a custom element will get // once it is instantiated return true; } else { var elm = this._getProtoElement(tagName); return dom_adapter_1.DOM.hasProperty(elm, propName); } };