OLD | NEW |
| (Empty) |
1 library todomvc.web.elements.td_todos; | |
2 | |
3 import 'dart:html'; | |
4 import 'package:polymer/polymer.dart'; | |
5 import 'td_input.dart'; | |
6 import 'td_model.dart'; | |
7 | |
8 @CustomTag('td-todos') | |
9 class TodoList extends PolymerElement { | |
10 @published String modelId; | |
11 | |
12 @observable TodoModel model; | |
13 @observable String activeRoute; | |
14 | |
15 factory TodoList() => new Element.tag('td-todos'); | |
16 TodoList.created() : super.created(); | |
17 | |
18 TodoInput get _newTodo => $['new-todo']; | |
19 | |
20 void modelIdChanged() { | |
21 model = document.querySelector('#$modelId'); | |
22 } | |
23 | |
24 void routeAction(e, route) { | |
25 if (model != null) model.filter = route; | |
26 | |
27 // TODO(jmesserly): polymer_expressions lacks boolean conversions. | |
28 activeRoute = (route != null && route != '') ? route : 'all'; | |
29 } | |
30 | |
31 void addTodoAction() { | |
32 model.newItem(_newTodo.value); | |
33 // when polyfilling Object.observe, make sure we update immediately | |
34 Observable.dirtyCheck(); | |
35 _newTodo.value = ''; | |
36 } | |
37 | |
38 void cancelAddTodoAction() { | |
39 _newTodo.value = ''; | |
40 } | |
41 | |
42 void itemChangedAction() { | |
43 if (model != null) model.itemsChanged(); | |
44 } | |
45 | |
46 void destroyItemAction(e, detail) { | |
47 model.destroyItem(detail); | |
48 } | |
49 | |
50 void toggleAllCompletedAction(e, detail, sender) { | |
51 model.setItemsCompleted(sender.checked); | |
52 } | |
53 | |
54 void clearCompletedAction() { | |
55 model.clearItems(); | |
56 } | |
57 | |
58 // TODO(jmesserly): workaround for HTML Imports not setting correct baseURI | |
59 String get baseUri => | |
60 declaration.element.ownerDocument == document ? '../' : ''; | |
61 } | |
OLD | NEW |