// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // @dart = 2.9 part of touch; /** * Common events related helpers. */ class EventUtil { /** * Add an event listener to an element. * The event callback is specified by [handler]. * If [capture] is true, the listener gets events on the capture phase. * If [removeHandlerOnFocus] is true the handler is removed when there is any * focus event, and added back on blur events. */ static void observe( /*Element or Document*/ element, Stream stream, Function handler, [bool removeHandlerOnFocus = false]) { var subscription = stream.listen(handler); // TODO(jacobr): this remove on focus behavior seems really ugly. if (removeHandlerOnFocus) { element.onFocus.listen((e) { subscription.cancel(); }); element.onBlur.listen((e) { subscription.cancel(); }); } } /** * Clear the keyboard focus of the currently focused element (if there is * one). If there is no currently focused element then this function will do * nothing. For most browsers this will cause the keyboard to be dismissed. */ static void blurFocusedElement() { Element focusedEl = document.querySelector("*:focus"); if (focusedEl != null) { focusedEl.blur(); } } }