1313 v-if =" album_view_mode === ' list' "
1414 :albums =" props .albums "
1515 :selected-ids =" props .selectedAlbums "
16- @album- clicked =" propagateClickedFromList "
17- @album- contexted =" propagateMenuOpenFromList "
16+ @clicked =" propagateClicked "
17+ @contexted =" propagateContexted "
1818 />
1919 <AlbumThumbPanelList
2020 v-else
2121 :albums =" props .albums "
22- :is-interactive =" props .isInteractive "
2322 :selected-albums =" props .selectedAlbums "
24- @clicked =" ( id , e ) => emits ( ' clicked ' , id , e ) "
25- @contexted =" ( id , e ) => emits ( ' contexted ' , id , e ) "
23+ @clicked =" propagateClicked "
24+ @contexted =" propagateContexted "
2625 />
2726 </div >
2827 </Panel >
4342 v-if =" album_view_mode === ' list' "
4443 :albums =" slotProps .item .data "
4544 :selected-ids =" props .selectedAlbums "
46- @album- clicked =" propagateClickedFromList "
47- @album- contexted =" propagateMenuOpenFromList "
45+ @clicked =" propagateClicked "
46+ @contexted =" propagateContexted "
4847 />
4948
5049 <AlbumThumbPanelList
5150 v-else
5251 :albums =" slotProps .item .data "
53- :is-interactive =" props .isInteractive "
5452 :selected-albums =" props .selectedAlbums "
55- @clicked =" ( id , e ) => emits ( ' clicked ' , id , e ) "
56- @contexted =" ( id , e ) => emits ( ' contexted ' , id , e ) "
53+ @clicked =" propagateClicked "
54+ @contexted =" propagateContexted "
5755 />
5856 </div >
5957 </template >
7068 v-if =" album_view_mode === ' list' "
7169 :albums =" albumTimeline .data "
7270 :selected-ids =" props .selectedAlbums "
73- @album- clicked =" propagateClickedFromList "
74- @album- contexted =" propagateMenuOpenFromList "
71+ @clicked =" propagateClicked "
72+ @contexted =" propagateContexted "
7573 />
7674
7775 <AlbumThumbPanelList
7876 v-else
7977 :albums =" albumTimeline .data "
80- :is-interactive =" props .isInteractive "
8178 :selected-albums =" props .selectedAlbums "
82- @clicked =" ( id , e ) => emits ( ' clicked ' , id , e ) "
83- @contexted =" ( id , e ) => emits ( ' contexted ' , id , e ) "
79+ @clicked =" propagateClicked "
80+ @contexted =" propagateContexted "
8481 />
8582 </div >
8683 </template >
@@ -98,6 +95,7 @@ import AlbumThumbPanelList from "./AlbumThumbPanelList.vue";
9895import AlbumListView from " ./AlbumListView.vue" ;
9996import { useLtRorRtL } from " @/utils/Helpers" ;
10097import { isTouchDevice } from " @/utils/keybindings-utils" ;
98+ import { usePropagateAlbumEvents } from " @/composables/album/propagateEvents" ;
10199
102100const { isLTR } = useLtRorRtL ();
103101
@@ -108,28 +106,19 @@ const props = defineProps<{
108106 header: string ;
109107 albums: App .Http .Resources .Models .ThumbAlbumResource [];
110108 isAlone: boolean ;
111- isInteractive? : boolean ;
112109 selectedAlbums: string [];
113110 isTimeline: boolean ;
114111}>();
115112
116113// bubble up.
117114const emits = defineEmits <{
118- clicked: [id : string , event : MouseEvent ];
119- contexted: [id : string , event : MouseEvent ];
115+ clicked: [event : MouseEvent , id : string ];
116+ contexted: [event : MouseEvent , id : string ];
120117}>();
118+ const { propagateClicked, propagateContexted } = usePropagateAlbumEvents (emits );
121119
122120const { spliter, verifyOrder } = useSplitter ();
123121
124- // Handlers for list view - emit album ID directly
125- const propagateClickedFromList = (e : MouseEvent , album : App .Http .Resources .Models .ThumbAlbumResource ) => {
126- emits (" clicked" , album .id , e );
127- };
128-
129- const propagateMenuOpenFromList = (e : MouseEvent , album : App .Http .Resources .Models .ThumbAlbumResource ) => {
130- emits (" contexted" , album .id , e );
131- };
132-
133122const albumsTimeLine = computed <SplitData <App .Http .Resources .Models .ThumbAlbumResource >[]>(() =>
134123 split (props .albums as App .Http .Resources .Models .ThumbAlbumResource []),
135124);
0 commit comments