PageSourceSearch

https://iaassyriology.com/wp-content/plugins/memberpress/js/blocks/pro-profile-menu/frontend.js?ver=1.14.1

js iaassyriology.com collected 2026-10-02 10:19:24 UTC 2,887 bytes, 80 lines download raw bytes

1/**
2 * Profile Menu Block - Frontend JavaScript
3 * Handles the dropdown toggle functionality
4 */
5
6(function() {
7  'use strict';
8
9  function initProfileMenu() {
10    const menuButtons = document.querySelectorAll('.wp-block-memberpress-pro-profile-menu__button');
11
12    menuButtons.forEach(function(button) {
13      button.addEventListener('click', function(e) {
14        e.preventDefault();
15        e.stopPropagation();
16
17        const buttonGroup = button.closest('.wp-block-memberpress-pro-profile-menu__button-group');
18        const dropdown = buttonGroup.querySelector('.wp-block-memberpress-pro-profile-menu__dropdown');
19
20        if (!dropdown) return;
21
22        // Toggle dropdown
23        const isExpanded = button.getAttribute('aria-expanded') === 'true';
24
25        // Close all other dropdowns first
26        document.querySelectorAll('.wp-block-memberpress-pro-profile-menu__button').forEach(function(otherButton) {
27          if (otherButton !== button) {
28            otherButton.setAttribute('aria-expanded', 'false');
29            const otherDropdown = otherButton.closest('.wp-block-memberpress-pro-profile-menu__button-group').querySelector('.wp-block-memberpress-pro-profile-menu__dropdown');
30            if (otherDropdown) {
31              otherDropdown.style.display = 'none';
32            }
33          }
34        });
35
36        // Toggle current dropdown
37        if (isExpanded) {
38          button.setAttribute('aria-expanded', 'false');
39          dropdown.style.display = 'none';
40        } else {
41          button.setAttribute('aria-expanded', 'true');
42          dropdown.style.display = 'block';
43        }
44      });
45    });
46
47    // Close dropdown when clicking outside
48    document.addEventListener('click', function(e) {
49      const isProfileMenu = e.target.closest('.wp-block-memberpress-pro-profile-menu');
50
51      if (!isProfileMenu) {
52        document.querySelectorAll('.wp-block-memberpress-pro-profile-menu__button').forEach(function(button) {
53          button.setAttribute('aria-expanded', 'false');
54        });
55        document.querySelectorAll('.wp-block-memberpress-pro-profile-menu__dropdown').forEach(function(dropdown) {
56          dropdown.style.display = 'none';
57        });
58      }
59    });
60
61    // Close dropdown on escape key
62    document.addEventListener('keydown', function(e) {
63      if (e.key === 'Escape') {
64        document.querySelectorAll('.wp-block-memberpress-pro-profile-menu__button').forEach(function(button) {
65          button.setAttribute('aria-expanded', 'false');
66        });
67        document.querySelectorAll('.wp-block-memberpress-pro-profile-menu__dropdown').forEach(function(dropdown) {
68          dropdown.style.display = 'none';
69        });
70      }
71    });
72  }
73
74  // Initialize on DOM ready
75  if (document.readyState === 'loading') {
76    document.addEventListener('DOMContentLoaded', initProfileMenu);
77  } else {
78    initProfileMenu();
79  }
80})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.