// // FolderItem.swift // Browse // // Created by Javier Cicchelli on 02/12/2022. // Copyright © 2022 Röck+Cöde. All rights reserved. // import DataModels import SwiftUI struct FolderItem: View { // MARK: Properties let item: FileSystemItem let select: ActionClosure let delete: ActionClosure // MARK: Body var body: some View { Button { select() } label: { 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() } 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..." )) { // select closure. } delete: { // delete closure. } .previewDisplayName("Folder item") FolderItem(item: Folder( id: "1234567890", name: "Some very, extremely long folder name goes in here..." )) { // select closure. } delete: { // delete closure. } .previewDisplayName("Folder item with long name") } }