Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(592)

Side by Side Diff: samples/third_party/todomvc/web/lib-elements/polymer_selection.dart

Issue 182193002: [polymer] interop with polymer-element and polymer.js (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Polymer Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4 library todomvc.web.lib_elements.polymer_selection;
5
6 import 'dart:html';
7 import 'package:polymer/polymer.dart';
8
9 @CustomTag('polymer-selection')
10 class PolymerSelection extends PolymerElement {
11 @published bool multi = false;
12 @observable final selection = new ObservableList();
13
14 factory PolymerSelection() => new Element.tag('polymer-selection');
15 PolymerSelection.created() : super.created();
16
17 void ready() {
18 clear();
19 }
20
21 void clear() {
22 selection.clear();
23 }
24
25 getSelection() {
26 if (multi) return selection;
27 if (selection.isNotEmpty) return selection[0];
28 return null;
29 }
30
31 bool isSelected(item) => selection.contains(item);
32
33 void setItemSelected(item, bool isSelected) {
34 if (item != null) {
35 if (isSelected) {
36 selection.add(item);
37 } else {
38 selection.remove(item);
39 }
40 // TODO(sjmiles): consider replacing with summary
41 // notifications (asynchronous job)
42 asyncFire("polymer-select", detail:
43 new PolymerSelectEventDetail(isSelected, item));
44 }
45 }
46
47 select(item) {
48 if (multi) {
49 toggle(item);
50 } else if (getSelection() != item) {
51 setItemSelected(getSelection(), false);
52 setItemSelected(item, true);
53 }
54 }
55
56 toggle(item) {
57 setItemSelected(item, !isSelected(item));
58 }
59 }
60
61 class PolymerSelectEventDetail {
62 final bool isSelected;
63 final item;
64
65 PolymerSelectEventDetail(this.isSelected, this.item);
66 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698