11<script setup lang="ts">
2- import { computed , onMounted , ref , watchEffect , useTemplateRef } from " vue" ;
2+ import {
3+ computed ,
4+ onMounted ,
5+ ref ,
6+ watchEffect ,
7+ useTemplateRef ,
8+ watch ,
9+ } from " vue" ;
310import {
411 collectionElementRegistry ,
512 smartCollectionElementRegistry ,
@@ -17,7 +24,14 @@ const props = defineProps<{
1724 selected? : boolean ;
1825 loaded? : boolean ;
1926}>();
20- const emit = defineEmits ([" click" , " mouseenter" , " focus" , " loaded" ]);
27+ const emit = defineEmits ([
28+ " click" ,
29+ " mouseenter" ,
30+ " focus" ,
31+ " loaded" ,
32+ " select" ,
33+ " deselect" ,
34+ ]);
2135const collectionCardRef = useTemplateRef <HTMLButtonElement >(
2236 " collection-card-ref" ,
2337);
@@ -29,7 +43,7 @@ const memoizedCovers = ref({
2943 small: [" " , " " ],
3044});
3145
32- const collectionCoverImage = computed (() =>
46+ const fallbackCollectionCover = computed (() =>
3347 props .collection .name ?.toLowerCase () == " favourites"
3448 ? getFavoriteCoverImage (props .collection .name )
3549 : getCollectionCoverImage (props .collection .name ),
@@ -69,8 +83,8 @@ watchEffect(() => {
6983
7084 if (largeCoverUrls .length < 2 ) {
7185 memoizedCovers .value = {
72- large: [collectionCoverImage .value , collectionCoverImage .value ],
73- small: [collectionCoverImage .value , collectionCoverImage .value ],
86+ large: [fallbackCollectionCover .value , fallbackCollectionCover .value ],
87+ small: [fallbackCollectionCover .value , fallbackCollectionCover .value ],
7488 };
7589 return ;
7690 }
@@ -87,6 +101,22 @@ watchEffect(() => {
87101const firstLargeCover = computed (() => memoizedCovers .value .large [0 ]);
88102const secondLargeCover = computed (() => memoizedCovers .value .large [1 ]);
89103
104+ watch (
105+ () => props .selected ,
106+ (isSelected ) => {
107+ if (
108+ isSelected &&
109+ firstLargeCover .value &&
110+ firstLargeCover .value !== fallbackCollectionCover .value
111+ ) {
112+ emit (" select" , firstLargeCover .value );
113+ } else if (isSelected ) {
114+ emit (" deselect" );
115+ }
116+ },
117+ { immediate: true },
118+ );
119+
90120onMounted (() => {
91121 if (! collectionCardRef .value ) return ;
92122 if (props .collection .is_smart ) {
0 commit comments