85 lines
2.0 KiB
Swift
85 lines
2.0 KiB
Swift
//
|
|
// 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: FileSystemItem
|
|
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")
|
|
}
|
|
}
|