@@ -7857,60 +7857,92 @@ class FastSearchCard extends HTMLElement {
78577857 getShortcutsHTML(item) {
78587858 return `
78597859 <div class="shortcuts-container">
7860+
78607861 <div class="shortcuts-header">
78617862 <h3>Shortcuts für ${item.name}</h3>
7862- <div class="shortcuts-controls">
7863- <button class="shortcuts-btn active" data-shortcuts-tab="timer">Timer</button>
7864- <button class="shortcuts-btn" data-shortcuts-tab="zeitplan">Zeitplan</button>
7865- <button class="shortcuts-btn" data-shortcuts-tab="actions">Aktionen</button>
7866- </div>
7867- </div>
7868-
7869- <div class="shortcuts-content">
7870- <!-- ✅ TIMER TAB - Nur noch Timer-spezifische Inhalte -->
7871- <div class="shortcuts-tab-content active" data-shortcuts-content="timer">
7872- <div id="timer-section-${item.id}">
7873- <!-- Aktive Timer Anzeige -->
7874- <div class="active-timers" id="active-timers-${item.id}">
7875- <div class="loading-timers">Lade Timer...</div>
7863+ </div>
7864+
7865+ <div class="shortcuts-content">
7866+ <!-- ACCORDION CONTAINER -->
7867+ <div class="accordion-container">
7868+
7869+ <!-- TIMER ACCORDION -->
7870+ <div class="accordion-item">
7871+ <div class="accordion-header active" data-accordion="timer">
7872+ <span>📋 Timer</span>
7873+ <span class="accordion-arrow">
7874+ <svg width="20px" height="20px" stroke-width="1.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
7875+ <path d="M6 12H12M18 12H12M12 12V6M12 12V18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
7876+ </svg>
7877+ </span>
78767878 </div>
7877-
7878- <!-- 🚨 HIER DIREKT TIMER-PRESETS - KEIN Timer/Zeitplan Button mehr -->
7879- <div class="timer-control-design" id="timer-control-${item.id}">
7880- <!-- ✅ Direkt die Action Presets (größeres Design) -->
7881- <div class="timer-control-presets timer-action-presets visible" data-is-open="true">
7882- <div class="timer-control-presets-grid">
7883- ${this.getTimerPresetsForDevice(item)}
7879+ <div class="accordion-content open" data-content="timer">
7880+ <div id="timer-section-${item.id}">
7881+ <!-- Aktive Timer Anzeige -->
7882+ <div class="active-timers" id="active-timers-${item.id}">
7883+ <div class="loading-timers">Lade Timer...</div>
7884+ </div>
7885+
7886+ <!-- Timer Controls -->
7887+ <div class="timer-control-design" id="timer-control-${item.id}">
7888+ <div class="timer-control-presets timer-action-presets visible" data-is-open="true">
7889+ <div class="timer-control-presets-grid">
7890+ ${this.getTimerPresetsForDevice(item)}
7891+ </div>
7892+ </div>
78847893 </div>
78857894 </div>
78867895 </div>
78877896 </div>
7888- </div>
7889-
7890- <!-- ✅ NEUER ZEITPLAN TAB -->
7891- <div class="shortcuts-tab-content" data-shortcuts-content="zeitplan">
7892- <div id="schedule-section-${item.id}">
7893- <!-- Aktive Zeitpläne Anzeige -->
7894- <div class="active-schedules" id="active-schedules-${item.id}">
7895- <div class="loading-schedules">Lade Zeitpläne...</div>
7897+
7898+ <!-- ZEITPLAN ACCORDION -->
7899+ <div class="accordion-item">
7900+ <div class="accordion-header" data-accordion="zeitplan">
7901+ <span>📅 Zeitplan</span>
7902+ <span class="accordion-arrow">
7903+ <svg width="20px" height="20px" stroke-width="1.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
7904+ <path d="M6 12H12M18 12H12M12 12V6M12 12V18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
7905+ </svg>
7906+ </span>
78967907 </div>
7897-
7898- <!-- Zeitplan Controls -->
7899- <div class="schedule-control-design" id="schedule-control-${item.id}">
7900- <div class="timer-control-presets schedule-action-presets visible" data-is-open="true">
7901- <div class="timer-control-presets-grid">
7902- ${this.getTimerPresetsForDevice(item)}
7908+ <div class="accordion-content" data-content="zeitplan">
7909+ <div id="schedule-section-${item.id}">
7910+ <!-- Aktive Zeitpläne Anzeige -->
7911+ <div class="active-schedules" id="active-schedules-${item.id}">
7912+ <div class="loading-schedules">Lade Zeitpläne...</div>
7913+ </div>
7914+
7915+ <!-- Zeitplan Controls -->
7916+ <div class="schedule-control-design" id="schedule-control-${item.id}">
7917+ <div class="timer-control-presets schedule-action-presets visible" data-is-open="true">
7918+ <div class="timer-control-presets-grid">
7919+ ${this.getTimerPresetsForDevice(item)}
7920+ </div>
7921+ </div>
79037922 </div>
7904- </div>
7923+ </div>
79057924 </div>
79067925 </div>
7907- </div>
7908-
7909- <!-- ✅ AKTIONEN TAB -->
7910- <div class="shortcuts-tab-content" data-shortcuts-content="actions">
7911- <p>Aktionen Content - wird implementiert</p>
7926+
7927+ <!-- AKTIONEN ACCORDION -->
7928+ <div class="accordion-item">
7929+ <div class="accordion-header" data-accordion="actions">
7930+ <span>⚙️ Aktionen</span>
7931+ <span class="accordion-arrow">
7932+ <svg width="20px" height="20px" stroke-width="1.5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
7933+ <path d="M6 12H12M18 12H12M12 12V6M12 12V18" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"></path>
7934+ </svg>
7935+ </span>
7936+ </div>
7937+ <div class="accordion-content" data-content="actions">
7938+ <p>Aktionen Content - wird implementiert</p>
7939+ </div>
7940+ </div>
7941+
79127942 </div>
79137943 </div>
7944+
7945+
79147946 </div>
79157947 `;
79167948 }
@@ -11554,42 +11586,43 @@ class FastSearchCard extends HTMLElement {
1155411586 const shortcutsBtns = this.shadowRoot.querySelectorAll('.shortcuts-btn');
1155511587 console.log('🎯 Found shortcuts buttons:', shortcutsBtns.length);
1155611588
11557- shortcutsBtns.forEach(btn => {
11558- btn.addEventListener('click', (e) => {
11559- e.preventDefault();
11560- e.stopPropagation();
11589+ // NEU: Accordion Event Listeners
11590+ const accordionHeaders = this.shadowRoot.querySelectorAll('.accordion-header');
11591+ accordionHeaders.forEach(header => {
11592+ header.addEventListener('click', () => {
11593+ const accordionType = header.dataset.accordion;
11594+ const content = this.shadowRoot.querySelector(`[data-content="${accordionType}"]`);
11595+ const arrow = header.querySelector('.accordion-arrow svg');
1156111596
11562- const targetTab = btn.dataset.shortcutsTab;
11563- console.log(`🎯 Switching to tab: ${targetTab}`);
11564-
11565- // Alle Buttons deaktivieren
11566- shortcutsBtns.forEach(b => b.classList.remove('active'));
11567- btn.classList.add('active');
11597+ // Toggle
11598+ const isOpen = content.classList.contains('open');
1156811599
11569- // Alle Contents verstecken
11570- const shortcutsContents = this.shadowRoot.querySelectorAll('.shortcuts-tab-content');
11571- shortcutsContents.forEach(content => content.classList.remove('active'));
11600+ if (isOpen) {
11601+ content.classList.remove('open');
11602+ header.classList.remove('active');
11603+ arrow.style.transform = 'rotate(0deg)';
11604+ } else {
11605+ content.classList.add('open');
11606+ header.classList.add('active');
11607+ arrow.style.transform = 'rotate(45deg)';
11608+ }
1157211609
11573- // Ziel-Content anzeigen
11574- const targetContent = this.shadowRoot.querySelector(`[data-shortcuts-content="${targetTab}"]`);
11575- if (targetContent) {
11576- targetContent.classList.add('active');
11577-
11578- // Tab-spezifische Initialisierung
11579- switch(targetTab) {
11610+ // Tab-spezifische Initialisierung wenn geöffnet
11611+ if (!isOpen) {
11612+ switch(accordionType) {
1158011613 case 'timer':
11581- this.initializeTimerTab(item, targetContent );
11614+ this.initializeTimerTab(item, content );
1158211615 break;
1158311616 case 'zeitplan':
11584- this.initializeScheduleTab(item, targetContent );
11617+ this.initializeScheduleTab(item, content );
1158511618 break;
1158611619 case 'actions':
11587- this.initializeActionsTab(item, targetContent );
11620+ this.initializeActionsTab(item, content );
1158811621 break;
1158911622 }
1159011623 }
1159111624 });
11592- });
11625+ });
1159311626
1159411627 // Initial Timer Tab aktivieren
1159511628 const timerContent = this.shadowRoot.querySelector('[data-shortcuts-content="timer"]');
0 commit comments