Skip to content

Commit 6fbaf3f

Browse files
Merge pull request #19 from hitendra-gofynd/master
Add custom item spacing support for checkbox and radio buttons
2 parents b3d0ac6 + 6e4a0de commit 6fbaf3f

File tree

5 files changed

+15
-14
lines changed

5 files changed

+15
-14
lines changed

Example-Nitrozen-SwiftUI/Example-Nitrozen-SwiftUI/Example-Code/Example_Nitrozen_SwiftUIApp.swift

-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import SwiftUI
99
import Nitrozen_SwiftUI
10-
import FloatingTextField_SwiftUI
1110

1211
@main
1312
struct Example_Nitrozen_SwiftUIApp: App {

Example-Nitrozen-SwiftUI/Example-Nitrozen-SwiftUI/Example-Code/RadioButton.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ struct RadioButton: View {
3232
}
3333

3434
Section(selection2.first ?? "") {
35-
Text("Vetical RadioButton With Title")
35+
Text("Vetical RadioButton With Title\n- custom spacing")
3636
NitrozenRadio(
3737
options: self.options2, selection: $selection2,
38-
layout: .verticle)
38+
layout: .verticle, itemSpacing: 2)
3939
.frame(maxWidth: .infinity, alignment: .leading)
4040
}
4141

Sources/Nitrozen-SwiftUI/Elements/Checkbox/NitrozenCheckbox.swift

+6-4
Original file line numberDiff line numberDiff line change
@@ -17,33 +17,35 @@ public struct NitrozenCheckbox<Element>: View where Element: NitrozenElementStri
1717
var options: Array<Element>
1818
@Binding var selection: Set<Element>
1919
var layout: Layout
20+
var itemSpacing: CGFloat
2021
var appearance: NitrozenAppearance.Checkbox
2122

2223
public init(options: Array<Element>, selection: Binding<Set<Element>>,
23-
layout: Layout, appearance: NitrozenAppearance.Checkbox? = nil) {
24+
layout: Layout, itemSpacing: CGFloat = 8, appearance: NitrozenAppearance.Checkbox? = nil) {
2425
self.options = options
2526
self._selection = selection
2627
self.layout = layout
28+
self.itemSpacing = itemSpacing
2729
self.appearance = appearance.or(NitrozenAppearance.shared.checkbox)
2830
}
2931

3032
public var body: some View {
3133
switch self.layout {
3234
case .horizontal:
33-
HStack {
35+
HStack(alignment: .top, spacing: self.itemSpacing) {
3436
ForEach(self.options, id: \.hashValue) { item in
3537
itemView(item: item, width: .infinity)
3638
}
3739
}
3840
case .verticle:
39-
VStack {
41+
VStack(alignment: .leading, spacing: self.itemSpacing) {
4042
ForEach(self.options, id: \.hashValue) { item in
4143
itemView(item: item, width: .infinity)
4244
}
4345
}
4446
case .collection:
4547
CollectionStack(self.options) { item in
46-
itemView(item: item, width: .dynamic(itemSpacing: 8))
48+
itemView(item: item, width: .dynamic(itemSpacing: self.itemSpacing))
4749
}
4850
}
4951
}

Sources/Nitrozen-SwiftUI/Elements/RadioButton/NitrozenRadio.swift

+7-6
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,26 @@ public struct NitrozenRadio<Element>: View where Element: NitrozenElementRadioSt
1919
var options: Array<Element>
2020
@Binding var selection: Set<Element>
2121
var layout: Layout
22+
var itemSpacing: CGFloat
2223
var appearance: NitrozenAppearance.RadioButton
2324

2425
public init(options: Array<Element>, selection: Binding<Set<Element>>,
25-
layout: Layout, appearance: NitrozenAppearance.RadioButton? = nil) {
26+
layout: Layout, itemSpacing: CGFloat = 8, appearance: NitrozenAppearance.RadioButton? = nil) {
2627
self.options = options
2728
self._selection = selection
2829
self.layout = layout
30+
self.itemSpacing = itemSpacing
2931
self.appearance = appearance.or(NitrozenAppearance.shared.radioButton)
3032
}
3133

3234
public var body: some View {
3335
switch self.layout {
3436
case .horizontal:
35-
HStack {
37+
HStack(spacing: self.itemSpacing) {
3638
listView()
3739
}
3840
case .verticle:
39-
VStack {
41+
VStack(spacing: self.itemSpacing) {
4042
listView()
4143
}
4244
}
@@ -45,11 +47,10 @@ public struct NitrozenRadio<Element>: View where Element: NitrozenElementRadioSt
4547
@ViewBuilder
4648
func listView() -> some View {
4749
ForEach(self.options, id: \.hashValue) { item in
48-
4950
NitrozenRadioButtonItem(
5051
isSelected: selection.contains(item),
5152
title: item.selectionTitleText,
52-
subTitle: item.selectionSubTitleText.or(""),
53+
subTitle: item.selectionSubTitleText,
5354
appearance:self.appearance
5455
)
5556
.onTapGesture {
@@ -87,7 +88,7 @@ public struct NitrozenRadioButtonItem: View {
8788

8889
public var body: some View {
8990

90-
VStack(alignment: .leading, spacing: 8) {
91+
VStack(alignment: .leading, spacing: 0) {
9192
HStack(alignment: .center) {
9293
radioButton()
9394
titleLabel()

Sources/Nitrozen-SwiftUI/Elements/TextField/Textfield+Appearance.swift

-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
//
77

88
import Foundation
9-
import FloatingTextField_SwiftUI
109

1110
public extension NitrozenAppearance {
1211
//TODO: define protocol textApperancable for titleColor and font

0 commit comments

Comments
 (0)