From b7f3304c9b5b278a920c41d42934f7e60f284404 Mon Sep 17 00:00:00 2001 From: Kevin Mullins Date: Thu, 17 Jun 2021 14:18:21 -0500 Subject: [PATCH] Initial Checkin The initial release of the custom library package. --- BuildApiDocs.sh | 23 ++ Documentation/Images/Picker01.png | Bin 0 -> 32042 bytes Documentation/Images/Picker02.png | Bin 0 -> 86988 bytes License.md | 11 + Package.swift | 4 +- README.md | 103 ++++++++- .../SwiftletRadioButton.swift | 48 ++++ .../SwiftletRadioButtonAlignment.swift | 23 ++ .../SwiftletRadioButtonGroup.swift | 101 +++++++++ .../SwiftletRadioButtonPicker.swift | 205 +++++++++++++++++- .../SwiftletRadioButtonPickerTests.swift | 3 +- 11 files changed, 514 insertions(+), 7 deletions(-) create mode 100644 BuildApiDocs.sh create mode 100644 Documentation/Images/Picker01.png create mode 100644 Documentation/Images/Picker02.png create mode 100644 License.md create mode 100644 Sources/SwiftletRadioButtonPicker/SwiftletRadioButton.swift create mode 100644 Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonAlignment.swift create mode 100644 Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonGroup.swift diff --git a/BuildApiDocs.sh b/BuildApiDocs.sh new file mode 100644 index 0000000..e0758ad --- /dev/null +++ b/BuildApiDocs.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# Do the following to make executable and run this script +# chmod +x BuildApiDocs.sh +# sh BuildApiDocs.sh + +# Define macros +PROJECT_NAME="SwiftletRadioButtonPicker" +API_OUTPUT="Documentation/API/" +ROOT_URL="http://appracatappra.com/api/" + +# Make sure the output directory exists +mkdir -p "${API_OUTPUT}" + +# Move to project directory +#cd "${PROJECT_DIR}" + +# Create documentation with Jazzy +jazzy --output "${API_OUTPUT}" --clean --swift-build-tool spm --build-tool-arguments -Xswiftc,-swift-version,-Xswiftc,5 --module ${PROJECT_NAME} --author "Appracatappra, LLC" --root-url "${ROOT_URL}" --documentation=Documentation/*.md + +# Open project directory +# open "${API_OUTPUT}" + diff --git a/Documentation/Images/Picker01.png b/Documentation/Images/Picker01.png new file mode 100644 index 0000000000000000000000000000000000000000..860126b7fc7408c6c9393d415f878892dd61cada GIT binary patch literal 32042 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

