Skip to content

Commit

Permalink
Merge branch 'main' into searchbar
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexXiong-dev authored Mar 12, 2024
2 parents 9c37f71 + 90e8de7 commit f5a2d0e
Show file tree
Hide file tree
Showing 77 changed files with 2,740 additions and 336 deletions.
20 changes: 20 additions & 0 deletions Apps/Examples/Examples.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@
9996CD03262FFEBE001B99AE /* EULA2.html in Resources */ = {isa = PBXBuildFile; fileRef = 9996CD02262FFEBD001B99AE /* EULA2.html */; };
99B6EF8C2672224D00515E8E /* UserConsentSample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99B6EF8B2672224C00515E8E /* UserConsentSample.swift */; };
99F3D88D2B82119900802603 /* TextInputInfoViewExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F3D88C2B82119900802603 /* TextInputInfoViewExample.swift */; };
9D0B26082B9BA5C0004278A5 /* FormViewExamples.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0B26042B9BA5C0004278A5 /* FormViewExamples.swift */; };
9D0B26092B9BA5C0004278A5 /* KeyValueFormViewExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0B26052B9BA5C0004278A5 /* KeyValueFormViewExample.swift */; };
9D0B260A2B9BA5C0004278A5 /* NoteFormViewExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D0B26062B9BA5C0004278A5 /* NoteFormViewExample.swift */; };
AB988B102631270300483D87 /* DataTableExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB988B0F2631270300483D87 /* DataTableExample.swift */; };
B100639329C0624D00AF0CA2 /* StepProgressIndicatorExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = B100639229C0624D00AF0CA2 /* StepProgressIndicatorExample.swift */; };
B13408922B01FA0700600331 /* NavigationBarExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = B13408912B01FA0700600331 /* NavigationBarExample.swift */; };
Expand Down Expand Up @@ -240,6 +243,9 @@
9996CD02262FFEBD001B99AE /* EULA2.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = EULA2.html; sourceTree = "<group>"; };
99B6EF8B2672224C00515E8E /* UserConsentSample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserConsentSample.swift; sourceTree = "<group>"; };
99F3D88C2B82119900802603 /* TextInputInfoViewExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextInputInfoViewExample.swift; sourceTree = "<group>"; };
9D0B26042B9BA5C0004278A5 /* FormViewExamples.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormViewExamples.swift; sourceTree = "<group>"; };
9D0B26052B9BA5C0004278A5 /* KeyValueFormViewExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyValueFormViewExample.swift; sourceTree = "<group>"; };
9D0B26062B9BA5C0004278A5 /* NoteFormViewExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NoteFormViewExample.swift; sourceTree = "<group>"; };
AB988B0F2631270300483D87 /* DataTableExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataTableExample.swift; sourceTree = "<group>"; };
B100639229C0624D00AF0CA2 /* StepProgressIndicatorExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StepProgressIndicatorExample.swift; sourceTree = "<group>"; };
B13408912B01FA0700600331 /* NavigationBarExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBarExample.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -509,6 +515,7 @@
B84D24E42652F343007F2373 /* ObjectHeader */,
1F3C939B25E05E0200A99A07 /* FioriButton */,
1F3C92EF25DF12A100A99A07 /* FormCells */,
9D0B26072B9BA5C0004278A5 /* FormViews */,
8A6D64AF25AE656400D2D76C /* Experimental */,
B80DA9C32612A54E00C0B2E9 /* Onboarding */,
8A557A2124C12C9B0098003A /* CoreContentView.swift */,
Expand Down Expand Up @@ -571,6 +578,16 @@
path = Indicator;
sourceTree = "<group>";
};
9D0B26072B9BA5C0004278A5 /* FormViews */ = {
isa = PBXGroup;
children = (
9D0B26042B9BA5C0004278A5 /* FormViewExamples.swift */,
9D0B26052B9BA5C0004278A5 /* KeyValueFormViewExample.swift */,
9D0B26062B9BA5C0004278A5 /* NoteFormViewExample.swift */,
);
path = FormViews;
sourceTree = "<group>";
};
AB988B11263128C400483D87 /* DataTable */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -871,6 +888,7 @@
B1DD86532B0758F000D7EDFD /* NavigationBarPopover.swift in Sources */,
B1DD86552B0759DD00D7EDFD /* NavigationBarCustomItem.swift in Sources */,
B84D24EE2652F343007F2373 /* ObjectHeaderViewScenarios.swift in Sources */,
9D0B26082B9BA5C0004278A5 /* FormViewExamples.swift in Sources */,
108E43D5292DAB7C006532F3 /* EmptyStateViewExample.swift in Sources */,
B13408922B01FA0700600331 /* NavigationBarExample.swift in Sources */,
B84D24F22652F343007F2373 /* ObjectHeaderDeveloperExample.swift in Sources */,
Expand All @@ -888,11 +906,13 @@
B846F94626815CC90085044B /* ContactItemExample.swift in Sources */,
8A5579CC24C1293C0098003A /* SettingsColorForCategory.swift in Sources */,
C18868D12B32535100F865F7 /* SearchFontAndColor.swift in Sources */,
9D0B26092B9BA5C0004278A5 /* KeyValueFormViewExample.swift in Sources */,
8A557A1A24C12C820098003A /* ChartsContentView.swift in Sources */,
8A5579CE24C1293C0098003A /* SettingColor.swift in Sources */,
1F55FEF32AC941FF00D7A1BE /* View+Extensions.swift in Sources */,
8A6DE30B28DD27F9003222E3 /* Colors.swift in Sources */,
8AD9DFB225D49967007448EC /* StylingModifierExample.swift in Sources */,
9D0B260A2B9BA5C0004278A5 /* NoteFormViewExample.swift in Sources */,
8A5579D124C1293C0098003A /* Settings.swift in Sources */,
8AD9DFB025D49967007448EC /* ContactItemActionItemsExample.swift in Sources */,
8A6D64B125AE658300D2D76C /* ExpHeaderView.swift in Sources */,
Expand Down
7 changes: 7 additions & 0 deletions Apps/Examples/Examples/FioriSwiftUICore/CoreContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,13 @@ struct CoreContentView: View {
NavigationLink(destination: SearchDemos()) {
Text("Search Demos")
}

NavigationLink(
destination: FormViewExamples(),
label: {
Text("FormView")
}
)
}

