Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Experiments/Experiments/DefaultFeatureFlagService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ public struct DefaultFeatureFlagService: FeatureFlagService {
return false
case .generateAllVariations:
return buildConfig == .localDeveloper || buildConfig == .alpha
case .productsBulkEditing:
return buildConfig == .localDeveloper || buildConfig == .alpha
default:
return true
}
Expand Down
4 changes: 4 additions & 0 deletions Experiments/Experiments/FeatureFlag.swift
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,8 @@ public enum FeatureFlag: Int {
/// Allows merchants to create all variations from a single button
///
case generateAllVariations

/// Bulk editing of status and price in products list
///
case productsBulkEditing
}
6 changes: 6 additions & 0 deletions WooCommerce/Classes/Extensions/UIImage+Woo.swift
Original file line number Diff line number Diff line change
Expand Up @@ -704,6 +704,12 @@ extension UIImage {
return ellipsisImage.imageWithTintColor(tintColor)!
}

/// Select multiple items icon
///
static var multiSelectIcon: UIImage {
return UIImage(named: "icon-multiselect")!
}

/// Payment celebration
///
static var celebrationImage: UIImage {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,10 @@ private extension ProductsViewController {
}
coordinatingController.start()
}

@objc func startBulkEditing() {
// TODO-8517: implement selection state
}
}

// MARK: - View Configuration
Expand Down Expand Up @@ -319,6 +323,25 @@ private extension ProductsViewController {
}()
rightBarButtonItems.append(searchItem)

if ServiceLocator.featureFlagService.isFeatureFlagEnabled(.productsBulkEditing) {
let bulkEditItem: UIBarButtonItem = {
let button = UIBarButtonItem(image: .multiSelectIcon,
style: .plain,
target: self,
action: #selector(startBulkEditing))
button.accessibilityTraits = .button
button.accessibilityLabel = NSLocalizedString("Edit products",
comment: "Action to start bulk editing of products")
button.accessibilityHint = NSLocalizedString(
"Edit status or price for multiple products at once",
comment: "VoiceOver accessibility hint, informing the user the button can be used to bulk edit products"
)

return button
}()
rightBarButtonItems.append(bulkEditItem)
}

navigationItem.rightBarButtonItems = rightBarButtonItems
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"images" : [
{
"filename" : "icon-multiselect.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}
Binary file not shown.
4 changes: 4 additions & 0 deletions WooCommerce/WooCommerceTests/Extensions/IconsTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,10 @@ final class IconsTests: XCTestCase {
XCTAssertNotNil(UIImage.moreImage)
}

func test_multiSelectIcon_is_not_nil() {
XCTAssertNotNil(UIImage.multiSelectIcon)
}

func test_multipleUsers_image_is_not_nil() {
XCTAssertNotNil(UIImage.multipleUsersImage)
}
Expand Down