95 lines
2.2 KiB
Swift
Raw Normal View History

//
// 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")
}
}