Stellen lassen sich per Stern merken — unabhängig vom Status (offen / uebernommen / abgelehnt). Neue Spalte jobangebote.favorit (PRAGMA-Migration), JSON-Toggle-Endpunkt /jobangebote/:id/favorit, Stern-Button auf den Karten sowie eine "Gemerkte Stellen"-Sektion ganz oben auf der Startseite. Toggle laeuft per fetch mit optimistischem UI; beim Entfernen auf der Startseite verschwindet die Zeile sofort. Co-Authored-By: Claude <noreply@anthropic.com>
16 lines
1.1 KiB
Plaintext
16 lines
1.1 KiB
Plaintext
<%
|
|
// Stern-Button zum Merken/Entfernen eines Jobangebots. Lokale `j` muss das
|
|
// Angebot (mindestens id + favorit) sein. Zustand wird über die Klasse
|
|
// .is-fav gesteuert (definiert in partials/favorit-script). Das Skript dort
|
|
// bedient Klicks per Delegation — also nur einmal pro Seite einbinden.
|
|
var favAktiv = !!(typeof j !== 'undefined' && j && j.favorit);
|
|
%>
|
|
<button type="button" class="fav-star<%= favAktiv ? ' is-fav' : '' %> inline-flex items-center justify-center gap-1.5 rounded-md border px-3 py-1.5 text-xs font-medium transition-colors"
|
|
data-favorit="<%= j.id %>" data-aktiv="<%= favAktiv ? 1 : 0 %>"
|
|
title="<%= favAktiv ? 'Favorit entfernen' : 'Als Favorit merken' %>"
|
|
aria-pressed="<%= favAktiv ? 'true' : 'false' %>">
|
|
<svg class="fav-ico h-4 w-4" viewBox="0 0 24 24" fill="<%= favAktiv ? 'currentColor' : 'none' %>" stroke="currentColor" stroke-width="2">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M11.48 3.5l2.6 5.27 5.82.85-4.21 4.1.99 5.79-5.2-2.73-5.2 2.73.99-5.79-4.21-4.1 5.82-.85 2.6-5.27z"/>
|
|
</svg>
|
|
<span class="fav-label"><%= favAktiv ? 'Gemerkt' : 'Merken' %></span>
|
|
</button> |