From ee8703ea8832cf8d2f1d4936d3c919e6587892e4 Mon Sep 17 00:00:00 2001 From: Kamaal Farah Date: Tue, 28 Nov 2023 22:12:46 +0100 Subject: [PATCH] Adding titled picker field --- Sources/KamaalUI/Views/KTitledPicker.swift | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Sources/KamaalUI/Views/KTitledPicker.swift diff --git a/Sources/KamaalUI/Views/KTitledPicker.swift b/Sources/KamaalUI/Views/KTitledPicker.swift new file mode 100644 index 0000000..8c811f6 --- /dev/null +++ b/Sources/KamaalUI/Views/KTitledPicker.swift @@ -0,0 +1,48 @@ +// +// KTitledPicker.swift +// +// +// Created by Kamaal M Farah on 28/11/2023. +// + +import SwiftUI + +public struct KTitledPicker: View { + @Binding var selection: Item + + let title: String + let items: [Item] + let pickerItemView: (_ item: Item) -> PickerItemView + + public init( + selection: Binding, + title: String, + items: [Item], + @ViewBuilder pickerItemView: @escaping (_ item: Item) -> PickerItemView + ) { + self._selection = selection + self.title = title + self.items = items + self.pickerItemView = pickerItemView + } + + public var body: some View { + KTitledView(title: self.title) { + Picker("", selection: self.$selection) { + ForEach(self.items, id: \.self) { item in + self.pickerItemView(item) + .tag(item) + } + } + .labelsHidden() + } + } +} + +struct KTitledPicker_Previews: PreviewProvider { + static var previews: some View { + KTitledPicker(selection: .constant(1), title: "One Or Two", items: [1, 2]) { item in + Text("\(item)") + } + } +}