52 lines
1.1 KiB
Swift
52 lines
1.1 KiB
Swift
//
|
|
// TaskList.swift
|
|
// Subtasks
|
|
//
|
|
|
|
import Adwaita
|
|
|
|
struct TaskList: View {
|
|
|
|
@Binding var tasks: [Task]
|
|
@State private var showAddDialog = false
|
|
|
|
var view: Body {
|
|
ScrollView {
|
|
list
|
|
}
|
|
.topToolbar {
|
|
HeaderBar.start {
|
|
Button(icon: .default(icon: .listAdd)) {
|
|
showAddDialog = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var list: AnyView {
|
|
List(tasks, selection: nil) { task in
|
|
taskRow(task: task)
|
|
}
|
|
.boxedList()
|
|
.valign(.start)
|
|
.padding(20)
|
|
.frame(maxWidth: 500)
|
|
}
|
|
|
|
func taskRow(task: Task) -> AnyView {
|
|
ActionRow()
|
|
.title(task.label)
|
|
.prefix {
|
|
CheckButton()
|
|
.active($tasks[id: task.id, default: .init(label: "")].done)
|
|
.selectionMode()
|
|
.valign(.center)
|
|
}
|
|
.suffix {
|
|
ButtonContent()
|
|
.iconName(Icon.default(icon: .goNext).string)
|
|
}
|
|
}
|
|
|
|
}
|