I!9n(y zC56V1^F8q)9cD%!N-&t>X0r6yRIL=}M^chOMGq*&-D6|jcCOGIxy@J_ro8f2 z9+1E~d4)+cIm-OdSHtLKCR0#5SM5W%uBd9yQbHr?BH%;na+*=S(NY2@e&3N2xc&Oi zY?KT+z9qiSyy7HR3RjmuJ^7PfidxBHL@G$-qAX+NS|Vt>qIwxlhOa=?(mHOHN^AEs zZU<1TK91!0H@G5&xcerqHmbC9RtR>7JirgbeHDm-PtjG?w46r%GF2KOU09@vs{TI1IC{Upx_DUv_5u?EMjS$?Kyjv{5rF z)17pTcs(`}KB+;@8kDfSBrNSH)Ia+4FY18qw}3XOtAtpDu&;_C$&9jEKRciBD5JH` z(FzsT=xY6|D&2jCs;p(wp$aCMu^s&nmz;4^$V)OFq@0oqryv9{5{h9nNTT13?MQNwR(qlG z(rCHHltMv|*!?8Fq3q%7&_>9x5Q!wYH}0MH4Jo$vio}H&rDxZ<+-Xf(1RfDDX_a+n zQMtGEa}cefSLj9y7&iR|pg7k2HOWN9-6xelMt#^$2C~F@jLU8>t1>u`(S#A>B_fI^ zZmE!>A4Uaqz$nNc!i6H#tc3b2_xX<6bqY+ILz{~-{29M|);m1nu_pd)mOCJ3Y~`y% z>a8{Oii*-n36!-cw2BLSe_^T9W*oMhJD)@Doz;mX z1P%T|`t~g1fSo*Mq}e@*GAuFjzN~GyFY#tmrdJ@%tx8{(>B5)XXy`p4Jub+J;@ zK4oFklbv6mPqOdK@H<2ELigF-W*OBVtwe0G47A(|7;H|;`;I$))KWZ|z4+aDLs&D# zmB<0cwl^NhY1G7vY7C5HV^9IFLV{#tr2 z$TNF4jEUwTmOl}zy%Bx3CXu`2{@OkM{Mu6RU8=N_t%eoGpB^oRpEx%brYLH`l_=%w0yEG+sYNr)TQX?6RKq@IB+Eci zp3@XDwR7$0*#UFfLb!+gd>R|N%FvKX(jfLS z;R+*1$I2lD^TuDKE`0VPQj|sC%zO8Gvh&GK_6NxvQp(k z-hneTgYLqKoZC%x3dBeXkjw(E0NON{nTBmx;cVF;Uc&A3Gn{odJMnY@Ornl*N zQv26C8v}DZi}!Tc13e+BJs7U(VE|oFT^~8p<$}QaO zxko&8huCK*SDp5Sy5}D#`=QJ9Y~5ui5z3?JrtGu9%%1!}$BA zZ=7G_u9gc@)9-7yjyXwcbcQ^y#vW6Vhmd@;dh^f)vBGQXt`a$NuJ-ODVwIP^{oc3| zF-=z^{78l9x>m$mq%7ToThn`X<+XYwk&DuZDrH*jm)o^UT)!J(Sk3>@R(e2~k~zJ} z`#&^mi4lNYZ;c=s=OC9I6LHe+RfQu$t^_bt{lNres+`#Xc-jekR&Gp$gEAG}S-OHi zWAOkQYkRew>3=kqAn>FcN41^Fp25otbpYt~e|2cP)n3uZ*Emv|32fED!9i=5sS&$s zH1|@#*_kYh5nGPBzv%z?b9+ zA@#7i_vuvG4QRCN0W7{UHF<0Hf07<+aGiQzy(8o*klr1a&xofZLVT(XfM9HA$slmN zcnY2%z6Xoa�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 VkIB{8hlCv&^|XvME7k3y{vRo8KX3p5 literal 0 HcmV?d00001 diff --git a/Documentation/Images/Picker02.png b/Documentation/Images/Picker02.png new file mode 100644 index 0000000000000000000000000000000000000000..2afdabad8bfbaa8279d2fafda5389166a1cc8b90 GIT binary patch literal 86988 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 z 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

