From a9f11e91b8e447ec7cb50572be401b47b386ce16 Mon Sep 17 00:00:00 2001 From: Pavel Holec Date: Tue, 22 Aug 2023 15:48:00 +0200 Subject: [PATCH] Refactor Dialog button builder --- Sources/Orbit/Components/Dialog.swift | 58 ++++++++++++++------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/Sources/Orbit/Components/Dialog.swift b/Sources/Orbit/Components/Dialog.swift index 73af6c45211..8c090681c14 100644 --- a/Sources/Orbit/Components/Dialog.swift +++ b/Sources/Orbit/Components/Dialog.swift @@ -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(_ component: V?) -> V? { @@ -141,6 +119,30 @@ public enum DialogButtonsBuilder { public static func buildEither(second view: F) -> _ConditionalContent { .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