| 1 |
// |
|
| 2 |
// ChargedDeviceEditorScaffoldView.swift |
|
| 3 |
// USB Meter |
|
| 4 |
// |
|
| 5 |
// Created by Codex on 22/04/2026. |
|
| 6 |
// |
|
| 7 | ||
| 8 |
import SwiftUI |
|
| 9 | ||
| 10 |
struct ChargedDeviceEditorScaffoldView<Content: View>: View {
|
|
| 11 |
@Environment(\.dismiss) private var dismiss |
|
| 12 | ||
| 13 |
let title: String |
|
| 14 |
let saveButtonTitle: String |
|
| 15 |
let canSave: Bool |
|
| 16 |
let standalone: Bool |
|
| 17 |
let save: () -> Void |
|
| 18 |
@ViewBuilder let content: () -> Content |
|
| 19 | ||
| 20 |
var body: some View {
|
|
| 21 |
if standalone {
|
|
| 22 |
NavigationView { formContent }
|
|
| 23 |
.navigationViewStyle(StackNavigationViewStyle()) |
|
| 24 |
} else {
|
|
| 25 |
formContent |
|
| 26 |
} |
|
| 27 |
} |
|
| 28 | ||
| 29 |
private var formContent: some View {
|
|
| 30 |
Form {
|
|
| 31 |
content() |
|
| 32 |
} |
|
| 33 |
.navigationTitle(title) |
|
| 34 |
.navigationBarTitleDisplayMode(.inline) |
|
| 35 |
.toolbar {
|
|
| 36 |
ToolbarItem(placement: .cancellationAction) {
|
|
| 37 |
Button("Cancel") {
|
|
| 38 |
dismiss() |
|
| 39 |
} |
|
| 40 |
} |
|
| 41 |
ToolbarItem(placement: .confirmationAction) {
|
|
| 42 |
Button(saveButtonTitle, action: save) |
|
| 43 |
.disabled(!canSave) |
|
| 44 |
} |
|
| 45 |
} |
|
| 46 |
} |
|
| 47 |
} |