Skip to content

Commit 47173b1

Browse files
authored
Update fast-search-card.js
1 parent 24007c4 commit 47173b1

File tree

1 file changed

+49
-37
lines changed

1 file changed

+49
-37
lines changed

dist/fast-search-card.js

Lines changed: 49 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)