// // FolderItem.swift // Browse // // Created by Javier Cicchelli on 02/12/2022. // Copyright © 2022 Röck+Cöde. All rights reserved. // import SwiftUI struct FolderItem: View { // MARK: Properties let item: Model let delete: ItemIdClosure // MARK: Body var body: some View { HStack(spacing: 16) { Image.folder .icon(size: 32) .foregroundColor(.red) Text(item.name) .itemName() Image.chevronRight .icon(size: 16) .foregroundColor(.secondary) .font(.headline) } .padding(.vertical, 8) .swipeActions( edge: .trailing, allowsFullSwipe: true ) { Button { delete(item.id) } label: { Label { Text( "browse.swipe_action.delete_item.text", bundle: .module ) } icon: { Image.trash } } .tint(.red) } } } // MARK: - Image+Constants private extension Image { static let folder = Image(systemName: "folder.fill") static let chevronRight = Image(systemName: "chevron.right") } // MARK: - Previews struct BrowseItem_Previews: PreviewProvider { static var previews: some View { FolderItem(item: Folder( id: "1234567890", name: "Some folder name goes in here..." )) { _ in // delete closure with item id. } .previewDisplayName("Folder item") FolderItem(item: Folder( id: "1234567890", name: "Some very, extremely long folder name goes in here..." )) { _ in // delete closire with item id. } .previewDisplayName("Folder item with long name") } }