@@ -5159,28 +5159,71 @@ class FastSearchCard extends HTMLElement {
51595159 const categoryButtons = this.shadowRoot.querySelector('.category-buttons');
51605160 if (!this.isMenuView) return;
51615161
5162- // ✅ SOFORT AUSBLENDEN ohne Animation
5162+ // 🌊 REVERSE RIPPLE ANIMATION
5163+ this.animateReverseRipple(categoryButtons);
5164+ }
5165+
5166+ animateReverseRipple(categoryButtons) {
5167+ const buttons = categoryButtons.querySelectorAll('.category-button');
5168+
5169+ // Reverse-Reihenfolge: Letzter Button zuerst
5170+ buttons.forEach((button, index) => {
5171+ const reverseIndex = buttons.length - 1 - index;
5172+
5173+ setTimeout(() => {
5174+ button.animate([
5175+ {
5176+ opacity: 1,
5177+ transform: 'translateY(0) scale(1) rotate(0deg)',
5178+ filter: 'blur(0px)'
5179+ },
5180+ {
5181+ opacity: 0.3,
5182+ transform: 'translateY(20px) scale(0.6) rotate(12deg)',
5183+ filter: 'blur(4px)'
5184+ }
5185+ ], {
5186+ duration: 350,
5187+ easing: 'ease-in',
5188+ fill: 'forwards'
5189+ });
5190+ }, reverseIndex * 60);
5191+ });
5192+
5193+ // Nach allen Button-Animationen: Container ausblenden
5194+ setTimeout(() => {
5195+ categoryButtons.animate([
5196+ { opacity: 1 },
5197+ { opacity: 0 }
5198+ ], {
5199+ duration: 200,
5200+ easing: 'ease-in',
5201+ fill: 'forwards'
5202+ }).finished.then(() => {
5203+ this.cleanupCategoryButtons(categoryButtons);
5204+ });
5205+ }, buttons.length * 60 + 350);
5206+ }
5207+
5208+ cleanupCategoryButtons(categoryButtons) {
51635209 categoryButtons.classList.remove('visible');
51645210 this.isMenuView = false;
51655211
5166- // ✅ ALLE STYLES ZURÜCKSETZEN
5167- const buttons = categoryButtons?.querySelectorAll('.category-button');
5168- if (categoryButtons) {
5169- categoryButtons.style.opacity = '';
5170- categoryButtons.style.transform = '';
5171- categoryButtons.style.display = '';
5172- }
5173- if (buttons) {
5174- buttons.forEach(button => {
5175- button.style.opacity = '';
5176- button.style.transform = '';
5177- button.style.filter = '';
5178- });
5179- }
5212+ // Alle Styles zurücksetzen
5213+ const buttons = categoryButtons.querySelectorAll('.category-button');
5214+ categoryButtons.style.opacity = '';
5215+ categoryButtons.style.transform = '';
5216+ categoryButtons.style.display = '';
51805217
5181- // ✅ PANEL WIEDER ERWEITERN
5218+ buttons.forEach(button => {
5219+ button.style.opacity = '';
5220+ button.style.transform = '';
5221+ button.style.filter = '';
5222+ });
5223+
5224+ // Panel wieder erweitern
51825225 this.expandPanel();
5183- }
5226+ }
51845227
51855228 handleCategorySelect(selectedButton) {
51865229 const category = selectedButton.dataset.category;
0 commit comments