Skip to content

Commit 9be7f06

Browse files
committed
Update AutomaticLabeledContentStyle
1 parent b5cad40 commit 9be7f06

File tree

4 files changed

+199
-32
lines changed

4 files changed

+199
-32
lines changed

Example/OpenSwiftUIUITests/View/LabeledContent/LabeledContentUITests.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,7 @@ struct LabeledContentUITests {
2020

2121
}
2222
}
23-
#if os(iOS) || os(visionOS)
2423
openSwiftUIAssertSnapshot(of: ContentView())
25-
#else
26-
// FIXME: defaultStlye is not the same on macOS platform
27-
withKnownIssue {
28-
openSwiftUIAssertSnapshot(of: ContentView())
29-
}
30-
#endif
3124
}
3225

3326
@Test

Sources/OpenSwiftUI/View/LabelContent/AutomaticLabeledContentStyle.swift

Lines changed: 116 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
// OpenSwiftUI
44
//
55
// Audited fror 6.5.4
6-
// Status: WIP
6+
// Status: Complete
77

8+
@_spi(ForOpenSwiftUIOnly)
89
import OpenSwiftUICore
910

1011
@available(OpenSwiftUI_v4_0, *)
@@ -33,23 +34,126 @@ public struct AutomaticLabeledContentStyle: LabeledContentStyle {
3334
_openSwiftUIEmptyStub()
3435
}
3536

36-
// FIXME: Blocked by StyleContextAcceptsPredicate
3737
public func makeBody(configuration: AutomaticLabeledContentStyle.Configuration) -> some View {
38-
HStack {
38+
#if os(iOS) || os(visionOS)
39+
LabeledContent {
40+
configuration.content
41+
.labeledContentStyle(self)
42+
} label: {
3943
configuration.label
44+
.staticIf(LabelVisibilityConfigured.self) { label in
45+
labelsVisibility == .hidden ? nil : configuration.label
46+
}
47+
}
48+
.modifier(
49+
_LabeledContentStyleModifier(style: LeadingTrailingLabeledContentStyle_Phone())
50+
.requiring(AnyListStyleContext.self)
51+
.requiring(LabeledContentUsesLegacyLayout.Inverted.self)
52+
)
53+
.modifier(
54+
_LabeledContentStyleModifier(style: LeadingTrailingLabeledContentStyle(spacing: nil))
55+
.requiring(AnyListStyleContext.self)
56+
.requiring(LabeledContentUsesLegacyLayout.self)
57+
)
58+
.modifier(
59+
_LabeledContentStyleModifier(style: LeadingTrailingLabeledContentStyle(spacing: nil))
60+
.requiring(GroupedFormStyleContext.self)
61+
)
62+
.modifier(
63+
_LabeledContentStyleModifier(style: ColumnarLabeledContentStyle())
64+
.requiring(ColumnsFormStyleContext.self)
65+
)
66+
.modifier(
67+
_LabeledContentStyleModifier(style: AccessibilityLabeledContentStyle())
68+
.requiring(AccessibilityRepresentableStyleContext.self)
69+
)
70+
.labeledContentStyle(LeadingTrailingLabeledContentStyle(spacing: nil))
71+
#elseif os(macOS)
72+
LabeledContent {
4073
configuration.content
74+
.labeledContentStyle(self)
75+
} label: {
76+
configuration.label
77+
.staticIf(LabelVisibilityConfigured.self) { label in
78+
labelsVisibility == .hidden ? nil : configuration.label
79+
}
80+
}
81+
.modifier(
82+
_LabeledContentStyleModifier(style: LeadingTrailingLabeledContentStyle(spacing: nil)) //TODO
83+
.requiring(AnyListStyleContext.self)
84+
)
85+
.modifier(
86+
_LabeledContentStyleModifier(style: FormBoxLabeledContentStyle())
87+
.requiring(FormBoxStyleContext.self)
88+
)
89+
.modifier(
90+
_LabeledContentStyleModifier(style: FormBoxLabeledContentStyle())
91+
.requiring(GroupedFormValueStyleContext.self)
92+
)
93+
.modifier(
94+
_LabeledContentStyleModifier(style: GroupedFormLabeledContentStyle())
95+
.requiring(GroupedFormStyleContext.self)
96+
)
97+
.modifier(
98+
_LabeledContentStyleModifier(style: ColumnarLabeledContentStyle())
99+
.requiring(ColumnsFormStyleContext.self)
100+
)
101+
.modifier(
102+
_LabeledContentStyleModifier(style: GroupedFormTextFieldLabeledContentStyle())
103+
.requiring(GroupedFormTextFieldStyleContext.self)
104+
)
105+
.modifier(
106+
_LabeledContentStyleModifier(style: ColumnarLabeledContentStyle())
107+
.requiring(RadioGroupStyleContext.self)
108+
)
109+
.modifier(
110+
_LabeledContentStyleModifier(style: ToolbarLabeledContentStyle())
111+
.requiring(ToolbarStyleContext.self)
112+
)
113+
.modifier(
114+
_LabeledContentStyleModifier(style: AccessibilityLabeledContentStyle())
115+
.requiring(AccessibilityRepresentableStyleContext.self)
116+
)
117+
.modifier(
118+
_LabeledContentStyleModifier(style: HStackLabeledContentStyle())
119+
.requiring(InterfaceIdiomPredicate<MacInterfaceIdiom>.self)
120+
)
121+
.labeledContentStyle(LeadingTrailingLabeledContentStyle(spacing: 2.0))
122+
#else
123+
LabeledContent {
124+
configuration.content
125+
.labeledContentStyle(self)
126+
} label: {
127+
configuration.label
128+
.staticIf(LabelVisibilityConfigured.self) { label in
129+
labelsVisibility == .hidden ? nil : configuration.label
130+
}
41131
}
42-
// LabeledContent {
43-
// configuration.content
44-
// .labeledContentStyle(self)
45-
// } label: {
46-
// configuration.label
47-
// .staticIf(LabelVisibilityConfigured.self) { label in
48-
// labelsVisibility == .hidden ? nil : configuration.label
49-
// }
50-
// }
132+
.labeledContentStyle(LeadingTrailingLabeledContentStyle(spacing: nil))
133+
#endif
51134
}
52135
}
53136

