| /** |
| * @license |
| * Copyright 2021 The Go Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style |
| * license that can be found in the LICENSE file. |
| */ |
| |
| /** |
| * ToolTipController handles closing tooltips on external clicks. |
| */ |
| export class ToolTipController { |
| constructor(private el: HTMLDetailsElement) { |
| document.addEventListener('click', e => { |
| const insideTooltip = this.el.contains(e.target as Element); |
| if (!insideTooltip) { |
| this.el.removeAttribute('open'); |
| } |
| }); |
| |
| // Add event listener for "Escape" keydown to close tooltip |
| this.el.addEventListener('keydown', e => { |
| if (e.key === 'Escape') { |
| this.el.open = false; |
| } |
| }); |
| } |
| } |