diff --git a/index.html b/index.html index 4bb0420..12b6df6 100644 --- a/index.html +++ b/index.html @@ -577,8 +577,11 @@
diff --git a/src/main.js b/src/main.js index df4ea43..80313ee 100644 --- a/src/main.js +++ b/src/main.js @@ -28,6 +28,7 @@ import { createPlaylistPrompt, showSongInfo, closeInfoModal, openDlModal, closeDlModal, selectDlType, executeDownload, executeSpotifyDownload, openEditPlModal, closeEditPlModal, saveEditPlaylist, editPlUploadCover, editPlCoverSelected, editPlRemoveCover, + deletePlaylist, toggleMobileSearch, closeMobileSearch, switchSetupTab, toggleNotifPanel, deleteNotif, clearNotifs, initNotifBell, } from './ui.js'; @@ -235,7 +236,7 @@ Object.assign(window, { showSongInfo, closeInfoModal, openDlModal, closeDlModal, selectDlType, executeDownload, openEditPlModal, closeEditPlModal, saveEditPlaylist, - editPlUploadCover, editPlCoverSelected, editPlRemoveCover, + editPlUploadCover, editPlCoverSelected, editPlRemoveCover, deletePlaylist, toggleMobileSearch, closeMobileSearch, switchSetupTab, toggleNotifPanel, deleteNotif, clearNotifs, // App diff --git a/src/ui.js b/src/ui.js index d9c4cd5..82139f6 100644 --- a/src/ui.js +++ b/src/ui.js @@ -572,3 +572,15 @@ export async function editPlRemoveCover() { } catch(e) { S._ndToken = null; toast('Fehler: '+e.message); } } +export async function deletePlaylist() { + const pl = S._currentPlaylist; + if (!pl) return; + if (!confirm(`Playlist "${pl.name}" wirklich löschen?`)) return; + try { + await api('deletePlaylist', `&id=${pl.id}`); + closeEditPlModal(); + toast(`🗑 "${pl.name}" gelöscht`); + navigate('playlists'); + } catch(e) { toast('Fehler beim Löschen: ' + e.message); } +} + diff --git a/styles.css b/styles.css index e36334f..4b409e9 100644 --- a/styles.css +++ b/styles.css @@ -401,7 +401,9 @@ nav{flex:1;overflow-y:auto;padding:4px 10px} .edit-pl-textarea{resize:vertical;min-height:72px;line-height:1.5} .edit-pl-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0} .edit-pl-toggle-row span{font-size:14px;font-weight:500} -.edit-pl-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--border)} +.edit-pl-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:16px 24px;border-top:1px solid var(--border)} +.edit-pl-btn-delete{padding:10px 18px;border-radius:9px;border:1px solid var(--danger);background:none;color:var(--danger);font-family:var(--font);font-size:14px;font-weight:600;cursor:pointer;transition:background .15s,color .15s} +.edit-pl-btn-delete:hover{background:rgba(224,85,85,.12)} .edit-pl-btn-cancel{padding:10px 20px;border-radius:9px;border:none;background:none;color:var(--text2);font-family:var(--font);font-size:14px;font-weight:600;cursor:pointer;transition:color .15s} .edit-pl-btn-cancel:hover{color:var(--text)} .edit-pl-btn-save{padding:10px 22px;border-radius:9px;border:none;background:var(--accent);color:#000;font-family:var(--font);font-size:14px;font-weight:700;cursor:pointer;transition:opacity .15s}