UNPKG

todomvc

Version:

> Helping you select an MV\* framework

48 lines (46 loc) 1.6 kB
<link rel="import" href="../bower_components/polymer/polymer.html"> <link rel="import" href="td-input.html"> <polymer-element name="td-item" extends="li" attributes="item editing" on-blur="{{commitAction}}"> <template> <link rel="stylesheet" href="td-item.css"> <div class="view {{ {completed: item.completed, editing: editing} | tokenList }}" hidden?="{{editing}}" on-dblclick="{{editAction}}"> <input type="checkbox" class="toggle" checked="{{item.completed}}" on-click="{{itemChangeAction}}"> <label>{{item.title}}</label> <button class="destroy" on-click="{{destroyAction}}"></button> </div> <input is="td-input" id="edit" class="edit" value="{{item.title}}" hidden?="{{!editing}}" on-td-input-commit="{{commitAction}}" on-td-input-cancel="{{cancelAction}}"> </template> <script> (function() { Polymer('td-item', { editing: false, editAction: function() { this.editing = true; // schedule focus for the end of microtask, when the input will be visible this.asyncMethod(function() { this.$.edit.focus(); }); }, commitAction: function() { if (this.editing) { this.editing = false; this.item.title = this.item.title.trim(); if (this.item.title === '') { this.destroyAction(); } this.fire('td-item-changed'); } }, cancelAction: function() { this.editing = false; }, itemChangeAction: function() { this.fire('td-item-changed'); }, destroyAction: function() { this.fire('td-destroy-item', this.item); } }); })(); </script> </polymer-element>