Skip to content

Commit

Permalink
Merge pull request #666 from kiwicom/dialog-fix-missing-accessibility
Browse files Browse the repository at this point in the history
Refactor Dialog button builder
  • Loading branch information
PavelHolec authored Aug 22, 2023
2 parents 8b8f99d + a9f11e9 commit c1ed261
Showing 1 changed file with 30 additions and 28 deletions.
58 changes: 30 additions & 28 deletions Sources/Orbit/Components/Dialog.swift
Original file line number Diff line number Diff line change
Expand Up @@ -92,42 +92,20 @@ public enum DialogButtonsBuilder {
}

public static func buildBlock(_ primary: some View) -> some View {
primary
.suppressButtonStyle()
.buttonStyle(OrbitButtonStyle(type: .status(nil)))
.accessibility(.dialogButtonPrimary)
primaryButton(primary)
}

@ViewBuilder
public static func buildBlock(_ primary: some View, _ secondary: some View) -> some View {
primary
.suppressButtonStyle()
.buttonStyle(OrbitButtonStyle(type: .status(nil)))
.accessibility(.dialogButtonPrimary)

secondary
.suppressButtonStyle()
.buttonStyle(OrbitButtonLinkButtonStyle(type: .status(nil)))
.buttonSize(.default)
primaryButton(primary)
secondaryButton(secondary)
}

@ViewBuilder
public static func buildBlock(_ primary: some View, _ secondary: some View, _ tertiary: some View) -> some View {
primary
.suppressButtonStyle()
.buttonStyle(OrbitButtonStyle(type: .status(nil)))
.accessibility(.dialogButtonPrimary)

Group {
secondary
.accessibility(.dialogButtonSecondary)

tertiary
.accessibility(.dialogButtonTertiary)
}
.suppressButtonStyle()
.buttonStyle(OrbitButtonLinkButtonStyle(type: .status(nil)))
.buttonSize(.default)
primaryButton(primary)
secondaryButton(secondary)
tertiaryButton(tertiary)
}

public static func buildOptional<V: View>(_ component: V?) -> V? {
Expand All @@ -141,6 +119,30 @@ public enum DialogButtonsBuilder {
public static func buildEither<T: View, F: View>(second view: F) -> _ConditionalContent<T, F> {
.init(content: .falseView(view))
}

static func primaryButton(_ content: some View) -> some View {
content
.suppressButtonStyle()
.buttonStyle(OrbitButtonStyle(type: .status(nil)))
.accessibility(.dialogButtonPrimary)
}

static func nonPrimaryButton(_ content: some View) -> some View {
content
.suppressButtonStyle()
.buttonStyle(OrbitButtonLinkButtonStyle(type: .status(nil)))
.buttonSize(.default)
}

static func secondaryButton(_ content: some View) -> some View {
nonPrimaryButton(content)
.accessibility(.dialogButtonSecondary)
}

static func tertiaryButton(_ content: some View) -> some View {
nonPrimaryButton(content)
.accessibility(.dialogButtonTertiary)
}
}

// MARK: - Identifiers
Expand Down

0 comments on commit c1ed261

Please sign in to comment.