diff --git a/src/components/sidebar/tabs/AssetsSidebarListView.vue b/src/components/sidebar/tabs/AssetsSidebarListView.vue index f750661ba..dd7982fc9 100644 --- a/src/components/sidebar/tabs/AssetsSidebarListView.vue +++ b/src/components/sidebar/tabs/AssetsSidebarListView.vue @@ -74,8 +74,22 @@ " :primary-text="getAssetPrimaryText(item.asset)" :secondary-text="getAssetSecondaryText(item.asset)" + @mouseenter="onAssetEnter(item.asset.id)" + @mouseleave="onAssetLeave(item.asset.id)" + @contextmenu.prevent.stop="emit('context-menu', $event, item.asset)" @click.stop="emit('select-asset', item.asset)" - /> + > + + @@ -111,12 +125,14 @@ const { assets, isSelected } = defineProps<{ const emit = defineEmits<{ (e: 'select-asset', asset: AssetItem): void + (e: 'context-menu', event: MouseEvent, asset: AssetItem): void (e: 'approach-end'): void }>() const { t } = useI18n() const { jobItems } = useJobList() const hoveredJobId = ref(null) +const hoveredAssetId = ref(null) type AssetListItem = { key: string; asset: AssetItem } @@ -192,6 +208,16 @@ function onJobLeave(jobId: string) { } } +function onAssetEnter(assetId: string) { + hoveredAssetId.value = assetId +} + +function onAssetLeave(assetId: string) { + if (hoveredAssetId.value === assetId) { + hoveredAssetId.value = null + } +} + function getJobIconClass(job: JobListItem): string | undefined { const classes = [] const iconName = job.iconName ?? iconForJobState(job.state) diff --git a/src/components/sidebar/tabs/AssetsSidebarTab.vue b/src/components/sidebar/tabs/AssetsSidebarTab.vue index 7da25bb8e..61f6a205e 100644 --- a/src/components/sidebar/tabs/AssetsSidebarTab.vue +++ b/src/components/sidebar/tabs/AssetsSidebarTab.vue @@ -101,6 +101,7 @@ :assets="displayAssets" :is-selected="isSelected" @select-asset="handleAssetSelect" + @context-menu="handleAssetContextMenu" @approach-end="handleApproachEnd" /> @@ -196,6 +190,21 @@ v-model:active-index="galleryActiveIndex" :all-gallery-items="galleryItems" /> + diff --git a/src/platform/assets/components/MediaAssetContextMenu.vue b/src/platform/assets/components/MediaAssetContextMenu.vue index 9325f7a17..fe49c2ca1 100644 --- a/src/platform/assets/components/MediaAssetContextMenu.vue +++ b/src/platform/assets/components/MediaAssetContextMenu.vue @@ -11,6 +11,7 @@ ) } }" + @hide="emit('hide')" >