Skip to content

Commit 5d502d4

Browse files
author
Tim Blasi
committed
feat(dart/transform): Implement Html5LibDomAdapter methods.
Adding support for some additional `DomAdapter` methods necessary to run `Complier` in the Dart transformer.
1 parent 1676e31 commit 5d502d4

File tree

2 files changed

+33
-51
lines changed

2 files changed

+33
-51
lines changed

modules/angular2/src/dom/browser_adapter.dart

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ class BrowserDomAdapter extends GenericBrowserDomAdapter {
2828

2929
query(String selector) => document.querySelector(selector);
3030

31-
Element querySelector(el, String selector) =>
32-
el.querySelector(selector);
31+
Element querySelector(el, String selector) => el.querySelector(selector);
3332

3433
ElementList querySelectorAll(el, String selector) =>
3534
el.querySelectorAll(selector);
@@ -44,8 +43,7 @@ class BrowserDomAdapter extends GenericBrowserDomAdapter {
4443
}
4544
MouseEvent createMouseEvent(String eventType) =>
4645
new MouseEvent(eventType, canBubble: true);
47-
createEvent(eventType) =>
48-
new Event(eventType, canBubble: true);
46+
createEvent(eventType) => new Event(eventType, canBubble: true);
4947
String getInnerHTML(Element el) => el.innerHtml;
5048
String getOuterHTML(Element el) => el.outerHtml;
5149
void setInnerHTML(Element el, String value) {
@@ -134,19 +132,19 @@ class BrowserDomAdapter extends GenericBrowserDomAdapter {
134132
element.classes.add(classname);
135133
}
136134
void removeClass(Element element, String classname) {
137-
element.classes.remove(classname);
135+
element.classes.remove(classname);
138136
}
139137
bool hasClass(Element element, String classname) =>
140138
element.classes.contains(classname);
141139

142140
setStyle(Element element, String stylename, String stylevalue) {
143-
element.style.setProperty(stylename, stylevalue);
141+
element.style.setProperty(stylename, stylevalue);
144142
}
145143
removeStyle(Element element, String stylename) {
146-
element.style.removeProperty(stylename);
144+
element.style.removeProperty(stylename);
147145
}
148146
getStyle(Element element, String stylename) {
149-
return element.style.getPropertyValue(stylename);
147+
return element.style.getPropertyValue(stylename);
150148
}
151149

152150
String tagName(Element element) => element.tagName;
@@ -163,13 +161,12 @@ class BrowserDomAdapter extends GenericBrowserDomAdapter {
163161
}
164162

165163
void removeAttribute(Element element, String name) {
166-
//there is no removeAttribute method as of now in Dart:
167-
//https://code.google.com/p/dart/issues/detail?id=19934
168-
element.attributes.remove(name);
164+
//there is no removeAttribute method as of now in Dart:
165+
//https://code.google.com/p/dart/issues/detail?id=19934
166+
element.attributes.remove(name);
169167
}
170168

171-
Node templateAwareRoot(Element el) =>
172-
el is TemplateElement ? el.content : el;
169+
Node templateAwareRoot(Element el) => el is TemplateElement ? el.content : el;
173170

174171
HtmlDocument createHtmlDocument() =>
175172
document.implementation.createHtmlDocument('fakeTitle');
@@ -181,13 +178,10 @@ class BrowserDomAdapter extends GenericBrowserDomAdapter {
181178
}
182179
bool elementMatches(n, String selector) =>
183180
n is Element && n.matches(selector);
184-
bool isTemplateElement(Element el) =>
185-
el is TemplateElement;
186-
bool isTextNode(Node node) =>
187-
node.nodeType == Node.TEXT_NODE;
181+
bool isTemplateElement(Element el) => el is TemplateElement;
182+
bool isTextNode(Node node) => node.nodeType == Node.TEXT_NODE;
188183
bool isCommentNode(Node node) => node.nodeType == Node.COMMENT_NODE;
189-
bool isElementNode(Node node) =>
190-
node.nodeType == Node.ELEMENT_NODE;
184+
bool isElementNode(Node node) => node.nodeType == Node.ELEMENT_NODE;
191185
bool hasShadowRoot(Node node) {
192186
return node is Element && node.shadowRoot != null;
193187
}

modules/angular2/src/dom/html5lib_adapter.dart

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,15 @@ class Html5LibDomAdapter implements DomAdapter {
4040
String nodeName(node) {
4141
throw 'not implemented';
4242
}
43-
String nodeValue(node) {
44-
throw 'not implemented';
45-
}
43+
String nodeValue(node) => node.data;
4644
String type(node) {
4745
throw 'not implemented';
4846
}
4947
content(TemplateElement node) {
5048
throw 'not implemented';
5149
}
5250

53-
firstChild(el) => el is NodeList
54-
? el.first
55-
: el.firstChild;
51+
firstChild(el) => el is NodeList ? el.first : el.firstChild;
5652

5753
nextSibling(el) {
5854
final parentNode = el.parentNode;
@@ -68,12 +64,8 @@ class Html5LibDomAdapter implements DomAdapter {
6864
parentElement(el) {
6965
throw 'not implemented';
7066
}
71-
List childNodes(el) {
72-
throw 'not implemented';
73-
}
74-
List childNodesAsList(el) {
75-
throw 'not implemented';
76-
}
67+
List childNodes(el) => el.nodes;
68+
List childNodesAsList(el) => el.nodes;
7769
clearNodes(el) {
7870
throw 'not implemented';
7971
}
@@ -101,9 +93,8 @@ class Html5LibDomAdapter implements DomAdapter {
10193
getText(el) {
10294
throw 'not implemented';
10395
}
104-
setText(el, String value) {
105-
throw 'not implemented';
106-
}
96+
setText(el, String value) => el.text = value;
97+
10798
getValue(el) {
10899
throw 'not implemented';
109100
}
@@ -116,10 +107,7 @@ class Html5LibDomAdapter implements DomAdapter {
116107
setChecked(el, bool value) {
117108
throw 'not implemented';
118109
}
119-
createTemplate(html) {
120-
return createElement('template')
121-
..innerHtml = html;
122-
}
110+
createTemplate(html) => createElement('template')..innerHtml = html;
123111
createElement(tagName, [doc]) {
124112
return new Element.tag(tagName);
125113
}
@@ -154,8 +142,7 @@ class Html5LibDomAdapter implements DomAdapter {
154142
throw 'not implemented';
155143
}
156144

157-
hasClass(element, String classname) =>
158-
element.classes.contains(classname);
145+
hasClass(element, String classname) => element.classes.contains(classname);
159146

160147
setStyle(element, String stylename, String stylevalue) {
161148
throw 'not implemented';
@@ -169,7 +156,14 @@ class Html5LibDomAdapter implements DomAdapter {
169156

170157
String tagName(element) => element.localName;
171158

172-
attributeMap(element) => element.attributes;
159+
attributeMap(element) {
160+
// `attributes` keys can be [AttributeName]s.
161+
var map = <String, String>{};
162+
element.attributes.forEach((key, value) {
163+
map['$key'] = value;
164+
});
165+
return map;
166+
}
173167
getAttribute(element, String attribute) {
174168
throw 'not implemented';
175169
}
@@ -180,9 +174,7 @@ class Html5LibDomAdapter implements DomAdapter {
180174
throw 'not implemented';
181175
}
182176

183-
templateAwareRoot(el) => isTemplateElement(el)
184-
? el.nodes
185-
: el;
177+
templateAwareRoot(el) => el;
186178

187179
createHtmlDocument() {
188180
throw 'not implemented';
@@ -199,14 +191,10 @@ class Html5LibDomAdapter implements DomAdapter {
199191
bool isTemplateElement(Element el) {
200192
return el != null && el.localName.toLowerCase() == 'template';
201193
}
202-
bool isTextNode(node) {
203-
throw 'not implemented';
204-
}
205-
bool isCommentNode(node) {
206-
throw 'not implemented';
207-
}
194+
bool isTextNode(node) => node.nodeType == Node.TEXT_NODE;
195+
bool isCommentNode(node) => node.nodeType == Node.COMMENT_NODE;
208196

209-
bool isElementNode(node) => node is Element;
197+
bool isElementNode(node) => node.nodeType == Node.ELEMENT_NODE;
210198

211199
bool hasShadowRoot(node) {
212200
throw 'not implemented';

0 commit comments

Comments
 (0)