T!OMN!S; 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 QMgV`LCFLb@#dN&?KhgtLZvX%Q literal 0 HcmV?d00001 diff --git a/License.md b/License.md new file mode 100644 index 0000000..0af1f11 --- /dev/null +++ b/License.md @@ -0,0 +1,11 @@ +# MIT License + +Copyright © 2021 by [Appracatappra, LLC.](http://appracatappra.com) + +-- + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Package.swift b/Package.swift index ab49003..366100c 100644 --- a/Package.swift +++ b/Package.swift @@ -5,6 +5,7 @@ import PackageDescription let package = Package( name: "SwiftletRadioButtonPicker", + platforms: [.iOS(.v14), .macOS(.v11), .tvOS(.v14), .watchOS(.v7)], products: [ // Products define the executables and libraries a package produces, and make them visible to other packages. .library( @@ -20,7 +21,8 @@ let package = Package( // Targets can depend on other targets in this package, and on products in packages this package depends on. .target( name: "SwiftletRadioButtonPicker", - dependencies: []), + dependencies: [], + exclude:["Documentation"]), .testTarget( name: "SwiftletRadioButtonPickerTests", dependencies: ["SwiftletRadioButtonPicker"]), diff --git a/README.md b/README.md index f047b6f..ae70a8b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,102 @@ -# SwiftletRadioButtonPicker +# SwiftletRadioButtonPicker for Swift and SwiftUI -A description of this package. +![](https://img.shields.io/badge/license-MIT-green) ![](https://img.shields.io/badge/maintained%3F-Yes-green) ![](https://img.shields.io/badge/swift-5.4-green) ![](https://img.shields.io/badge/iOS-13.0-red) ![](https://img.shields.io/badge/macOS-10.15-red) ![](https://img.shields.io/badge/tvOS-13.0-red) ![](https://img.shields.io/badge/release-v1.0.0-blue) + +Creates a cross-platform Radio Button Picker that allow the user to select from a small group of options by presenting a list of `SwiftletRadioButton` objects that the user can tap on to select one items from the list. + + +## Installation + +**Swift Package Manager** (Xcode 11 and above) + +1. Select **File** > **Swift Packages** > **Add Package Dependency…** from the **File** menu. +2. Paste `https://github.com/Appracatappra/SwiftletRadioButtonPicker.git` in the dialog box. +3. Follow the Xcode's instruction to complete the installation. + +> Why not CocoaPods, or Carthage, or blank? + +Supporting multiple dependency managers makes maintaining a library exponentially more complicated and time consuming. + +Since, the **Swift Package Manager** is integrated with Xcode 11 (and greater), it's the easiest choice to support going further. + +## Using SwiftletRadioButtonPicker + +The `SwiftletRadioButtonPicker` works best when presenting a very limited number of options to the user. For example: selecting Male or Female. Generally this should be used for six or less options. For more options, you'll be better suited using one of the standard, built-in SwiftUI Picker views. + +### Example + +The following code will create a Picker with four options in iOS: + +```swift +SwiftletRadioButtonPicker(alignment: .grid, columns: 3, selection:"2") + .radioButton(id: "0", name: "Option One") + .radioButton(id: "1", name: "Option Two") + .radioButton(id: "2", name: "Option Three") + .radioButton(id: "3", name: "Option Four") +``` + +Which would display a view like the following: + +![](Documentation/Images/Picker01.png) + +Optionally, you can feed any **Enum** to the `radioButtons` function and the Picker will automatically generate a list of Radio Buttons from the **Enum**. + +### Example + +Given the following **Enum**: + +```swift +/// Defines the format of the barcode to be generated. +public enum BarcodeFormat:String, Codable, Equatable, CaseIterable, Identifiable { + + /// Sepcifies a type 128 barcode. + case code128 = "CICode128BarcodeGenerator" + + /// Sepcifies a type PDF 417 barcode. + case pdf417 = "CIPDF417BarcodeGenerator" + + /// Sepcifies an Aztec type barcode. + case aztec = "CIAztecCodeGenerator" + + /// Sepcifies a QR Code type barcode. + case qrCode = "CIQRCodeGenerator" + + public var id:String { + return rawValue + } + + + /// Sets the enum from the given `String` value. + /// - Parameter name: The `String` name that matches a case from the enum. + /// - Remark: Will default to `code128` if the name cannot be found. + public mutating func fromName(_ name:String) { + switch(name.lowercased()) { + case "code128": + self = .code128 + case "pdf417": + self = .pdf417 + case "aztec": + self = .aztec + case "qrcode": + self = .qrCode + default: + self = .code128 + } + } +} +``` + +And the following code to call the Picker: + +```swift +SwiftletRadioButtonPicker(alignment: .grid, title:"Select barcode format:", columns: 3, selection:"code128") { button in + card.format.fromName(button.id) + store.refreshUI() +} +.radioButtons(from: BarcodeFormat.self) + +``` + +Would create a Picker that looks similar to the following on iOS: + +![](Documentation/Images/Picker02.png) diff --git a/Sources/SwiftletRadioButtonPicker/SwiftletRadioButton.swift b/Sources/SwiftletRadioButtonPicker/SwiftletRadioButton.swift new file mode 100644 index 0000000..095753d --- /dev/null +++ b/Sources/SwiftletRadioButtonPicker/SwiftletRadioButton.swift @@ -0,0 +1,48 @@ +// +// SwiftletRadioButton.swift +// Stuff To Get +// +// Created by Kevin Mullins on 6/16/21. +// + +import Foundation +import SwiftUI + +/// Defines a radio button that can be added to a `SwiftletRadioButtonGroup` for display in a `SwiftletRadioButtonPicker`. +public class SwiftletRadioButton: Identifiable, Equatable, ObservableObject { + // MARK: - Static functions + + /// Defines a function to test and see if two `SwiftletRadioButton` are equal to eachother. + /// - Returns: `true` if equal, else returns false. + public static func == (lhs: SwiftletRadioButton, rhs: SwiftletRadioButton) -> Bool { + return lhs.id == rhs.id + } + + // MARK: - Properties + /// Defines a unique id for the Radio Button. + @Published public var id:String + + /// Defines the display name of the Radio Button. + @Published public var name:String + + /// If `true`, the Radio Button is selected. + @Published public var isSelected:Bool = false + + /// An option tag that can be attached to the Radio Button. + public var tag:Any? = nil + + // MARK: - Initializers + /// Creates a new instance of the Radio Button with the given properties. + /// - Parameters: + /// - id: The button's unique id. + /// - name: The display name of the button. + /// - isSelected: If `true`, the button will be selected. + /// - tag: An optional tag that can be attached to the button. + public init(id:String, name:String, isSelected:Bool = false, tag:Any? = nil) { + // Initialize + self.id = id + self.name = name + self.isSelected = isSelected + self.tag = tag + } +} diff --git a/Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonAlignment.swift b/Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonAlignment.swift new file mode 100644 index 0000000..4ddba34 --- /dev/null +++ b/Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonAlignment.swift @@ -0,0 +1,23 @@ +// +// SwiftletRadioButtonAlignment.swift +// Stuff To Get +// +// Created by Kevin Mullins on 6/16/21. +// + +import Foundation +import SwiftUI + +/** + Defines how the buttons in a ``SwiftletRadionButtonPicker`` will be laid out. + */ +public enum SwiftletRadioButtonAlignment { + /// Arange the buttons horizontally. + case horizontal + + /// Arange the buttons vertically. + case vertical + + /// Arange the buttons in a grid. + case grid +} diff --git a/Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonGroup.swift b/Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonGroup.swift new file mode 100644 index 0000000..6d65292 --- /dev/null +++ b/Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonGroup.swift @@ -0,0 +1,101 @@ +// +// SwiftletRadioButtonGroup.swift +// Stuff To Get +// +// Created by Kevin Mullins on 6/16/21. +// + +import Foundation +import SwiftUI + +/// Contains a collection of `SwiftletRadioButton` objects that will be displayed in a `SwiftletRadioButtonPicker`. The `SwiftletRadioButtonGroup` also includes functins to add and remove button and to ensure that only one button in select at once. +public class SwiftletRadioButtonGroup:ObservableObject { + // MARK: - Properties + /// The collection of `SwiftletRadioButton` objects maintained by this group. + @Published public var buttons:[SwiftletRadioButton] = [] + + // MARK: - Initializers + /// Creates a new instance of the object. + public init() { + + } + + // MARK: - Functions + /// Adds the given `SwiftletRadioButton` to the group. + /// - Parameter button: The `SwiftletRadioButton` to add. + public func add(_ button:SwiftletRadioButton) { + + if button.isSelected { + selectNone() + } + + buttons.append(button) + + ensureSelection() + } + + /// Removes the given `SwiftletRadioButton` from the group. + /// - Parameter item: The `SwiftletRadioButton` to remove. + public func remove(_ item:SwiftletRadioButton) { + var n = 0 + + for button in buttons { + if button == item { + buttons.remove(at: n) + break + } + n += 1 + } + + ensureSelection() + } + + /// Deselects all of the `SwiftletRadioButton` objects in the group. + public func selectNone() { + for button in buttons { + button.isSelected = false + } + } + + /// Ensures that only one `SwiftletRadioButton` is selected in the group. + public func ensureSelection() { + + guard buttons.count > 0 else { + return + } + + for button in buttons { + if button.isSelected { + return + } + } + + buttons[0].isSelected = true + } + + /// Selects the given `SwiftletRadioButton` and deselects all other buttons in the group + /// - Parameter item: The `SwiftletRadioButton` to select. + public func selectButton(_ item:SwiftletRadioButton) { + guard buttons.count > 0 else { + return + } + + selectNone() + + for button in buttons { + if button == item { + button.isSelected = true + refreshUI() + return + } + } + + ensureSelection() + refreshUI() + } + + /// Forces any SwiftUI View this group is attached to to refresh. + func refreshUI() { + objectWillChange.send() + } +} diff --git a/Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonPicker.swift b/Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonPicker.swift index 1a99b17..1435dc3 100644 --- a/Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonPicker.swift +++ b/Sources/SwiftletRadioButtonPicker/SwiftletRadioButtonPicker.swift @@ -1,6 +1,205 @@ -public struct SwiftletRadioButtonPicker { - public private(set) var text = "Hello, World!" +// +// SwiftletRadioButtonPicker.swift +// Stuff To Get +// +// Created by Kevin Mullins on 6/16/21. +// - public init() { +import SwiftUI + +/// Creates a cross-platform Radio Button Picker that allow the user to select from a small group of options by presenting a list of `SwiftletRadioButton` objects that the user can tap on to select one items from the list. +/// +/// The `SwiftletRadioButtonPicker` works best when presenting a very limited number of options to the user. For example: selecting Male or Female. Generally this should be used for six or less options. For more options, you'll be better suited using one ofthe standard, built-in SwiftUI Picker views. +/// +/// ## Example: +/// ```swift +/// SwiftletRadioButtonPicker(alignment: .grid, columns: 3, selection:"2") +/// .radioButton(id: "0", name: "Option One") +/// .radioButton(id: "1", name: "Option Two") +/// .radioButton(id: "2", name: "Option Three") +/// .radioButton(id: "3", name: "Option Four") +/// ``` +public struct SwiftletRadioButtonPicker: View { + // MARK: - Properties + /// Controls how Radio Buttons are laid out inside of the picker. + public var alignment:SwiftletRadioButtonAlignment = .vertical + + /// Defines the title show over the list of Radio Buttons. + public var title:String = "Please select one:" + + /// If `true`, displays a title over the collection of buttons. + public var showTitle:Bool = true + + /// Defines the color the title is displayed in. + public var titleColor:Color = .black + + /// Defines the color of the selector indicator. + public var selectorColor:Color = .black + + /// Defines the size of the selector indicator. + public var selectorSize:Double = 24 + + /// Defines the name of the Symbol displayed when a Radio Button is selected. + public var selectedSymbolName = "largecircle.fill.circle" + + /// Defines the name of the Symbol displayed when a Radio Button is unselected. + public var unselectedSymbolName = "circle" + + /// Details the color the text of the Radio Button is displayed in. + public var textColor:Color = .black + + /// If the `alignment` is `grid`, defines the number of columns displayed in the grid. + public var columns:Int = 2 + + /// Defines the currently selected Radio Button (by its `id`). + public var selection:String = "" + + /// Completion that is called when the Radio Button selection changes. + public var selectionChanged:((SwiftletRadioButton) -> Void)? = nil + + /// The group of `SwiftletRadioButton` objects displayed by this Picker. + @ObservedObject public var buttonGroup:SwiftletRadioButtonGroup = SwiftletRadioButtonGroup() + + /// The definition of the columns displayed when the `alignment` is `grid`. + var items:[GridItem] { + Array(repeating: .init(.adaptive(minimum: 120)), count: columns) + } + + // MARK: - Initializers + public init(alignment:SwiftletRadioButtonAlignment = .vertical, title:String = "Please select one:", showTitle:Bool = true, titleColor:Color = .black, selectorColor:Color = .black, selectorSize:Double = 24, selectedSymbolName:String = "largecircle.fill.circle", unselectedSymbolName:String = "circle", textColor:Color = .black, columns:Int = 2, selection:String = "", selectionChanged:((SwiftletRadioButton) -> Void)? = nil) { + // Initialize + self.alignment = alignment + self.title = title + self.showTitle = showTitle + self.titleColor = titleColor + self.selectorColor = selectorColor + self.selectorSize = selectorSize + self.selectedSymbolName = selectedSymbolName + self.unselectedSymbolName = unselectedSymbolName + self.textColor = textColor + self.columns = columns + self.selection = selection + self.selectionChanged = selectionChanged + } + + // MARK: - View Body + /// The body of the picker. + public var body: some View { + VStack { + if showTitle { + HStack { + Text(title) + .font(.headline) + + Spacer() + } + } + + switch(alignment) { + case .horizontal: + HStack { + ForEach(buttonGroup.buttons) { button in + radioButton(button) + .onTapGesture { + buttonGroup.selectButton(button) + if let selectionChanged = selectionChanged { + selectionChanged(button) + } + } + } + } + .padding([.leading, .bottom, .trailing]) + case .vertical: + VStack(alignment: .leading) { + ForEach(buttonGroup.buttons) { button in + radioButton(button) + .onTapGesture { + buttonGroup.selectButton(button) + if let selectionChanged = selectionChanged { + selectionChanged(button) + } + } + } + } + .padding([.leading, .bottom, .trailing]) + case .grid: + VStack(alignment: .leading) { + LazyVGrid(columns: items) { + ForEach(buttonGroup.buttons) { button in + radioButton(button) + .onTapGesture { + buttonGroup.selectButton(button) + if let selectionChanged = selectionChanged { + selectionChanged(button) + } + } + } + } + } + .padding([.leading, .bottom, .trailing]) + } + } + } + + // MARK: - Functions + @ViewBuilder + /// Generates the individual Radio Button views. + /// - Parameter button: The Radio Button to display + /// - Returns: The View for the `SwiftletRadioButton`. + private func radioButton(_ button:SwiftletRadioButton) -> some View { + HStack { + Image(systemName: (button.isSelected) ? selectedSymbolName : unselectedSymbolName) + .resizable() + .frame(width: selectorSize, height: selectorSize) + + Text(button.name) + + Spacer() + } + } + + /// Adds a Radio Button to the Picker with the given properties + /// - Parameters: + /// - id: The unique id of the button. + /// - name: The display name for the Radio Button. + /// - isSelected: If `true`, this button will be selected. + /// - tag: An optional tag to attach to the button. + /// - Returns: This `SwiftletRadioButtonPicker` so multiple command can be chained. + @discardableResult public func radioButton(id:String, name:String, isSelected:Bool = false, tag:Any? = nil) -> SwiftletRadioButtonPicker { + + // Add new button to collection + let button = SwiftletRadioButton(id: id, name: name, isSelected: isSelected, tag: tag) + buttonGroup.add(button) + + // Return self + return self + } + + /// Adds all of the cases from the given Enum to the Picker and Radio Button options. + /// - Parameter from: The enum type to create the list of options from (in the form `myEnum.self`). + /// - Returns: This `SwiftletRadioButtonPicker` so multiple command can be chained. + @discardableResult public func radioButtons(from enumeration: T.Type) -> SwiftletRadioButtonPicker { + + for value in enumeration.allCases { + let button = SwiftletRadioButton(id: "\(value)", name: "\(value)") + button.isSelected = (button.id == selection) + buttonGroup.add(button) + } + + // Return self + return self + } +} + + +/// Defines a sample version of the `SwiftletRadioButtonPicker` used during design. +struct SwiftletRadioButtonPicker_Previews: PreviewProvider { + /// Returns the sample previews for design. + static var previews: some View { + SwiftletRadioButtonPicker(alignment: .grid, columns: 3, selection:"2") + .radioButton(id: "0", name: "Option One") + .radioButton(id: "1", name: "Option Two") + .radioButton(id: "2", name: "Option Three") + .radioButton(id: "3", name: "Option Four") } } diff --git a/Tests/SwiftletRadioButtonPickerTests/SwiftletRadioButtonPickerTests.swift b/Tests/SwiftletRadioButtonPickerTests/SwiftletRadioButtonPickerTests.swift index fd157bb..fe58b0a 100644 --- a/Tests/SwiftletRadioButtonPickerTests/SwiftletRadioButtonPickerTests.swift +++ b/Tests/SwiftletRadioButtonPickerTests/SwiftletRadioButtonPickerTests.swift @@ -6,6 +6,7 @@ final class SwiftletRadioButtonPickerTests: XCTestCase { // This is an example of a functional test case. // Use XCTAssert and related functions to verify your tests produce the correct // results. - XCTAssertEqual(SwiftletRadioButtonPicker().text, "Hello, World!") + let button = SwiftletRadioButton(id: "0", name: "Hello, World!") + XCTAssertEqual(button.name, "Hello, World!") } }