import SwiftUI struct FolderOnDiskPropertyView: View { let title: LocalizedStringKey @Binding var folder: String let footer: LocalizedStringKey let update: (URL) -> Void init(title: LocalizedStringKey, folder: Binding, footer: LocalizedStringKey, update: @escaping (URL) -> Void) { self.title = title self._folder = folder self.footer = footer self.update = update } var body: some View { GenericPropertyView(title: title, footer: footer) { HStack(alignment: .firstTextBaseline) { Text(folder) Spacer() Button("Select") { guard let url = openFolderSelectionPanel() else { return } DispatchQueue.main.async { update(url) } } } } } private func openFolderSelectionPanel() -> URL? { let panel = NSOpenPanel() // Sets up so user can only select a single directory panel.canChooseFiles = false panel.canChooseDirectories = true panel.allowsMultipleSelection = false panel.showsHiddenFiles = false panel.title = "Select directory" //panel.prompt = "Select Directory" let response = panel.runModal() guard response == .OK else { return nil } guard let url = panel.url else { return nil } return url } }