• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mozilla / blurts-server / 3301e8fe-9868-476c-990a-ab44e51f4a2d

pending completion
3301e8fe-9868-476c-990a-ab44e51f4a2d

push

circleci

GitHub
Merge pull request #3001 from mozilla/main

282 of 1768 branches covered (15.95%)

Branch coverage included in aggregate %.

451 of 451 new or added lines in 56 files covered. (100.0%)

959 of 4670 relevant lines covered (20.54%)

3.44 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/client/js/userMenu.js
1
/* This Source Code Form is subject to the terms of the Mozilla Public
2
 * License, v. 2.0. If a copy of the MPL was not distributed with this
3
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4

5
const userMenuButton = document.querySelector('.user-menu-button')
×
6
const userMenuPopover = document.querySelector('.user-menu-popover')
×
7
const userMenuWrapper = document.querySelector('.user-menu-wrapper')
×
8

9
function handleBlur (event, onBlur) {
10
  const currentTarget = event.currentTarget
×
11

12
  requestAnimationFrame(() => {
×
13
    const isChildElement = currentTarget.contains(document.activeElement)
×
14

15
    if (!isChildElement) {
×
16
      onBlur()
×
17
    }
18
  })
19
}
20

21
function handleMenuButton () {
22
  if (!userMenuPopover || !userMenuWrapper) {
×
23
    return
×
24
  }
25

26
  if (userMenuPopover.hasAttribute('hidden')) {
×
27
    // Show popover
28
    userMenuPopover.setAttribute('aria-expanded', true)
×
29
    userMenuPopover.removeAttribute('hidden')
×
30

31
    // Handle onblur
32
    userMenuWrapper.addEventListener('blur', (event) => handleBlur(event, handleMenuButton))
×
33
    userMenuWrapper.focus()
×
34

35
    window.gtag('event', 'opened_closed_user_menu', { action: 'open' })
×
36
  } else {
37
    // Hide popover
38
    userMenuPopover.setAttribute('aria-expanded', false)
×
39
    userMenuPopover.setAttribute('hidden', '')
×
40

41
    userMenuButton.focus()
×
42

43
    window.gtag('event', 'opened_closed_user_menu', { action: 'close' })
×
44
  }
45
}
46

47
if (userMenuButton) {
×
48
  userMenuButton.addEventListener('click', handleMenuButton)
×
49
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc