@@ -4479,6 +4479,28 @@ class FastSearchCard extends HTMLElement {
44794479 position: relative;
44804480 }
44814481
4482+
4483+ .star-button {
4484+ position: absolute;
4485+ right: 0;
4486+ top: 50%;
4487+ transform: translateY(-50%);
4488+ background: none;
4489+ border: none;
4490+ cursor: pointer;
4491+ color: #ffd700;
4492+ transition: all 0.2s ease;
4493+ z-index: 2;
4494+ }
4495+
4496+ .star-button:hover {
4497+ transform: translateY(-50%) scale(1.1);
4498+ filter: drop-shadow(0 0 8px rgba(255, 215, 0, 0.6));
4499+ }
4500+
4501+ .star-button svg {
4502+ display: block;
4503+ }
44824504
44834505 </style>
44844506
@@ -7958,17 +7980,17 @@ class FastSearchCard extends HTMLElement {
79587980
79597981 this.setupDetailTabs(item);
79607982
7961- // NEU: Label Button Event Listener
7962- const labelButton = this.shadowRoot.querySelector('.label-test -button');
7963- if (labelButton ) {
7964- labelButton .addEventListener('click', (e) => {
7965- const entityId = e.target .dataset.entityId;
7983+ // NEU: Star Button Event Listener
7984+ const starButton = this.shadowRoot.querySelector('.star -button');
7985+ if (starButton ) {
7986+ starButton .addEventListener('click', (e) => {
7987+ const entityId = e.currentTarget .dataset.entityId;
79667988 this.toggleStarLabel(entityId);
79677989 });
79687990
79697991 // Initial Button State setzen
79707992 this.updateStarButtonState(item.id);
7971- }
7993+ }
79727994
79737995 const iconBackground = detailPanel.querySelector('.icon-background');
79747996 const titleArea = detailPanel.querySelector('.detail-title-area');
@@ -8230,9 +8252,10 @@ class FastSearchCard extends HTMLElement {
82308252 ${quickStats.map(stat => `<div class="stat-item">${stat}</div>`).join('')}
82318253 </div>
82328254
8233- <!-- NEU: Label Button hinzufügen -->
8234- <button class="label-test-button" data-entity-id="${item.id}" title="Star Label hinzufügen">
8235- ⭐
8255+ <button class="star-button" data-entity-id="${item.id}">
8256+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round">
8257+ <path d="M8.58737 8.23597L11.1849 3.00376C11.5183 2.33208 12.4817 2.33208 12.8151 3.00376L15.4126 8.23597L21.2215 9.08017C21.9668 9.18848 22.2638 10.0994 21.7243 10.6219L17.5217 14.6918L18.5135 20.4414C18.6409 21.1798 17.8614 21.7428 17.1945 21.3941L12 18.678L6.80547 21.3941C6.1386 21.7428 5.35909 21.1798 5.48645 20.4414L6.47825 14.6918L2.27575 10.6219C1.73617 10.0994 2.03322 9.18848 2.77852 9.08017L8.58737 8.23597Z"/>
8258+ </svg>
82368259 </button>
82378260
82388261 </div>
@@ -11240,47 +11263,36 @@ class FastSearchCard extends HTMLElement {
1124011263 }
1124111264
1124211265 updateStarButtonState(entityId) {
11243- const labelButton = this.shadowRoot.querySelector('.label-test -button');
11244- if (!labelButton ) return;
11266+ const starButton = this.shadowRoot.querySelector('.star -button');
11267+ if (!starButton ) return;
1124511268
1124611269 try {
11247- // User-ID ermitteln
1124811270 const userId = this._hass.user?.id || 'unknown_user';
11249-
11250- // Favoriten aus Helper lesen
1125111271 const favoritesHelper = this._hass.states['input_text.fast_search_favorites'];
11252- let allUserFavorites = {};
11272+ let allUserStars = {};
1125311273
1125411274 if (favoritesHelper && favoritesHelper.state) {
11255- try {
11256- const parsed = JSON.parse(favoritesHelper.state);
11257- if (typeof parsed === 'object' && !Array.isArray(parsed)) {
11258- allUserFavorites = parsed;
11259- } else if (Array.isArray(parsed)) {
11260- // Legacy Format: Als aktueller User behandeln
11261- allUserFavorites = { [userId]: parsed };
11262- }
11263- } catch (e) {
11264- console.warn('Fehler beim Parsen der Favoriten');
11265- allUserFavorites = {};
11275+ const parsed = JSON.parse(favoritesHelper.state);
11276+ if (typeof parsed === 'object' && !Array.isArray(parsed)) {
11277+ allUserStars = parsed;
11278+ } else if (Array.isArray(parsed)) {
11279+ allUserStars = { [userId]: parsed };
1126611280 }
1126711281 }
1126811282
11269- // User-spezifische Favoriten prüfen
11270- const userFavorites = allUserFavorites[userId] || [];
11271- const isFavorite = userFavorites.includes(entityId);
11283+ const userStars = allUserStars[userId] || [];
11284+ const isStarred = userStars.includes(entityId);
1127211285
11273- // Button Text und Style ändern
11274- labelButton.textContent = isFavorite ? '🌟' : '⭐';
11275- labelButton.title = isFavorite ? 'Favorit entfernen' : 'Als Favorit markieren';
11286+ // SVG Fill ändern
11287+ const svg = starButton.querySelector('svg');
11288+ if (svg) {
11289+ svg.setAttribute('fill', isStarred ? 'currentColor' : 'none');
11290+ }
1127611291
11277- console.log(`🔍 Button State für ${entityId}: ${isFavorite ? 'Favorit' : 'Nicht- Favorit'}`) ;
11292+ starButton.title = isStarred ? 'Favorit entfernen ' : 'Als Favorit markieren' ;
1127811293
1127911294 } catch (error) {
11280- console.error('❌ Fehler beim Aktualisieren des Button-Status:', error);
11281- // Fallback
11282- labelButton.textContent = '⭐';
11283- labelButton.title = 'Als Favorit markieren';
11295+ console.error('❌ Fehler beim Aktualisieren des Star-Button:', error);
1128411296 }
1128511297 }
1128611298
0 commit comments