Skip to content

Commit 498d4ee

Browse files
committed
refactor: 💡 [JIRA:HCPSDKFIORIUIKIT-2882] TextInputField Enhancement
1 parent 7b388b4 commit 498d4ee

25 files changed

+108
-256
lines changed

Sources/FioriSwiftUICore/Models/ModelDefinitions.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public protocol ActionModel: ActionComponent {}
103103
public protocol _TextInputModel: TextInputComponent {}
104104

105105
/// Deprecated TextInputModel
106-
@available(*, unavailable, renamed: "_TextInputModel", message: "Will be removed in the future release. Please create TextInput with other initializers instead.")
106+
@available(*, unavailable, renamed: "_TextInputModel", message: "Will be removed in the future release. Please create TextInput with TextInputField instead.")
107107
public protocol TextInputModel {}
108108

109109
// sourcery: generated_component

Sources/FioriSwiftUICore/_ComponentProtocols/BaseComponentProtocols.swift

+5-9
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,12 @@ protocol _MoreActionOverflowComponent {
244244
// sourcery: BaseComponent
245245
protocol _TextInputFieldComponent {
246246
// sourcery: @Binding
247+
// sourcery: defaultValue = ".constant("")"
247248
var text: String { get }
249+
// sourcery: defaultValue = """"
250+
var prompt: String { get }
251+
// sourcery: no_view
252+
var onCommit: (() -> Void)? { get }
248253
}
249254

250255
// sourcery: BaseComponent
@@ -496,15 +501,6 @@ protocol _ActivityItemsComponent {
496501
var activityItems: [ActivityItemDataType] { get }
497502
}
498503

499-
// sourcery: BaseComponent
500-
protocol _TextInputComponent {
501-
// sourcery: @Binding
502-
// sourcery: defaultValue = ".constant("")"
503-
var textInputValue: String { get }
504-
// sourcery: no_view
505-
var onCommit: (() -> Void)? { get }
506-
}
507-
508504
// sourcery: BaseComponent
509505
protocol _LowerThumbComponent {
510506
// sourcery: @ViewBuilder

Sources/FioriSwiftUICore/_FioriStyles/TextInputFieldStyle.fiori.swift

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import SwiftUI
66
public struct TextInputFieldBaseStyle: TextInputFieldStyle {
77
@ViewBuilder
88
public func makeBody(_ configuration: TextInputFieldConfiguration) -> some View {
9-
TextField("", text: configuration.$text)
9+
TextField(configuration.prompt,
10+
text: configuration.$text,
11+
onCommit: configuration.onCommit ?? {})
1012
}
1113
}
1214

Sources/FioriSwiftUICore/_FioriStyles/TextInputStyle.fiori.swift

-26
This file was deleted.

Sources/FioriSwiftUICore/_generated/StyleableComponents/PlaceholderTextField/PlaceholderTextField.generated.swift

+14-4
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,33 @@ import SwiftUI
55

66
public struct PlaceholderTextField {
77
@Binding var text: String
8+
let prompt: String
9+
let onCommit: (() -> Void)?
810
let placeholder: any View
911

1012
@Environment(\.placeholderTextFieldStyle) var style
1113

1214
fileprivate var _shouldApplyDefaultStyle = true
1315

14-
public init(text: Binding<String>,
16+
public init(text: Binding<String> = .constant(""),
17+
prompt: String = "",
18+
onCommit: (() -> Void)? = nil,
1519
@ViewBuilder placeholder: () -> any View = { EmptyView() })
1620
{
1721
self._text = text
22+
self.prompt = prompt
23+
self.onCommit = onCommit
1824
self.placeholder = Placeholder(placeholder: placeholder)
1925
}
2026
}
2127

2228
public extension PlaceholderTextField {
2329
init(text: Binding<String>,
30+
prompt: String = "",
31+
onCommit: (() -> Void)? = nil,
2432
placeholder: AttributedString? = nil)
2533
{
26-
self.init(text: text, placeholder: { OptionalText(placeholder) })
34+
self.init(text: text, prompt: prompt, onCommit: onCommit, placeholder: { OptionalText(placeholder) })
2735
}
2836
}
2937

@@ -34,6 +42,8 @@ public extension PlaceholderTextField {
3442

3543
internal init(_ configuration: PlaceholderTextFieldConfiguration, shouldApplyDefaultStyle: Bool) {
3644
self._text = configuration.$text
45+
self.prompt = configuration.prompt
46+
self.onCommit = configuration.onCommit
3747
self.placeholder = configuration.placeholder
3848
self._shouldApplyDefaultStyle = shouldApplyDefaultStyle
3949
}
@@ -44,7 +54,7 @@ extension PlaceholderTextField: View {
4454
if self._shouldApplyDefaultStyle {
4555
self.defaultStyle()
4656
} else {
47-
self.style.resolve(configuration: .init(text: self.$text, placeholder: .init(self.placeholder))).typeErased
57+
self.style.resolve(configuration: .init(text: self.$text, prompt: self.prompt, onCommit: self.onCommit, placeholder: .init(self.placeholder))).typeErased
4858
.transformEnvironment(\.placeholderTextFieldStyleStack) { stack in
4959
if !stack.isEmpty {
5060
stack.removeLast()
@@ -62,7 +72,7 @@ private extension PlaceholderTextField {
6272
}
6373

6474
func defaultStyle() -> some View {
65-
PlaceholderTextField(.init(text: self.$text, placeholder: .init(self.placeholder)))
75+
PlaceholderTextField(.init(text: self.$text, prompt: self.prompt, onCommit: self.onCommit, placeholder: .init(self.placeholder)))
6676
.shouldApplyDefaultStyle(false)
6777
.placeholderTextFieldStyle(PlaceholderTextFieldFioriStyle.ContentFioriStyle())
6878
.typeErased

Sources/FioriSwiftUICore/_generated/StyleableComponents/PlaceholderTextField/PlaceholderTextFieldStyle.generated.swift

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ struct AnyPlaceholderTextFieldStyle: PlaceholderTextFieldStyle {
2323

2424
public struct PlaceholderTextFieldConfiguration {
2525
@Binding public var text: String
26+
public let prompt: String
27+
public let onCommit: (() -> Void)?
2628
public let placeholder: Placeholder
2729

2830
public typealias Placeholder = ConfigurationViewWrapper

Sources/FioriSwiftUICore/_generated/StyleableComponents/StepperField/StepperField.generated.swift

+14-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import FioriThemeManager
88
public struct StepperField {
99
let decrementAction: any View
1010
@Binding var text: String
11+
let prompt: String
12+
let onCommit: (() -> Void)?
1113
let incrementAction: any View
1214
/// The step value
1315
let step: Double
@@ -21,14 +23,18 @@ public struct StepperField {
2123
fileprivate var _shouldApplyDefaultStyle = true
2224

2325
public init(@ViewBuilder decrementAction: () -> any View = { FioriButton { _ in FioriIcon.actions.less } },
24-
text: Binding<String>,
26+
text: Binding<String> = .constant(""),
27+
prompt: String = "",
28+
onCommit: (() -> Void)? = nil,
2529
@ViewBuilder incrementAction: () -> any View = { FioriButton { _ in FioriIcon.actions.add } },
2630
step: Double = 1,
2731
stepRange: ClosedRange<Double>,
2832
isDecimalSupported: Bool = false)
2933
{
3034
self.decrementAction = DecrementAction(decrementAction: decrementAction)
3135
self._text = text
36+
self.prompt = prompt
37+
self.onCommit = onCommit
3238
self.incrementAction = IncrementAction(incrementAction: incrementAction)
3339
self.step = step
3440
self.stepRange = stepRange
@@ -39,12 +45,14 @@ public struct StepperField {
3945
public extension StepperField {
4046
init(decrementAction: FioriButton? = FioriButton { _ in FioriIcon.actions.less },
4147
text: Binding<String>,
48+
prompt: String = "",
49+
onCommit: (() -> Void)? = nil,
4250
incrementAction: FioriButton? = FioriButton { _ in FioriIcon.actions.add },
4351
step: Double = 1,
4452
stepRange: ClosedRange<Double>,
4553
isDecimalSupported: Bool = false)
4654
{
47-
self.init(decrementAction: { decrementAction }, text: text, incrementAction: { incrementAction }, step: step, stepRange: stepRange, isDecimalSupported: isDecimalSupported)
55+
self.init(decrementAction: { decrementAction }, text: text, prompt: prompt, onCommit: onCommit, incrementAction: { incrementAction }, step: step, stepRange: stepRange, isDecimalSupported: isDecimalSupported)
4856
}
4957
}
5058

@@ -56,6 +64,8 @@ public extension StepperField {
5664
internal init(_ configuration: StepperFieldConfiguration, shouldApplyDefaultStyle: Bool) {
5765
self.decrementAction = configuration.decrementAction
5866
self._text = configuration.$text
67+
self.prompt = configuration.prompt
68+
self.onCommit = configuration.onCommit
5969
self.incrementAction = configuration.incrementAction
6070
self.step = configuration.step
6171
self.stepRange = configuration.stepRange
@@ -69,7 +79,7 @@ extension StepperField: View {
6979
if self._shouldApplyDefaultStyle {
7080
self.defaultStyle()
7181
} else {
72-
self.style.resolve(configuration: .init(decrementAction: .init(self.decrementAction), text: self.$text, incrementAction: .init(self.incrementAction), step: self.step, stepRange: self.stepRange, isDecimalSupported: self.isDecimalSupported)).typeErased
82+
self.style.resolve(configuration: .init(decrementAction: .init(self.decrementAction), text: self.$text, prompt: self.prompt, onCommit: self.onCommit, incrementAction: .init(self.incrementAction), step: self.step, stepRange: self.stepRange, isDecimalSupported: self.isDecimalSupported)).typeErased
7383
.transformEnvironment(\.stepperFieldStyleStack) { stack in
7484
if !stack.isEmpty {
7585
stack.removeLast()
@@ -87,7 +97,7 @@ private extension StepperField {
8797
}
8898

8999
func defaultStyle() -> some View {
90-
StepperField(.init(decrementAction: .init(self.decrementAction), text: self.$text, incrementAction: .init(self.incrementAction), step: self.step, stepRange: self.stepRange, isDecimalSupported: self.isDecimalSupported))
100+
StepperField(.init(decrementAction: .init(self.decrementAction), text: self.$text, prompt: self.prompt, onCommit: self.onCommit, incrementAction: .init(self.incrementAction), step: self.step, stepRange: self.stepRange, isDecimalSupported: self.isDecimalSupported))
91101
.shouldApplyDefaultStyle(false)
92102
.stepperFieldStyle(StepperFieldFioriStyle.ContentFioriStyle())
93103
.typeErased

Sources/FioriSwiftUICore/_generated/StyleableComponents/StepperField/StepperFieldStyle.generated.swift

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ struct AnyStepperFieldStyle: StepperFieldStyle {
2424
public struct StepperFieldConfiguration {
2525
public let decrementAction: DecrementAction
2626
@Binding public var text: String
27+
public let prompt: String
28+
public let onCommit: (() -> Void)?
2729
public let incrementAction: IncrementAction
2830
public let step: Double
2931
public let stepRange: ClosedRange<Double>

Sources/FioriSwiftUICore/_generated/StyleableComponents/StepperView/StepperView.generated.swift

+14-4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public struct StepperView {
99
let title: any View
1010
let decrementAction: any View
1111
@Binding var text: String
12+
let prompt: String
13+
let onCommit: (() -> Void)?
1214
let incrementAction: any View
1315
/// The step value
1416
let step: Double
@@ -25,7 +27,9 @@ public struct StepperView {
2527

2628
public init(@ViewBuilder title: () -> any View,
2729
@ViewBuilder decrementAction: () -> any View = { FioriButton { _ in FioriIcon.actions.less } },
28-
text: Binding<String>,
30+
text: Binding<String> = .constant(""),
31+
prompt: String = "",
32+
onCommit: (() -> Void)? = nil,
2933
@ViewBuilder incrementAction: () -> any View = { FioriButton { _ in FioriIcon.actions.add } },
3034
step: Double = 1,
3135
stepRange: ClosedRange<Double>,
@@ -36,6 +40,8 @@ public struct StepperView {
3640
self.title = Title(title: title)
3741
self.decrementAction = DecrementAction(decrementAction: decrementAction)
3842
self._text = text
43+
self.prompt = prompt
44+
self.onCommit = onCommit
3945
self.incrementAction = IncrementAction(incrementAction: incrementAction)
4046
self.step = step
4147
self.stepRange = stepRange
@@ -49,14 +55,16 @@ public extension StepperView {
4955
init(title: AttributedString,
5056
decrementAction: FioriButton? = FioriButton { _ in FioriIcon.actions.less },
5157
text: Binding<String>,
58+
prompt: String = "",
59+
onCommit: (() -> Void)? = nil,
5260
incrementAction: FioriButton? = FioriButton { _ in FioriIcon.actions.add },
5361
step: Double = 1,
5462
stepRange: ClosedRange<Double>,
5563
isDecimalSupported: Bool = false,
5664
icon: Image? = nil,
5765
description: AttributedString? = nil)
5866
{
59-
self.init(title: { Text(title) }, decrementAction: { decrementAction }, text: text, incrementAction: { incrementAction }, step: step, stepRange: stepRange, isDecimalSupported: isDecimalSupported, icon: { icon }, description: { OptionalText(description) })
67+
self.init(title: { Text(title) }, decrementAction: { decrementAction }, text: text, prompt: prompt, onCommit: onCommit, incrementAction: { incrementAction }, step: step, stepRange: stepRange, isDecimalSupported: isDecimalSupported, icon: { icon }, description: { OptionalText(description) })
6068
}
6169
}
6270

@@ -69,6 +77,8 @@ public extension StepperView {
6977
self.title = configuration.title
7078
self.decrementAction = configuration.decrementAction
7179
self._text = configuration.$text
80+
self.prompt = configuration.prompt
81+
self.onCommit = configuration.onCommit
7282
self.incrementAction = configuration.incrementAction
7383
self.step = configuration.step
7484
self.stepRange = configuration.stepRange
@@ -84,7 +94,7 @@ extension StepperView: View {
8494
if self._shouldApplyDefaultStyle {
8595
self.defaultStyle()
8696
} else {
87-
self.style.resolve(configuration: .init(title: .init(self.title), decrementAction: .init(self.decrementAction), text: self.$text, incrementAction: .init(self.incrementAction), step: self.step, stepRange: self.stepRange, isDecimalSupported: self.isDecimalSupported, icon: .init(self.icon), description: .init(self.description))).typeErased
97+
self.style.resolve(configuration: .init(title: .init(self.title), decrementAction: .init(self.decrementAction), text: self.$text, prompt: self.prompt, onCommit: self.onCommit, incrementAction: .init(self.incrementAction), step: self.step, stepRange: self.stepRange, isDecimalSupported: self.isDecimalSupported, icon: .init(self.icon), description: .init(self.description))).typeErased
8898
.transformEnvironment(\.stepperViewStyleStack) { stack in
8999
if !stack.isEmpty {
90100
stack.removeLast()
@@ -102,7 +112,7 @@ private extension StepperView {
102112
}
103113

104114
func defaultStyle() -> some View {
105-
StepperView(.init(title: .init(self.title), decrementAction: .init(self.decrementAction), text: self.$text, incrementAction: .init(self.incrementAction), step: self.step, stepRange: self.stepRange, isDecimalSupported: self.isDecimalSupported, icon: .init(self.icon), description: .init(self.description)))
115+
StepperView(.init(title: .init(self.title), decrementAction: .init(self.decrementAction), text: self.$text, prompt: self.prompt, onCommit: self.onCommit, incrementAction: .init(self.incrementAction), step: self.step, stepRange: self.stepRange, isDecimalSupported: self.isDecimalSupported, icon: .init(self.icon), description: .init(self.description)))
106116
.shouldApplyDefaultStyle(false)
107117
.stepperViewStyle(StepperViewFioriStyle.ContentFioriStyle())
108118
.typeErased

Sources/FioriSwiftUICore/_generated/StyleableComponents/StepperView/StepperViewStyle.generated.swift

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ public struct StepperViewConfiguration {
2525
public let title: Title
2626
public let decrementAction: DecrementAction
2727
@Binding public var text: String
28+
public let prompt: String
29+
public let onCommit: (() -> Void)?
2830
public let incrementAction: IncrementAction
2931
public let step: Double
3032
public let stepRange: ClosedRange<Double>

0 commit comments

Comments
 (0)