| OLD | NEW |
| (Empty) | |
| 1 library todomvc.web.elements.td_item; |
| 2 |
| 3 import 'dart:html'; |
| 4 import 'package:polymer/polymer.dart'; |
| 5 import 'td_model.dart'; |
| 6 |
| 7 @CustomTag('td-item') |
| 8 class TodoItem extends LIElement with Polymer, Observable { |
| 9 @observable bool editing = false; |
| 10 @observable Todo item; |
| 11 |
| 12 factory TodoItem() => new Element.tag('li', 'td-item'); |
| 13 TodoItem.created() : super.created() { polymerCreated(); } |
| 14 |
| 15 editAction() { |
| 16 editing = true; |
| 17 // schedule focus for the end of microtask, when the input will be visible |
| 18 async((_) => $['edit'].focus()); |
| 19 } |
| 20 |
| 21 commitAction() { |
| 22 if (editing) { |
| 23 editing = false; |
| 24 item.title = item.title.trim(); |
| 25 if (item.title == '') { |
| 26 destroyAction(); |
| 27 } |
| 28 fire('td-item-changed'); |
| 29 } |
| 30 } |
| 31 |
| 32 cancelAction() { |
| 33 editing = false; |
| 34 } |
| 35 |
| 36 itemChangeAction() { |
| 37 // TODO(jmesserly): asyncFire is needed because "click" fires before |
| 38 // "item.checked" is updated on Firefox. Need to check Polymer.js. |
| 39 asyncFire('td-item-changed'); |
| 40 } |
| 41 |
| 42 destroyAction() { |
| 43 fire('td-destroy-item', detail: item); |
| 44 } |
| 45 } |
| OLD | NEW |