class TaskFilter extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = `
`; this.shadowRoot.getElementById('applyFilter').addEventListener('click', () => { const filters = { status: this.shadowRoot.getElementById('statusFilter').value, priority: this.shadowRoot.getElementById('priorityFilter').value, date: this.shadowRoot.getElementById('dateFilter').value }; this.dispatchEvent(new CustomEvent('filter-changed', { detail: filters })); }); this.shadowRoot.getElementById('resetFilter').addEventListener('click', () => { this.shadowRoot.getElementById('statusFilter').value = 'all'; this.shadowRoot.getElementById('priorityFilter').value = 'all'; this.shadowRoot.getElementById('dateFilter').value = ''; this.dispatchEvent(new CustomEvent('filter-changed', { detail: {} })); }); } } customElements.define('task-filter', TaskFilter);