AlarmStepperSection.swift 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //
  2. // AlarmStepperSection.swift
  3. // LoopFollow
  4. //
  5. // Created by Jonas Björkert on 2025-05-10.
  6. // Copyright © 2025 Jon Fawcett. All rights reserved.
  7. //
  8. import SwiftUI
  9. struct AlarmStepperSection: View {
  10. let header: String?
  11. let footer: String?
  12. let title: String
  13. let range: ClosedRange<Double>
  14. let step: Double
  15. let unitLabel: String
  16. @Binding var value: Double
  17. init(
  18. header: String? = nil,
  19. footer: String? = nil,
  20. title: String,
  21. range: ClosedRange<Double>,
  22. step: Double,
  23. unitLabel: String,
  24. value: Binding<Double>
  25. ) {
  26. self.header = header
  27. self.footer = footer
  28. self.title = title
  29. self.range = range
  30. self.step = step
  31. self.unitLabel = unitLabel
  32. self._value = value
  33. }
  34. /**
  35. header: Text(title),
  36. footer: Text("Set \(title), \(Int(range.lowerBound))–\(Int(range.upperBound)) \(unitLabel)")
  37. **/
  38. var body: some View {
  39. Section(
  40. header: header.map(Text.init),
  41. footer: footer.map(Text.init)
  42. ) {
  43. Stepper(
  44. "\(title): \(Int(value)) \(unitLabel)",
  45. value: $value,
  46. in: range,
  47. step: step
  48. )
  49. }
  50. }
  51. }