adwaita-swift/Sources/Demo/FlowBoxDemo.swift
david-swift d0d7d2b6d3
Some checks are pending
Deploy Docs / publish (push) Waiting to run
SwiftLint / SwiftLint (push) Waiting to run
Use the new wrapModifier for simple modifiers
2026-02-03 00:07:26 +01:00

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 ?? ""
}
}
.modifyContent(VStack.self) { $0.linked() }
.padding()
.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