File tree Expand file tree Collapse file tree 5 files changed +85
-5
lines changed Expand file tree Collapse file tree 5 files changed +85
-5
lines changed Original file line number Diff line number Diff line change 1+ <svg
2+ xmlns =" http://www.w3.org/2000/svg"
3+ width =" 16"
4+ height =" 16"
5+ fill =" currentColor"
6+ class =" bi bi-three-dots"
7+ viewBox =" 0 0 16 16"
8+ >
9+ <path
10+ d =" M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"
11+ />
12+ </svg >
Original file line number Diff line number Diff line change 1+ <script lang =" ts" >
2+ import type { Snippet } from " svelte" ;
3+
4+ let {
5+ children,
6+ popupMenuOpen = $bindable (),
7+ }: { children: Snippet ; popupMenuOpen: boolean } = $props ();
8+ </script >
9+
10+ <div class =" popup-menu-wrapper" >
11+ {@render children ()}
12+ <button onclick ={() => (popupMenuOpen = false )}>Close</button >
13+ </div >
14+
15+ <style >
16+ .popup-menu-wrapper {
17+ position : fixed ;
18+ top : 50% ;
19+ left : 50% ;
20+ transform : translate (-50% , -50% );
21+ border : 1px solid gray ;
22+ padding : 1rem ;
23+ border-radius : 4px ;
24+ background-color : var (--color-background );
25+ box-shadow : var (--box-shadow );
26+ width : 90% ;
27+ max-width : 400px ;
28+ display : flex ;
29+ flex-direction : column ;
30+ gap : 1rem ;
31+ }
32+ </style >
Original file line number Diff line number Diff line change 11<script lang =" ts" >
2+ import ThreeDotsIcon from " $lib/components/icons/ThreeDotsIcon.svelte" ;
3+ import PopupWrapper from " $lib/components/layout/PopupWrapper.svelte" ;
24 import { deleteRelease } from " $lib/remote-functions/music.remote" ;
35 import { makeImageLink } from " $lib/utils" ;
46 import type { ReleaseHydrated } from " ../../../../../../shared/types/hydrated" ;
1113 }: {
1214 release: ReleaseHydrated ;
1315 } = $props ();
16+
17+ let popupMenuOpen = $state (false );
1418 </script >
1519
1620<div class =" release-info" >
3539 {/each }
3640 </ol >
3741 </div >
38- <ButtonWrapper onClickFunction ={() => deleteRelease ( release . id )}>
39- <BinIcon />
42+ <ButtonWrapper onClickFunction ={() => ( popupMenuOpen = ! popupMenuOpen )}>
43+ <ThreeDotsIcon />
4044 </ButtonWrapper >
4145</div >
4246
47+ {#if popupMenuOpen }
48+ <PopupWrapper bind:popupMenuOpen >
49+ <div >{release .title }</div >
50+ <ButtonWrapper onClickFunction ={() => deleteRelease (release .id )}>
51+ <div class =" delete" >Delete Release <BinIcon /></div >
52+ </ButtonWrapper >
53+ </PopupWrapper >
54+ {/if }
55+
4356<style >
4457 .release-info {
4558 display : flex ;
6073 aspect-ratio : 1 / 1 ;
6174 box-shadow : var (--box-shadow );
6275 }
76+ .delete {
77+ display : flex ;
78+ align-items : center ;
79+ gap : 0.5rem ;
80+ }
6381 </style >
Original file line number Diff line number Diff line change 11<script lang =" ts" >
2+ import ThreeDotsIcon from " $lib/components/icons/ThreeDotsIcon.svelte" ;
3+ import PopupWrapper from " $lib/components/layout/PopupWrapper.svelte" ;
24 import { deleteTrack } from " $lib/remote-functions/music.remote" ;
35 import type { Track } from " ../../../../../../shared/types/core" ;
46 import { prettifyDuration } from " ../../../../../../shared/utils" ;
57 import BinIcon from " ../../icons/BinIcon.svelte" ;
68 import ButtonWrapper from " ../../layout/ButtonWrapper.svelte" ;
79
810 const { song }: { song: Track } = $props ();
11+
12+ let popupMenuOpen = $state (false );
913 </script >
1014
1115<div class =" song-wrapper" >
1519 <small >{prettifyDuration (song .duration_seconds )}</small >
1620 </div >
1721 </div >
18- <ButtonWrapper onClickFunction ={() => deleteTrack ( song . id )}>
19- <BinIcon />
22+ <ButtonWrapper onClickFunction ={() => ( popupMenuOpen = ! popupMenuOpen )}>
23+ <ThreeDotsIcon />
2024 </ButtonWrapper >
2125</div >
2226
27+ {#if popupMenuOpen }
28+ <PopupWrapper bind:popupMenuOpen >
29+ <div >{song .title }</div >
30+ <ButtonWrapper onClickFunction ={() => deleteTrack (song .id )}>
31+ <div class =" delete" >Delete Track <BinIcon /></div >
32+ </ButtonWrapper >
33+ </PopupWrapper >
34+ {/if }
35+
2336<style >
2437 .song-wrapper {
2538 display : flex ;
3750 font-weight : 500 ;
3851 font-size : 70% ;
3952 }
53+ .delete {
54+ display : flex ;
55+ align-items : center ;
56+ gap : 0.5rem ;
57+ }
4058 </style >
Original file line number Diff line number Diff line change 88
99 let { children, data } = $props ();
1010
11- let { supabase, session } = $state (data );
11+ let { supabase, session } = $derived (data );
1212
1313 const artists = $derived (data .artists );
1414
You can’t perform that action at this time.
0 commit comments