OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library router_options; | 5 library router_options; |
6 | 6 |
7 import 'dart:html'; | 7 import 'dart:html'; |
8 import 'package:polymer/polymer.dart'; | 8 import 'package:polymer/polymer.dart'; |
9 | 9 |
10 /** | 10 /** |
11 * Given a set of child links to this page, this will add the "selected" CSS | 11 * Given a set of child links to this page, this will add the "selected" CSS |
12 * class to the link that matches window.location.hash. | 12 * class to the link that matches window.location.hash. |
13 * | 13 * |
14 * For example, if the current window.location.hash is "#/completed" and we | 14 * For example, if the current window.location.hash is "#/completed" and we |
15 * have a tag like `<a href="#/completed">` it will get the class | 15 * have a tag like `<a href="#/completed">` it will get the class |
16 * `class="selected"`, and other links will have that CSS class removed. | 16 * `class="selected"`, and other links will have that CSS class removed. |
17 */ | 17 */ |
18 class RouterOptions extends CustomElement { | 18 class RouterOptions extends PolymerElement { |
19 | 19 |
20 var _sub; | 20 var _sub; |
21 | 21 |
22 void inserted() { | 22 void inserted() { |
23 super.inserted(); | 23 super.inserted(); |
24 | 24 |
25 var anchors = this.queryAll('a'); | 25 var anchors = this.queryAll('a'); |
26 | 26 |
27 _updateHash(records) { | 27 _updateHash(records) { |
28 var hash = window.location.hash; | 28 var hash = window.location.hash; |
29 if (hash == '') hash = '#/'; | 29 if (hash == '') hash = '#/'; |
30 for (var a in anchors) { | 30 for (var a in anchors) { |
31 if (a.hash == hash) { | 31 if (a.hash == hash) { |
32 a.classes.add('selected'); | 32 a.classes.add('selected'); |
33 } else { | 33 } else { |
34 a.classes.remove('selected'); | 34 a.classes.remove('selected'); |
35 } | 35 } |
36 } | 36 } |
37 } | 37 } |
38 | 38 |
39 _updateHash(null); | 39 _updateHash(null); |
40 _sub = windowLocation.changes.listen(_updateHash); | 40 _sub = windowLocation.changes.listen(_updateHash); |
41 } | 41 } |
42 | 42 |
43 void removed() { | 43 void removed() { |
44 _sub.cancel(); | 44 _sub.cancel(); |
45 super.removed(); | 45 super.removed(); |
46 } | 46 } |
47 } | 47 } |
OLD | NEW |