NavigationLink(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,29 @@ struct InformationViewExample: View {
var body: some View {
List {
Text("Default Fiori style, no icon")
.informationView(description: AttributedString("test message"))
.informationView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message"))

Text("Error style")
.informationView(description: AttributedString("test message"))
.informationView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message"))
.informationViewStyle(.error)

Text("Warning style")
.informationView(description: AttributedString("test message"))
.informationView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message"))
.informationViewStyle(.warning)

Text("Informational style")
.informationView(description: AttributedString("test message"))
.informationView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message"))
.informationViewStyle(.informational)

Text("Success style")
.informationView(description: AttributedString("test message"))
.informationView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message"))
.informationViewStyle(.success)

Text("Customized icon")
.informationView(icon: Image(systemName: "heart"), description: AttributedString("test message"))
.informationView(isPresented: Binding(get: { true }, set: { _ in }), icon: Image(systemName: "heart"), description: AttributedString("test message"))

Text("Customized font and color")
.informationView(icon: Image(systemName: "diamond"), description: AttributedString("test message"))
.informationView(isPresented: Binding(get: { true }, set: { _ in }), icon: Image(systemName: "diamond"), description: AttributedString("test message"))
.informationViewStyle(.fiori)
.iconStyle(content: { iconConfiguration in
iconConfiguration.icon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,35 +5,35 @@ struct TextInputInfoViewExample: View {
var body: some View {
VStack(alignment: .leading) {
Text("Default Fiori style, no icon")
.textInputInfoView(description: AttributedString("test message"), counter: AttributedString("10/100"))
.textInputInfoView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message"), counter: AttributedString("10/100"))

Text("Default Fiori style, no message")
.textInputInfoView(counter: AttributedString("10/100"))
.textInputInfoView(isPresented: Binding(get: { true }, set: { _ in }), counter: AttributedString("10/100"))

Text("Default Fiori style, no counter")
.textInputInfoView(description: AttributedString("test message"))
.textInputInfoView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message"))

Text("Error style")
.textInputInfoView(description: AttributedString("test message, long messag long message long message long message long message long message long message long message"), counter: AttributedString("12/10"))
.textInputInfoView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message, long messag long message long message long message long message long message long message long message"), counter: AttributedString("12/10"))
.textInputInfoViewStyle(.error)

Text("Warning style")
.textInputInfoView(description: AttributedString("test message, long messag long message long message long message long message long message long message long message"), counter: AttributedString("10/10"))
.textInputInfoView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message, long messag long message long message long message long message long message long message long message"), counter: AttributedString("10/10"))
.textInputInfoViewStyle(.warning)

Text("Informational style")
.textInputInfoView(description: AttributedString("test message"), counter: AttributedString("0/10"))
.textInputInfoView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message"), counter: AttributedString("0/10"))
.textInputInfoViewStyle(.informational)

Text("Success style")
.textInputInfoView(description: AttributedString("test message"), counter: AttributedString("10/100"))
.textInputInfoView(isPresented: Binding(get: { true }, set: { _ in }), description: AttributedString("test message"), counter: AttributedString("10/100"))
.textInputInfoViewStyle(.success)

Text("Customized icon")
.textInputInfoView(icon: Image(systemName: "heart"), description: AttributedString("test message, long messag long message long message long message long message long message long message long message"), counter: AttributedString("10/100"))
.textInputInfoView(isPresented: Binding(get: { true }, set: { _ in }), icon: Image(systemName: "heart"), description: AttributedString("test message, long messag long message long message long message long message long message long message long message"), counter: AttributedString("10/100"))

Text("Customized font and color")
.textInputInfoView(icon: Image(systemName: "diamond"), description: AttributedString("test message"), counter: AttributedString("10/100"))
.textInputInfoView(isPresented: Binding(get: { true }, set: { _ in }), icon: Image(systemName: "diamond"), description: AttributedString("test message"), counter: AttributedString("10/100"))
.iconStyle(content: { iconConfiguration in
iconConfiguration.icon
.foregroundStyle(Color.preferredColor(.tintColor))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import SwiftUI

struct FormViewExamples: View {
var body: some View {
List {
NavigationLink(
destination: NoteFormViewExample()) {
Text("NoteFormView Example")
}
NavigationLink(
destination: KeyValueFormViewExample()) {
Text("KeyValueFormView Example")
}
}
}
}

#Preview {
FormViewExamples()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
import FioriSwiftUICore
import SwiftUI

struct KeyValueFormViewExample: View {
var key1: AttributedString {
var aString = AttributedString("Key 1")
return aString
}

@State var valueText1: String = "1234567890 12345678"

var key2: AttributedString {
var aString = AttributedString("Key 2")
return aString
}

@State var valueText2: String = "This is a test"

var key3: AttributedString {
var aString = AttributedString("Key 3")
return aString
}

@State var valueText3: String = ""
let minHeight: CGFloat = 50
let maxHeight: CGFloat = 200

@State var disabledText = "This is Disabled text."
@State var readOnlyText = "This is Read-Only text."

let errorMessage = AttributedString("Error Message")
let hintText = AttributedString("Hint Text")

@State var showsHintText = false
@State var showsErrorMessage = false
@State var showsCharCount = false
@State var allowsBeyondLimit = false

var body: some View {
VStack {
Text("KeyValueFormViewExample")
List {
Toggle("Shows Hint Text", isOn: $showsHintText)
.padding(.leading, 16)
.padding(.trailing, 16)
Toggle("Shows Error Message", isOn: $showsErrorMessage)
.padding(.leading, 16)
.padding(.trailing, 16)
Toggle("Shows Char Count", isOn: $showsCharCount)
.padding(.leading, 16)
.padding(.trailing, 16)
Toggle("Allows Beyond Limit", isOn: $allowsBeyondLimit)
.padding(.leading, 16)
.padding(.trailing, 16)

Text("Default KeyValueFormView")
KeyValueFormView(title: key1, text: $valueText1, placeholder: "KeyValueFormView", errorMessage: getErrorMessage(), maxTextLength: getMaxTextLength(), hintText: getHintText(), isCharCountEnabled: showsCharCount, allowsBeyondLimit: allowsBeyondLimit)

Text("Existing Text")
.italic()
KeyValueFormView(title: key2, text: $valueText2, placeholder: "KeyValueFormView", errorMessage: getErrorMessage(), maxTextLength: getMaxTextLength(), hintText: getHintText(), isCharCountEnabled: showsCharCount, allowsBeyondLimit: allowsBeyondLimit)

Text("minHeight 50, maxHeight 200")
.italic()
KeyValueFormView(title: key3, text: $valueText3, placeholder: "Please enter something", errorMessage: getErrorMessage(), minTextEditorHeight: 50, maxTextEditorHeight: 200, hintText: getHintText(), allowsBeyondLimit: allowsBeyondLimit)

Text("Disabled")
KeyValueFormView(title: "Disabled", text: $disabledText, placeholder: "Disabled", controlState: .disabled, minTextEditorHeight: 50, maxTextEditorHeight: 200)

Text("Read-Only")
KeyValueFormView(title: "Read-Only", text: $readOnlyText, placeholder: "Read-Only", controlState: .readOnly, minTextEditorHeight: 50, maxTextLength: 200)
}
.scrollDismissesKeyboard(.immediately)
}
}

func getHintText() -> AttributedString? {
self.showsHintText ? self.hintText : nil
}

func getErrorMessage() -> AttributedString? {
self.showsErrorMessage ? self.errorMessage : nil
}

func getMaxTextLength() -> Int? {
self.showsCharCount ? 20 : nil
}

func getCharCountEnabled() -> Bool? {
self.showsCharCount ? true : nil
}
}

// #Preview {
// KeyValueFormViewExample()
// }
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import FioriSwiftUICore
import SwiftUI

struct NoteFormViewExample: View {
@State var valueText1: String = "1234567890 12345678"

@State var valueText2: String = "This is a test"

@State var valueText3: String = ""
let minHeight: CGFloat = 50
let maxHeight: CGFloat = 200

@State var disabledText = "This is Disabled text."
@State var readOnlyText = "This is Read-Only text."

let errorMessage = AttributedString("Error Message")
let hintText = AttributedString("Hint Text")

@State var showsHintText = false
@State var showsErrorMessage = false
@State var showsCharCount = false
@State var allowsBeyondLimit = false

@State var text = ""

var body: some View {
VStack {
Text("NoteFormViewExample")
List {
Toggle("Shows Hint Text", isOn: $showsHintText)
.padding(.leading, 16)
.padding(.trailing, 16)
Toggle("Shows Error Message", isOn: $showsErrorMessage)
.padding(.leading, 16)
.padding(.trailing, 16)
Toggle("Shows Char Count", isOn: $showsCharCount)
.padding(.leading, 16)
.padding(.trailing, 16)
Toggle("Allows Beyond Limit", isOn: $allowsBeyondLimit)
.padding(.leading, 16)
.padding(.trailing, 16)

Text("Default NoteForm")
NoteFormView(text: $valueText1, placeholder: "NoteFormView", errorMessage: getErrorMessage(), maxTextLength: getMaxTextLength(), hintText: getHintText(), isCharCountEnabled: showsCharCount, allowsBeyondLimit: allowsBeyondLimit)

Text("Existing Text")
.italic()
NoteFormView(text: $valueText2, placeholder: "NoteFormView", errorMessage: getErrorMessage(), maxTextLength: getMaxTextLength(), hintText: getHintText(), isCharCountEnabled: showsCharCount, allowsBeyondLimit: allowsBeyondLimit)

Text("minHeight 50, maxHeight 100")
.italic()
NoteFormView(text: $valueText3, placeholder: "Please enter something", errorMessage: getErrorMessage(), minTextEditorHeight: 50, maxTextEditorHeight: 100, maxTextLength: getMaxTextLength(), hintText: getHintText(), isCharCountEnabled: showsCharCount, allowsBeyondLimit: allowsBeyondLimit)

Text("Disabled")
NoteFormView(text: $disabledText, placeholder: "Disabled", controlState: .disabled, minTextEditorHeight: 50, maxTextEditorHeight: 100)

Text("Read-Only")
NoteFormView(text: $readOnlyText, placeholder: "Read-Only", controlState: .readOnly, minTextEditorHeight: 50, maxTextEditorHeight: 200)
}
.scrollDismissesKeyboard(.immediately)
}
}

func getHintText() -> AttributedString? {
self.showsHintText ? self.hintText : nil
}

func getErrorMessage() -> AttributedString? {
self.showsErrorMessage ? self.errorMessage : nil
}

func getMaxTextLength() -> Int? {
self.showsCharCount ? 20 : nil
}

func getCharCountEnabled() -> Bool? {
self.showsCharCount ? true : nil
}
}

// #Preview {
// NoteFormViewExample()
// }
Loading

0 comments on commit f5a2d0e

Please sign in to comment.