USB-Meter / USB Meter / Views / ChargedDevices / Components / ChargedDeviceEditorScaffoldView.swift
Newer Older
47 lines | 1.142kb
Bogdan Timofte authored a month ago
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
}