From 281f5e0f13a7623f7299112e17543ae2a2967dac Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Fri, 17 Apr 2026 05:13:45 +0200 Subject: [PATCH] Hide tvOS search type/filters until query entered Match iOS behavior by gating the type switcher and filters menus on an active query, and drop the .caption font so they render with the same default button font as View Options. --- .../Views/Instances/InstanceBrowseView.swift | 28 +++++++++---------- Yattee/Views/Search/SearchView.swift | 28 +++++++++---------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/Yattee/Views/Instances/InstanceBrowseView.swift b/Yattee/Views/Instances/InstanceBrowseView.swift index 5de63437..31394c92 100644 --- a/Yattee/Views/Instances/InstanceBrowseView.swift +++ b/Yattee/Views/Instances/InstanceBrowseView.swift @@ -126,19 +126,21 @@ struct InstanceBrowseView: View { Task { await searchViewModel?.search(query: searchText) } } - // Type filter - filterMenu( - title: (searchViewModel?.filters.type ?? .video).title, - selection: Binding( - get: { searchViewModel?.filters.type ?? .video }, - set: { searchViewModel?.filters.type = $0 } - ), - options: SearchContentType.allCases, - labelForOption: { $0.title } - ) + if isInSearchMode { + // Type filter + filterMenu( + title: (searchViewModel?.filters.type ?? .video).title, + selection: Binding( + get: { searchViewModel?.filters.type ?? .video }, + set: { searchViewModel?.filters.type = $0 } + ), + options: SearchContentType.allCases, + labelForOption: { $0.title } + ) - // Combined search filters menu - tvOSFiltersMenu + // Combined search filters menu + tvOSFiltersMenu + } Button { showViewOptions = true @@ -543,7 +545,6 @@ struct InstanceBrowseView: View { } } label: { Text(title) - .font(.caption) } } @@ -607,7 +608,6 @@ struct InstanceBrowseView: View { .disabled(searchViewModel?.filters.isDefault ?? true) } label: { Label(String(localized: "search.filters"), systemImage: "line.3.horizontal.decrease") - .font(.caption) } } #else diff --git a/Yattee/Views/Search/SearchView.swift b/Yattee/Views/Search/SearchView.swift index 538f39ec..bd8b77d8 100644 --- a/Yattee/Views/Search/SearchView.swift +++ b/Yattee/Views/Search/SearchView.swift @@ -192,19 +192,21 @@ struct SearchView: View { Task { await searchViewModel?.search(query: searchTextBinding.wrappedValue) } } - // Type filter - filterMenu( - title: (searchViewModel?.filters.type ?? .video).title, - selection: Binding( - get: { searchViewModel?.filters.type ?? .video }, - set: { searchViewModel?.filters.type = $0 } - ), - options: SearchContentType.allCases, - labelForOption: { $0.title } - ) + if !searchTextBinding.wrappedValue.isEmpty { + // Type filter + filterMenu( + title: (searchViewModel?.filters.type ?? .video).title, + selection: Binding( + get: { searchViewModel?.filters.type ?? .video }, + set: { searchViewModel?.filters.type = $0 } + ), + options: SearchContentType.allCases, + labelForOption: { $0.title } + ) - // Combined search filters menu - tvOSFiltersMenu + // Combined search filters menu + tvOSFiltersMenu + } Button { showViewOptions = true @@ -458,7 +460,6 @@ struct SearchView: View { } } label: { Text(title) - .font(.caption) } } @@ -530,7 +531,6 @@ struct SearchView: View { .disabled(searchViewModel?.filters.isDefault ?? true) } label: { Label(String(localized: "search.filters"), systemImage: "line.3.horizontal.decrease") - .font(.caption) } } #endif