OLD | NEW |
1 import 'dart:html'; | 1 import 'dart:html'; |
2 import 'package:web_ui/web_ui.dart'; | 2 import 'package:web_ui/web_ui.dart'; |
3 import 'package:widget/effects.dart'; | 3 import 'package:widget/effects.dart'; |
4 import 'package:widget/widget.dart'; | 4 import 'package:widget/widget.dart'; |
5 import 'package:bot/bot.dart'; | 5 import 'package:bot/bot.dart'; |
6 | 6 |
7 /** | 7 /** |
8 * [Accordion] wraps a set of [Collapse] elements and ensures only one is visibl
e | 8 * [Accordion] wraps a set of [Collapse] elements and ensures only one is visibl
e |
9 * at a time. | 9 * at a time. |
10 * | 10 * |
11 * See [Collapse] for details on how content is interpreted. | 11 * See [Collapse] for details on how content is interpreted. |
12 */ | 12 */ |
13 class Accordion extends WebComponent { | 13 class Accordion extends WebComponent { |
14 @protected | 14 @protected |
15 void created() { | 15 void created() { |
16 ShowHideComponent.toggleEvent.forTarget(this).listen(_onOpen); | 16 ShowHideComponent.toggleEvent.forTarget(this).listen(_onOpen); |
17 } | 17 } |
18 | 18 |
19 @protected | 19 @protected |
20 void inserted() { | 20 void inserted() { |
21 // collapse all 'collapse' children | 21 // collapse all 'collapse' children |
22 _getAllCollapseElements() | 22 _getAllCollapseElements() |
23 .map((Element e) => e.xtag) | 23 .map((Element e) => e.xtag) |
24 .forEach((ShowHideComponent e) { | 24 .forEach((ShowHideComponent e) { |
25 e.hide(); | 25 e.hide(); |
26 }); | 26 }); |
27 } | 27 } |
28 | 28 |
29 List<Element> _getAllCollapseElements() => this.queryAll('x-accordion > x-coll
apse'); | 29 List<Element> _getAllCollapseElements() => |
| 30 this.queryAll('[is=x-accordion] > [is=x-collapse]'); |
30 | 31 |
31 void _onOpen(Event openEvent) { | 32 void _onOpen(Event openEvent) { |
32 if(openEvent.target is UnknownElement) { | 33 Element target = openEvent.target; |
33 final UnknownElement target = openEvent.target; | 34 if (target.xtag is ShowHideComponent) { |
34 final ShowHideComponent shc = target.xtag as ShowHideComponent; | 35 _onShowHideToggle(target.xtag); |
35 if(shc != null) { | |
36 _onShowHideToggle(shc); | |
37 } | |
38 } | 36 } |
39 } | 37 } |
40 | 38 |
41 void _onShowHideToggle(ShowHideComponent shc) { | 39 void _onShowHideToggle(ShowHideComponent shc) { |
42 if(shc.isShown) { | 40 if (shc.isShown) { |
43 _getAllCollapseElements() | 41 _getAllCollapseElements() |
44 .map((Element e) => e.xtag) | 42 .map((Element e) => e.xtag) |
45 .where((e) => e != shc) | 43 .where((e) => e != shc) |
46 .forEach((ShowHideComponent e) { | 44 .forEach((ShowHideComponent e) { |
47 e.hide(); | 45 e.hide(); |
48 }); | 46 }); |
49 } | 47 } |
50 } | 48 } |
51 } | 49 } |
OLD | NEW |