class CustomSidebar extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = `
`; // Add event listeners after content is rendered setTimeout(() => { this.setupEventListeners(); feather.replace(); }, 0); } setupEventListeners() { const sidebar = this.shadowRoot.getElementById('sidebar'); const overlay = this.shadowRoot.getElementById('overlay'); const closeBtn = this.shadowRoot.getElementById('closeBtn'); // Close sidebar when clicking overlay or close button overlay.addEventListener('click', () => this.closeSidebar()); closeBtn.addEventListener('click', () => this.closeSidebar()); // Close sidebar when clicking on navigation links const navLinks = this.shadowRoot.querySelectorAll('.nav-links a'); navLinks.forEach(link => { link.addEventListener('click', () => this.closeSidebar()); }); } openSidebar() { const sidebar = this.shadowRoot.getElementById('sidebar'); const overlay = this.shadowRoot.getElementById('overlay'); sidebar.classList.add('open'); overlay.classList.add('open'); document.body.style.overflow = 'hidden'; } closeSidebar() { const sidebar = this.shadowRoot.getElementById('sidebar'); const overlay = this.shadowRoot.getElementById('overlay'); sidebar.classList.remove('open'); overlay.classList.remove('open'); document.body.style.overflow = ''; } } customElements.define('custom-sidebar', CustomSidebar);