OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 part of touch; | 5 part of touch; |
6 | 6 |
7 /** | 7 /** |
8 * Common events related helpers. | 8 * Common events related helpers. |
9 */ | 9 */ |
10 class EventUtil { | 10 class EventUtil { |
11 | |
12 /** | 11 /** |
13 * Add an event listener to an element. | 12 * Add an event listener to an element. |
14 * The event callback is specified by [handler]. | 13 * The event callback is specified by [handler]. |
15 * If [capture] is true, the listener gets events on the capture phase. | 14 * If [capture] is true, the listener gets events on the capture phase. |
16 * If [removeHandlerOnFocus] is true the handler is removed when there is any | 15 * If [removeHandlerOnFocus] is true the handler is removed when there is any |
17 * focus event, and added back on blur events. | 16 * focus event, and added back on blur events. |
18 */ | 17 */ |
19 static void observe(/*Element or Document*/ element, | 18 static void observe( |
20 Stream stream, Function handler, | 19 /*Element or Document*/ element, Stream stream, Function handler, |
21 [bool removeHandlerOnFocus = false]) { | 20 [bool removeHandlerOnFocus = false]) { |
22 var subscription = stream.listen(handler); | 21 var subscription = stream.listen(handler); |
23 // TODO(jacobr): this remove on focus behavior seems really ugly. | 22 // TODO(jacobr): this remove on focus behavior seems really ugly. |
24 if (removeHandlerOnFocus) { | 23 if (removeHandlerOnFocus) { |
25 element.onFocus.listen((e) { subscription.cancel(); }); | 24 element.onFocus.listen((e) { |
26 element.onBlur.listen((e) { subscription.cancel(); }); | 25 subscription.cancel(); |
| 26 }); |
| 27 element.onBlur.listen((e) { |
| 28 subscription.cancel(); |
| 29 }); |
27 } | 30 } |
28 } | 31 } |
29 | 32 |
30 /** | 33 /** |
31 * Clear the keyboard focus of the currently focused element (if there is | 34 * Clear the keyboard focus of the currently focused element (if there is |
32 * one). If there is no currently focused element then this function will do | 35 * one). If there is no currently focused element then this function will do |
33 * nothing. For most browsers this will cause the keyboard to be dismissed. | 36 * nothing. For most browsers this will cause the keyboard to be dismissed. |
34 */ | 37 */ |
35 static void blurFocusedElement() { | 38 static void blurFocusedElement() { |
36 Element focusedEl = document.querySelector("*:focus"); | 39 Element focusedEl = document.querySelector("*:focus"); |
37 if (focusedEl != null) { | 40 if (focusedEl != null) { |
38 focusedEl.blur(); | 41 focusedEl.blur(); |
39 } | 42 } |
40 } | 43 } |
41 } | 44 } |
OLD | NEW |