From 1feee48284dd905bc497a1c4be383dc272637223 Mon Sep 17 00:00:00 2001 From: Jin Yi Date: Fri, 14 Nov 2025 12:00:46 +0900 Subject: [PATCH] [feat] Add search functionality to Media Asset Panel (#6691) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Add search functionality to the Media Asset Panel, allowing users to search for assets by filename. ## Changes ### 1. Search Feature - Added SearchBox component to AssetsSidebarTab header - Implemented fuzzy search using Fuse.js - Works in both Imported and Generated tabs - Search also available in folder view ### 2. New Composable: `useMediaAssetFiltering` - Location: `src/platform/assets/composables/useMediaAssetFiltering.ts` - Encapsulates search logic in a reusable composable - Extensible structure for future filter and sort features - Debounced search (50ms) ### 3. UX Improvements - Search query automatically clears when switching tabs - Search query automatically clears when exiting folder view ## Testing - ✅ TypeScript type check passed - ✅ ESLint/Oxlint passed - ✅ Lint-staged pre-commit hooks passed ## Modified Files - `src/components/sidebar/tabs/AssetsSidebarTab.vue` - Added SearchBox - `src/platform/assets/composables/useMediaAssetFiltering.ts` - New file - `src/locales/en/main.json` - Added i18n key (`sideToolbar.searchAssets`) ## Future Plans - Add filter functionality (file type, date, etc.) - Add sort functionality - Switch to server-side search for OSS/Cloud (after Asset API and Job API release) ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6691-feat-Add-search-functionality-to-Media-Asset-Panel-2ab6d73d3650817b8b95f3450179524f) by [Unito](https://www.unito.io) --------- Co-authored-by: Claude --- .../sidebar/tabs/AssetSidebarTemplate.vue | 2 +- .../sidebar/tabs/AssetsSidebarTab.vue | 25 ++++++++++++- src/locales/en/main.json | 1 + .../composables/useMediaAssetFiltering.ts | 37 +++++++++++++++++++ 4 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 src/platform/assets/composables/useMediaAssetFiltering.ts diff --git a/src/components/sidebar/tabs/AssetSidebarTemplate.vue b/src/components/sidebar/tabs/AssetSidebarTemplate.vue index 6e139f7a6..97f75d13d 100644 --- a/src/components/sidebar/tabs/AssetSidebarTemplate.vue +++ b/src/components/sidebar/tabs/AssetSidebarTemplate.vue @@ -10,7 +10,7 @@ > -
+
diff --git a/src/components/sidebar/tabs/AssetsSidebarTab.vue b/src/components/sidebar/tabs/AssetsSidebarTab.vue index 5be48cbf3..23862e45d 100644 --- a/src/components/sidebar/tabs/AssetsSidebarTab.vue +++ b/src/components/sidebar/tabs/AssetsSidebarTab.vue @@ -39,6 +39,14 @@ {{ $t('sideToolbar.labels.imported') }} {{ $t('sideToolbar.labels.generated') }} + +
+ +