Skip to content

Commit 7e6df72

Browse files
committed
Add MaxWidthModifier to TitleAndValueRow
1 parent 0000165 commit 7e6df72

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

WooCommerce/Classes/ViewRelated/Orders/Order Details/Address Edit/EditOrderAddressForm.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,9 @@ struct SingleAddressForm: View {
333333
}
334334

335335
TitleAndValueRow(title: Localization.countryField,
336+
titleWidth: $titleWidth,
336337
value: .init(placeHolder: Localization.placeholderSelectOption, content: fields.country),
338+
valueTextAlignment: .leading,
337339
selectionStyle: .disclosure) {
338340
showCountrySelector = true
339341
}
@@ -352,7 +354,9 @@ struct SingleAddressForm: View {
352354
@ViewBuilder private func stateRow() -> some View {
353355
if showStateFieldAsSelector {
354356
TitleAndValueRow(title: Localization.stateField,
357+
titleWidth: $titleWidth,
355358
value: .init(placeHolder: Localization.placeholderSelectOption, content: fields.state),
359+
valueTextAlignment: .leading,
356360
selectionStyle: .disclosure) {
357361
showStateSelector = true
358362
}

WooCommerce/Classes/ViewRelated/ReusableViews/SwiftUI Components/TitleAndValueRow.swift

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,35 @@ struct TitleAndValueRow: View {
1212

1313
private let title: String
1414
private let value: Value
15+
private let valueTextAlignment: TextAlignment
1516
private let bold: Bool
1617
private let selectionStyle: SelectionStyle
1718
private let action: () -> Void
1819

19-
init(title: String, value: Value, bold: Bool = false, selectionStyle: SelectionStyle = .none, action: @escaping () -> Void = {}) {
20+
@Binding private var titleWidth: CGFloat?
21+
22+
private var valueFrameAligment: Alignment {
23+
switch valueTextAlignment {
24+
case .trailing:
25+
return .trailing
26+
case .leading:
27+
return .leading
28+
default:
29+
return .center
30+
}
31+
}
32+
33+
init(title: String,
34+
titleWidth: Binding<CGFloat?> = .constant(nil),
35+
value: Value,
36+
valueTextAlignment: TextAlignment = .trailing,
37+
bold: Bool = false,
38+
selectionStyle: SelectionStyle = .none,
39+
action: @escaping () -> Void = {}) {
2040
self.title = title
41+
self._titleWidth = titleWidth
2142
self.value = value
43+
self.valueTextAlignment = valueTextAlignment
2244
self.bold = bold
2345
self.selectionStyle = selectionStyle
2446
self.action = action
@@ -33,11 +55,13 @@ struct TitleAndValueRow: View {
3355
Text(title)
3456
.style(bold: bold, highlighted: selectionStyle == .highlight)
3557
.multilineTextAlignment(.leading)
58+
.modifier(MaxWidthModifier())
59+
.frame(width: titleWidth, alignment: .leading)
3660

3761
Text(value.text)
3862
.style(for: value, bold: bold, highlighted: false)
39-
.multilineTextAlignment(.trailing)
40-
.frame(maxWidth: .infinity, alignment: .trailing)
63+
.multilineTextAlignment(valueTextAlignment)
64+
.frame(maxWidth: .infinity, alignment: valueFrameAligment)
4165
.padding(.vertical, Constants.verticalPadding)
4266
}
4367

0 commit comments

Comments
 (0)