From 8086f977c98eeb0b0bb8929229dfc30ff36fb6f9 Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Sat, 10 Jan 2026 10:56:29 -0800 Subject: [PATCH] [QPOv2] Add list view to assets sidepanel (#7737) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds the list view to the media assets sidepanel, while also adding the active jobs to be displayed right now. The design for this is actually changing, which is why it is in draft right now. There are technical limitations of the virtual grid that doesn't make it easy for both the active jobs and generated assets to exist on the same container. Currently WIP right now. Part of the QPO v2 iteration, figma design can be found [here](https://www.figma.com/design/LVilZgHGk5RwWOkVN6yCEK/Queue-Progress-Modal?node-id=3330-37286&m=dev). This will be implemented in a series of stacked PRs that can be reviewed and merged individually. main <-- #7737, #7743, #7745 ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7737-QPOv2-Add-list-view-to-assets-sidepanel-2d26d73d365081858e22c48902bd56e2) by [Unito](https://www.unito.io) --------- Co-authored-by: GitHub Action --- src/components/queue/job/QueueJobItem.vue | 29 ++- .../sidebar/tabs/AssetsSidebarListView.vue | 203 ++++++++++++++++++ .../sidebar/tabs/AssetsSidebarTab.vue | 30 ++- src/composables/queue/useJobActions.ts | 59 +++++ src/composables/queue/useJobMenu.ts | 123 +++++------ src/composables/useProgressBarBackground.ts | 47 ++++ src/locales/en/main.json | 1 + .../components/AssetsListItem.stories.ts | 99 +++++++++ .../assets/components/AssetsListItem.vue | 116 ++++++++++ src/platform/assets/utils/mediaIconUtil.ts | 14 ++ 10 files changed, 650 insertions(+), 71 deletions(-) create mode 100644 src/components/sidebar/tabs/AssetsSidebarListView.vue create mode 100644 src/composables/queue/useJobActions.ts create mode 100644 src/composables/useProgressBarBackground.ts create mode 100644 src/platform/assets/components/AssetsListItem.stories.ts create mode 100644 src/platform/assets/components/AssetsListItem.vue create mode 100644 src/platform/assets/utils/mediaIconUtil.ts diff --git a/src/components/queue/job/QueueJobItem.vue b/src/components/queue/job/QueueJobItem.vue index 7e71840bc..b1809dac2 100644 --- a/src/components/queue/job/QueueJobItem.vue +++ b/src/components/queue/job/QueueJobItem.vue @@ -50,20 +50,22 @@
@@ -201,6 +203,7 @@ import { useI18n } from 'vue-i18n' import JobDetailsPopover from '@/components/queue/job/JobDetailsPopover.vue' import QueueAssetPreview from '@/components/queue/job/QueueAssetPreview.vue' import Button from '@/components/ui/button/Button.vue' +import { useProgressBarBackground } from '@/composables/useProgressBarBackground' import { buildTooltipConfig } from '@/composables/useTooltipConfig' import type { JobState } from '@/types/queue' import { iconForJobState } from '@/utils/queueDisplay' @@ -245,6 +248,14 @@ const emit = defineEmits<{ }>() const { t } = useI18n() +const { + progressBarContainerClass, + progressBarPrimaryClass, + progressBarSecondaryClass, + hasProgressPercent, + hasAnyProgressPercent, + progressPercentStyle +} = useProgressBarBackground() const cancelTooltipConfig = computed(() => buildTooltipConfig(t('g.cancel'))) const deleteTooltipConfig = computed(() => buildTooltipConfig(t('g.delete'))) diff --git a/src/components/sidebar/tabs/AssetsSidebarListView.vue b/src/components/sidebar/tabs/AssetsSidebarListView.vue new file mode 100644 index 000000000..f750661ba --- /dev/null +++ b/src/components/sidebar/tabs/AssetsSidebarListView.vue @@ -0,0 +1,203 @@ + + + diff --git a/src/components/sidebar/tabs/AssetsSidebarTab.vue b/src/components/sidebar/tabs/AssetsSidebarTab.vue index 032645b4c..7da25bb8e 100644 --- a/src/components/sidebar/tabs/AssetsSidebarTab.vue +++ b/src/components/sidebar/tabs/AssetsSidebarTab.vue @@ -79,10 +79,10 @@