class UserMenu extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = `
`; // Add event listeners after content is rendered setTimeout(() => { this.setupEventListeners(); }, 0); } setupEventListeners() { const userButton = this.shadowRoot.getElementById('userButton'); const dropdown = this.shadowRoot.getElementById('dropdown'); userButton.addEventListener('click', () => { dropdown.classList.toggle('open'); }); // Close dropdown when clicking outside document.addEventListener('click', (event) => { if (!this.contains(event.target)) { dropdown.classList.remove('open'); } }); } } customElements.define('user-menu', UserMenu);