diff --git a/src/renderer/components/ft-element-list/ft-element-list.js b/src/renderer/components/ft-element-list/ft-element-list.js index 642b928f65748..c505a915f0b50 100644 --- a/src/renderer/components/ft-element-list/ft-element-list.js +++ b/src/renderer/components/ft-element-list/ft-element-list.js @@ -33,7 +33,12 @@ export default defineComponent({ hideForbiddenTitles: { type: Boolean, default: true - } + }, + searchQueryText: { + type: String, + required: false, + default: '', + }, }, computed: { listType: function () { diff --git a/src/renderer/components/ft-element-list/ft-element-list.vue b/src/renderer/components/ft-element-list/ft-element-list.vue index 8b0410a570baf..79eaffebb901f 100644 --- a/src/renderer/components/ft-element-list/ft-element-list.vue +++ b/src/renderer/components/ft-element-list/ft-element-list.vue @@ -13,6 +13,7 @@ :show-video-with-last-viewed-playlist="showVideoWithLastViewedPlaylist" :use-channels-hidden-preference="useChannelsHiddenPreference" :hide-forbidden-titles="hideForbiddenTitles" + :search-query-text="searchQueryText" /> diff --git a/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.js b/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.js index 939c949d16342..32a4012373b9e 100644 --- a/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.js +++ b/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.js @@ -47,6 +47,11 @@ export default defineComponent({ type: Boolean, default: true }, + searchQueryText: { + type: String, + required: false, + default: '', + }, }, data: function () { return { diff --git a/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.vue b/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.vue index 654d6bbde5aa8..c5f734c937696 100644 --- a/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.vue +++ b/src/renderer/components/ft-list-lazy-wrapper/ft-list-lazy-wrapper.vue @@ -28,6 +28,7 @@ v-else-if="finalDataType === 'playlist'" :appearance="appearance" :data="data" + :search-query-text="searchQueryText" /> { if (typeof (playlist.playlistName) !== 'string') { return false } + if (this.doSearchPlaylistsWithMatchingVideos) { + if (playlist.videos.some((v) => v.title.toLowerCase().includes(this.processedQuery))) { + return true + } + } + return playlist.playlistName.toLowerCase().includes(this.processedQuery) }) }, diff --git a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.vue b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.vue index e169fd0156f1d..92dd088056b78 100644 --- a/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.vue +++ b/src/renderer/components/ft-playlist-add-video-prompt/ft-playlist-add-video-prompt.vue @@ -12,23 +12,37 @@ playlistCount: selectedPlaylistCount, }) }}

- - +
+ +
+
+ + +
0) { + // Only enable search video mode when viewing non empty playlists + this.searchVideoMode = this.searchVideoModeEnabled + this.query = this.searchQueryText + } + this.updateQueryDebounce = debounce(this.updateQuery, 500) }, methods: { diff --git a/src/renderer/components/playlist-info/playlist-info.vue b/src/renderer/components/playlist-info/playlist-info.vue index 4f25a297a7754..56a76742a5aca 100644 --- a/src/renderer/components/playlist-info/playlist-info.vue +++ b/src/renderer/components/playlist-info/playlist-info.vue @@ -108,7 +108,7 @@
- - + class="searchInputsRow" + > + +
+
+ + +
diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index 24bb284dee38f..60f91e35637c6 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -143,7 +143,8 @@ User Playlists: it listed here You have no playlists. Click on the create new playlist button to create a new one.: You have no playlists. Click on the create new playlist button to create a new one. Empty Search Message: There are no videos in this playlist that matches your search - Search bar placeholder: Search in Playlist + Search bar placeholder: Search for Playlists + Playlists with Matching Videos: Playlists with Matching Videos This playlist currently has no videos.: This playlist currently has no videos.