diff --git a/templates/rides/partials/search_script.html b/templates/rides/partials/search_script.html index 26ede763..84d6bb80 100644 --- a/templates/rides/partials/search_script.html +++ b/templates/rides/partials/search_script.html @@ -52,28 +52,7 @@ document.addEventListener('alpine:init', () => { const savedFilters = localStorage.getItem('rideFilters'); // Set up destruction handler - this.$cleanup = () => { - // Remove all bound event listeners - this.boundHandlers.forEach((handler, event) => { - if (event === 'popstate') { - window.removeEventListener(event, handler); - } else { - document.body.removeEventListener(event, handler); - } - }); - this.boundHandlers.clear(); - - // Cancel any pending requests - if (this.currentRequest) { - this.currentRequest.abort(); - this.currentRequest = null; - } - - // Clear any pending timeouts - if (this.suggestionTimeout) { - clearTimeout(this.suggestionTimeout); - } - }; + this.$cleanup = this.performCleanup.bind(this); if (savedFilters) { const filters = JSON.parse(savedFilters); Object.entries(filters).forEach(([key, value]) => { @@ -316,10 +295,35 @@ document.addEventListener('alpine:init', () => { bottom: 1rem; right: 1rem; z-index: 50; - padding: 0.5rem 1rem; - background: rgba(37, 99, 235, 0.95); - border-radius: 0.5rem; - box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + }, + + performCleanup() { + // Remove all bound event listeners + this.boundHandlers.forEach(this.removeEventHandler.bind(this)); + this.boundHandlers.clear(); + + // Cancel any pending requests + if (this.currentRequest) { + this.currentRequest.abort(); + this.currentRequest = null; + } + + // Clear any pending timeouts + if (this.suggestionTimeout) { + clearTimeout(this.suggestionTimeout); + } + }, + + removeEventHandler(handler, event) { + if (event === 'popstate') { + window.removeEventListener(event, handler); + } else { + document.body.removeEventListener(event, handler); + } + } + })); +}); + display: flex; align-items: center; gap: 0.5rem;