Chromium Code Reviews| Index: samples/third_party/todomvc/web/elements/td_todos.dart |
| diff --git a/samples/third_party/todomvc/web/elements/td_todos.dart b/samples/third_party/todomvc/web/elements/td_todos.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..099ccde8e5c630786852c6308b4b12cca36cfaec |
| --- /dev/null |
| +++ b/samples/third_party/todomvc/web/elements/td_todos.dart |
| @@ -0,0 +1,60 @@ |
| +library todomvc.web.elements.td_todos; |
| + |
| +import 'dart:html'; |
| +import 'package:polymer/polymer.dart'; |
| +import 'td_input.dart'; |
| +import 'td_model.dart'; |
| + |
| +@CustomTag('td-todos') |
| +class TodoList extends PolymerElement { |
| + @observable String modelId; |
|
Siggi Cherem (dart-lang)
2013/11/07 02:12:47
@published?
|
| + @observable String route; |
| + @observable TodoModel model; |
| + @observable String activeRoute; |
| + |
| + factory TodoList() => new Element.tag('td-todos'); |
| + TodoList.created() : super.created(); |
| + |
| + TodoInput get _newTodo => $['new-todo']; |
| + |
| + void modelIdChanged() { |
| + model = document.querySelector('#$modelId'); |
| + } |
| + |
| + void routeChanged() { |
| + if (model != null) model.filter = route; |
| + |
| + // TODO(jmesserly): polymer_expressions lacks boolean conversions. |
| + activeRoute = (route != null && route != '') ? route : 'all'; |
| + } |
| + |
| + void addTodoAction() { |
| + model.newItem(_newTodo.value); |
| + // when polyfilling Object.observe, make sure we update immediately |
| + Observable.dirtyCheck(); |
| + _newTodo.value = ''; |
| + } |
| + |
| + void cancelAddTodoAction() { |
| + _newTodo.value = ''; |
| + } |
| + |
| + void itemChangedAction() { |
| + if (model != null) model.itemsChanged(); |
| + } |
| + |
| + void destroyItemAction(e, detail) { |
| + model.destroyItem(detail); |
| + } |
| + |
| + void toggleAllCompletedAction(e, detail, sender) { |
| + model.setItemsCompleted(sender.checked); |
| + } |
| + |
| + void clearCompletedAction() { |
| + model.clearItems(); |
| + } |
| + |
| + // TODO(jmesserly): workaround for HTML Imports not setting correct baseURI |
| + String get baseUri => declaration.ownerDocument == document ? '../' : ''; |
| +} |