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')"
>