54 lines
1.3 KiB
Swift
54 lines
1.3 KiB
Swift
import SwiftUI
|
|
|
|
struct FilesPropertyView: View {
|
|
|
|
let title: LocalizedStringKey
|
|
|
|
let footer: LocalizedStringKey
|
|
|
|
@Binding
|
|
var selectedFiles: [FileResource]
|
|
|
|
let allowedType: FileTypeCategory?
|
|
|
|
init(
|
|
title: LocalizedStringKey,
|
|
footer: LocalizedStringKey,
|
|
selectedFiles: Binding<[FileResource]>,
|
|
allowedType: FileTypeCategory? = nil
|
|
) {
|
|
self.title = title
|
|
self.footer = footer
|
|
self._selectedFiles = selectedFiles
|
|
self.allowedType = allowedType
|
|
}
|
|
|
|
private var selectedText: String {
|
|
guard !selectedFiles.isEmpty else {
|
|
return "No file selected"
|
|
}
|
|
guard selectedFiles.count == 1 else {
|
|
return "\(selectedFiles.count) files selected"
|
|
}
|
|
return selectedFiles[0].identifier
|
|
}
|
|
|
|
@State
|
|
private var showFileSelectionSheet = false
|
|
|
|
var body: some View {
|
|
GenericPropertyView(title: title, footer: footer) {
|
|
HStack {
|
|
Text(selectedText)
|
|
Spacer()
|
|
Button("Select") {
|
|
showFileSelectionSheet = true
|
|
}
|
|
}
|
|
}
|
|
.sheet(isPresented: $showFileSelectionSheet) {
|
|
MultiFileSelectionView(selectedFiles: $selectedFiles, allowedType: allowedType)
|
|
}
|
|
}
|
|
}
|