feat: extract reusable TodoListView and add tappable filter screens
This commit is contained in:
40
MindDump/Views/TodoListView.swift
Normal file
40
MindDump/Views/TodoListView.swift
Normal file
@@ -0,0 +1,40 @@
|
||||
import SwiftUI
|
||||
|
||||
struct TodoListView: View {
|
||||
let items: [TodoItem]
|
||||
var showListName: Bool = false
|
||||
var onToggle: (TodoItem) -> Void
|
||||
var onTap: (TodoItem) -> Void
|
||||
var onDelete: ((TodoItem) -> Void)?
|
||||
var onMove: ((TodoItem) -> Void)?
|
||||
|
||||
var body: some View {
|
||||
ForEach(items) { item in
|
||||
TodoRowView(
|
||||
item: item,
|
||||
onToggle: { onToggle(item) },
|
||||
subtitle: showListName ? item.list?.name : nil,
|
||||
onTap: { onTap(item) }
|
||||
)
|
||||
.swipeActions(edge: .leading) {
|
||||
if let onMove {
|
||||
Button {
|
||||
onMove(item)
|
||||
} label: {
|
||||
Label("Verschieben", systemImage: "folder")
|
||||
}
|
||||
.tint(.blue)
|
||||
}
|
||||
}
|
||||
.swipeActions(edge: .trailing) {
|
||||
if let onDelete {
|
||||
Button(role: .destructive) {
|
||||
onDelete(item)
|
||||
} label: {
|
||||
Label("Löschen", systemImage: "trash")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user