54137
@available(*, unavailable)
55138
extension AutomaticLabeledContentStyle: Sendable {}
139+
140+
#if os(macOS)
141+
// TODO
142+
struct HStackLabeledContentStyle: LabeledContentStyle {
143+
func makeBody(configuration: Configuration) -> some View {
144+
HStack {
145+
configuration.label
146+
.staticIf(_SemanticFeature_v4.self) { label in
147+
VStack(alignment: .leading){
148+
LabelGroup { label }
149+
}
150+
}
151+
Spacer()
152+
HStack {
153+
configuration.content
154+
}.layoutPriority(-1)
155+
}
156+
.spacing(Spacing())
157+
}
158+
}
159+
#endif

Sources/OpenSwiftUI/View/LabelContent/LeadingTrailingLabeledContentStyle.swift

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,6 @@ import Foundation
1010
@_spi(ForOpenSwiftUIOnly)
1111
import OpenSwiftUICore
1212

13-
// MARK: - LabeledContentUsesLegacyLayout
14-
15-
struct LabeledContentUsesLegacyLayout: ViewInputPredicate {
16-
static func evaluate(inputs: _GraphInputs) -> Bool {
17-
!isLinkedOnOrAfter(.v6)
18-
}
19-
}
20-
2113
// MARK: - LeadingTrailingLabeledContentStyle
2214

2315
struct LeadingTrailingLabeledContentStyle: LabeledContentStyle {
@@ -41,6 +33,28 @@ struct LeadingTrailingLabeledContentStyle: LabeledContentStyle {
4133
}
4234
}
4335

36+
// MARK: - LabeledContentUsesLegacyLayout
37+
38+
struct LabeledContentUsesLegacyLayout: ViewInputPredicate {
39+
static func evaluate(inputs: _GraphInputs) -> Bool {
40+
!isLinkedOnOrAfter(.v6)
41+
}
42+
}
43+
44+
#if os(iOS) || os(visionOS)
45+
// MARK: - LeadingTrailingLabeledContentStyle_Phone [TODO]
46+
47+
struct LeadingTrailingLabeledContentStyle_Phone: LabeledContentStyle {
48+
func makeBody(configuration: Configuration) -> some View {
49+
_openSwiftUIUnimplementedWarning()
50+
return VStack {
51+
configuration.label
52+
configuration.content
53+
}
54+
}
55+
}
56+
#endif
57+
4458
// MARK: - ListLabeledContentPrefersHorizontalLayout
4559

4660
struct ListLabeledContentPrefersHorizontalLayout: ViewInputBoolFlag {}
@@ -51,8 +65,4 @@ extension View {
5165
}
5266
}
5367

54-
// MARK: - LeadingTrailingLabeledContentStyle_Phone [TODO]
55-
56-
#if os(iOS) || os(visionOS)
57-
struct LeadingTrailingLabeledContentStyle_Phone {}
58-
#endif
68+
// TODO: AdaptiveLeadingTrailingLabeledContentStyle
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
//
2+
// ListStyle.swift
3+
// OpenSwiftUI
4+
//
5+
// Audited for 6.5.4
6+
// Status: WIP
7+
8+
import OpenSwiftUICore
9+
10+
struct AnyListStyleContext: StyleContext {}
11+
12+
struct GroupedFormStyleContext: StyleContext {}
13+
14+
struct ColumnsFormStyleContext: StyleContext {}
15+
16+
struct FormBoxStyleContext: StyleContext {}
17+
18+
struct GroupedFormValueStyleContext: StyleContext {}
19+
20+
struct GroupedFormTextFieldStyleContext: StyleContext {}
21+
22+
struct RadioGroupStyleContext: StyleContext {}
23+
24+
struct ToolbarStyleContext: StyleContext {}
25+
26+
struct ColumnarLabeledContentStyle: LabeledContentStyle {
27+
func makeBody(configuration: Configuration) -> some View {
28+
_openSwiftUIUnimplementedFailure()
29+
}
30+
}
31+
32+
struct AccessibilityLabeledContentStyle: LabeledContentStyle {
33+
func makeBody(configuration: Configuration) -> some View {
34+
_openSwiftUIUnimplementedFailure()
35+
}
36+
}
37+
38+
struct FormBoxLabeledContentStyle: LabeledContentStyle {
39+
func makeBody(configuration: Configuration) -> some View {
40+
_openSwiftUIUnimplementedFailure()
41+
}
42+
}
43+
44+
struct GroupedFormLabeledContentStyle: LabeledContentStyle {
45+
func makeBody(configuration: Configuration) -> some View {
46+
_openSwiftUIUnimplementedFailure()
47+
}
48+
}
49+
50+
struct GroupedFormTextFieldLabeledContentStyle: LabeledContentStyle {
51+
func makeBody(configuration: Configuration) -> some View {
52+
_openSwiftUIUnimplementedFailure()
53+
}
54+
}
55+
56+
struct ToolbarLabeledContentStyle: LabeledContentStyle {
57+
func makeBody(configuration: Configuration) -> some View {
58+
_openSwiftUIUnimplementedFailure()
59+
}
60+
}

0 commit comments

Comments
 (0)