ChWebsiteApp/CHDataManagement/Views/Posts/LabelEditingView.swift
2025-05-02 22:11:43 +02:00

66 lines
1.6 KiB
Swift

import SwiftUI
struct LabelEditingView: View {
@Binding
var label: ContentLabel
@State
private var showIconPicker: Bool = false
let scale: CGFloat
init(label: Binding<ContentLabel>, scale: CGFloat = 1.0) {
self._label = label
self.scale = scale
}
var body: some View {
HStack {
Button(action: { showIconPicker = true }) {
PageIconView(icon: label.icon)
.frame(maxWidth: 16, maxHeight: 16)
.scaleEffect(scale)
.contentShape(Rectangle())
}
.buttonStyle(.plain)
TextField("", text: $label.value)
.textFieldStyle(.plain)
}
.sheet(isPresented: $showIconPicker) {
LabelIconSelectionView(selected: $label.icon)
}
}
}
private struct LabelIconSelectionView: View {
@Environment(\.dismiss)
var dismiss
@Binding
var selected: PageIcon
var body: some View {
VStack {
List(PageIcon.allCases, id: \.rawValue) { icon in
HStack {
Image(systemSymbol: selected == icon ? .checkmarkCircleFill : .circle)
PageIconView(icon: icon)
.frame(maxWidth: 20, maxHeight: 20)
Text(icon.name)
Spacer()
}
.contentShape(Rectangle())
.onTapGesture {
selected = icon
dismiss()
}
}.frame(minHeight: 300)
Button("Done") {
dismiss()
}
}.padding()
}
}