LabeledTextField.swift 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //
  2. // LabeledTextField.swift
  3. // LoopKitUI
  4. //
  5. // Created by Nathaniel Hamming on 2020-02-27.
  6. // Copyright © 2020 LoopKit Authors. All rights reserved.
  7. //
  8. import SwiftUI
  9. public struct LabeledTextField: View {
  10. var label: String
  11. var placeholder: String
  12. @Binding var value: String
  13. public init(label: String, placeholder: String = "", value: Binding<String>) {
  14. self.label = label
  15. self.placeholder = placeholder
  16. _value = value
  17. }
  18. public var body: some View {
  19. GeometryReader { geometry in
  20. HStack(alignment: .firstTextBaseline, spacing: 0) {
  21. Text(self.label)
  22. .foregroundColor(.primary)
  23. .frame(maxWidth: geometry.size.width/2, alignment: .leading)
  24. Spacer()
  25. TextField(self.placeholder, text: self.$value)
  26. .foregroundColor(.secondary)
  27. .multilineTextAlignment(.trailing)
  28. .keyboardType(.alphabet)
  29. .frame(maxWidth: geometry.size.width/2, alignment: .trailing)
  30. }
  31. }
  32. }
  33. }
  34. struct LabelTextField_Previews: PreviewProvider {
  35. static var previews: some View {
  36. return Group {
  37. PreviewWrapper()
  38. }
  39. }
  40. struct PreviewWrapper: View {
  41. @State(initialValue: "Overnight") var value: String
  42. var body: some View {
  43. LabeledTextField(label: "Name", placeholder: "Schedule Name", value: $value)
  44. }
  45. }
  46. }