Skip to content

Commit 70e9d5d

Browse files
authored
Merge pull request #5729 from wikimedia/search-design-review
Search design review
2 parents a5f3e10 + 61a8b2d commit 70e9d5d

File tree

3 files changed

+30
-15
lines changed

3 files changed

+30
-15
lines changed

WMFComponents/Sources/WMFComponents/Extensions/Navigation Bar/WMFNavigationBarConfiguring.swift

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -249,20 +249,26 @@ public extension WMFNavigationBarConfiguring where Self: UIViewController {
249249
if let searchButtonConfig {
250250
var rightBarButtonItems: [UIBarButtonItem] = []
251251

252-
let image = WMFSFSymbolIcon.for(symbol: .magnifyingGlass)
253-
let searchButton = UIBarButtonItem(image: image, style: .plain, target: searchButtonConfig.target, action: searchButtonConfig.action)
254-
rightBarButtonItems.append(searchButton)
252+
if let profileButtonConfig {
253+
let profileImage = profileButtonImage(theme: WMFAppEnvironment.current.theme, needsBadge: profileButtonConfig.needsBadge)
254+
let profileButton = UIBarButtonItem(image: profileImage, style: .plain, target: profileButtonConfig.target, action: profileButtonConfig.action)
255+
profileButton.accessibilityLabel = profileButtonAccessibilityStrings(config: profileButtonConfig)
256+
profileButton.accessibilityIdentifier = profileButtonAccessibilityID
257+
rightBarButtonItems.append(profileButton)
258+
}
255259

256260
if let tabsButtonConfig {
257261
let tabsImage = WMFSFSymbolIcon.for(symbol: .tabsIcon)
258262
let tabsButton = UIBarButtonItem(image: tabsImage, style: .plain, target: tabsButtonConfig.target, action: tabsButtonConfig.action)
263+
tabsButton.accessibilityLabel = tabsButtonConfig.accessibilityLabel
264+
tabsButton.accessibilityHint = tabsButtonConfig.accessibilityHint
259265
rightBarButtonItems.append(tabsButton)
260-
261-
if let leadingBarButtonItem = tabsButtonConfig.leadingBarButtonItem {
262-
rightBarButtonItems.append(leadingBarButtonItem)
263-
}
264266
}
265267

268+
let image = WMFSFSymbolIcon.for(symbol: .magnifyingGlass)
269+
let searchButton = UIBarButtonItem(image: image, style: .plain, target: searchButtonConfig.target, action: searchButtonConfig.action)
270+
rightBarButtonItems.append(searchButton)
271+
266272
if let leadingBarButtonItem = searchButtonConfig.leadingBarButtonItem {
267273
navigationItem.leftBarButtonItem = leadingBarButtonItem
268274
}

Wikipedia/Code/ArticleViewController.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -773,10 +773,9 @@ class ArticleViewController: ThemeableViewController, HintPresenting, UIScrollVi
773773

774774
var titleConfig: WMFNavigationBarTitleConfig = WMFNavigationBarTitleConfig(title: articleURL.wmf_title ?? "", customView: wButton, alignment: .centerCompact)
775775

776-
777776
let backButtonConfig = WMFNavigationBarBackButtonConfig(needsCustomTruncateBackButtonTitle: true)
778777

779-
var profileButtonConfig: WMFNavigationBarProfileButtonConfig? = nil
778+
var profileButtonConfig = profileButtonConfig(target: self, action: #selector(userDidTapProfile), dataStore: dataStore, yirDataController: yirDataController, leadingBarButtonItem: nil)
780779

781780
let tabsButtonConfig = tabsButtonConfig(target: self, action: #selector(userDidTapTabs), dataStore: dataStore)
782781

Wikipedia/Code/SearchViewController.swift

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -258,10 +258,11 @@ class SearchViewController: ThemeableViewController, WMFNavigationBarConfiguring
258258

259259
private func configureNavigationBar() {
260260

261-
let title = customTitle ?? CommonStrings.searchTitle
261+
var title = customTitle ?? CommonStrings.searchTitle
262262

263263
// check if it comes from article vc
264264
let isPushed = (navigationController?.viewControllers.first !== self)
265+
265266
var alignment: WMFNavigationBarTitleConfig.Alignment = (needsCenteredTitle || isPushed) ? .centerCompact : .leadingCompact
266267
extendedLayoutIncludesOpaqueBars = false
267268
if #available(iOS 18, *) {
@@ -270,21 +271,18 @@ class SearchViewController: ThemeableViewController, WMFNavigationBarConfiguring
270271
extendedLayoutIncludesOpaqueBars = true
271272
}
272273
}
273-
let wButton = UIButton(type: .custom)
274-
wButton.setImage(UIImage(named: "W"), for: .normal)
275274

276275
var titleConfig: WMFNavigationBarTitleConfig
277276
titleConfig = WMFNavigationBarTitleConfig(title: title, customView: nil, alignment: alignment)
278277

279-
280278
if #available(iOS 18, *) {
281279
if UIDevice.current.userInterfaceIdiom == .pad && traitCollection.horizontalSizeClass == .regular {
282280
titleConfig = WMFNavigationBarTitleConfig(title: CommonStrings.searchTitle, customView: nil, alignment: .leadingLarge)
283281
}
284282
}
285283

286-
let profileButtonConfig: WMFNavigationBarProfileButtonConfig?
287-
let tabsButtonConfig: WMFNavigationBarTabsButtonConfig?
284+
var profileButtonConfig: WMFNavigationBarProfileButtonConfig?
285+
var tabsButtonConfig: WMFNavigationBarTabsButtonConfig?
288286
if let dataStore {
289287
profileButtonConfig = self.profileButtonConfig(target: self, action: #selector(userDidTapProfile), dataStore: dataStore, yirDataController: yirDataController, leadingBarButtonItem: nil)
290288
let leadingItem: UIBarButtonItem? = (currentEmbeddedViewController === historyViewController) ? deleteButton : nil
@@ -294,9 +292,21 @@ class SearchViewController: ThemeableViewController, WMFNavigationBarConfiguring
294292
tabsButtonConfig = nil
295293
}
296294

295+
// If in article view, except in iPad, we only keep the clear button
296+
var isPushedWithoutTabsAndProfile = false
297+
if isPushed && !(UIDevice.current.userInterfaceIdiom == .pad && traitCollection.horizontalSizeClass == .regular) {
298+
profileButtonConfig = nil
299+
tabsButtonConfig = nil
300+
isPushedWithoutTabsAndProfile = true
301+
}
302+
297303
let searchBarConfig = WMFNavigationBarSearchConfig(searchResultsController: nil, searchControllerDelegate: self, searchResultsUpdater: self, searchBarDelegate: self, searchBarPlaceholder: CommonStrings.searchBarPlaceholder, showsScopeBar: false, scopeButtonTitles: nil)
298304

299305
configureNavigationBar(titleConfig: titleConfig, backButtonConfig: nil, closeButtonConfig: nil, profileButtonConfig: profileButtonConfig, tabsButtonConfig: tabsButtonConfig, searchBarConfig: searchBarConfig, hideNavigationBarOnScroll: !presentingSearchResults)
306+
307+
if isPushedWithoutTabsAndProfile && currentEmbeddedViewController === historyViewController {
308+
navigationItem.rightBarButtonItems = [deleteButton]
309+
}
300310
}
301311

302312
@MainActor

0 commit comments

Comments
 (0)