adwaita-swift/Tests/FlowBoxDemo.swift

50 lines
1.3 KiB
Swift

//
// ListDemo.swift
// Adwaita
//
// Created by david-swift on 01.01.24.
//
// swiftlint:disable missing_docs no_magic_numbers
import Adwaita
import Foundation
struct FlowBoxDemo: View {
@State private var items: [ListDemo.Element] = []
@State private var selectedItem = ""
var view: Body {
HStack {
Button("Add Element") {
let element = ListDemo.Element(id: UUID().uuidString)
items.append(element)
selectedItem = element.id
}
Button("Delete Selected Element") {
let index = items.firstIndex { $0.id == selectedItem }
items = items.filter { $0.id != selectedItem }
selectedItem = items[safe: index]?.id ?? items[safe: index ?? 0 - 1]?.id ?? items.first?.id ?? ""
}
}
.padding()
.style("linked")
.halign(.center)
if !items.isEmpty {
FlowBox(items, selection: $selectedItem) { item in
HStack {
Text(.init("\(item.id)".prefix(5)))
.hexpand()
}
.padding()
}
.valign(.center)
.padding()
}
}
}
// swiftlint:enable missing_docs no_magic_numbers