| 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..535e6dce9154ea2d271f2fd33b7d0cb2da88b864
|
| --- /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 {
|
| + @published String modelId;
|
| +
|
| + @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 routeAction(e, route) {
|
| + 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 ? '../' : '';
|
| +}
|
|
|