I found a solution, I moved the .draggable modifier to the Label of the DisclosureGroup:
struct FolderRow: View {
@Environment(\.modelContext) private var context
var folder: Folder
@State private var isExpanded: Bool = true
var body: some View {
DisclosureGroup(isExpanded: $isExpanded) {
// Subfolders
ForEach(folder.subfolders) { subfolder in
FolderRow(folder: subfolder)
}
// Entries (leaf nodes)
ForEach(folder.entries) { entry in
NavigationLink(destination: EntryDetail(entry: entry)) {
EntryRow(entry: entry)
}
.draggable(entry.name)
}
} label: {
Label(folder.name, systemImage: "folder")
.draggable(folder.name) // <<<==== MOVE TO HERE
}
.dropDestination(for: String.self) { names, _ in
return handleDrop(of: names)
}
}
}
Topic:
UI Frameworks
SubTopic:
SwiftUI