From d9832f3f5d3de504957fbdbe8ad55c0b491514a3 Mon Sep 17 00:00:00 2001 From: Andreas Bauer Date: Wed, 31 Jan 2024 15:10:02 -0800 Subject: [PATCH] Remove NoInformationText again --- .../Views/Text/NoInformationText.swift | 117 ------------------ Tests/SpeziViewsTests/SnapshotTests.swift | 8 -- .../SnapshotTests/testNoInformationText.1.png | Bin 76601 -> 0 bytes 3 files changed, 125 deletions(-) delete mode 100644 Sources/SpeziViews/Views/Text/NoInformationText.swift delete mode 100644 Tests/SpeziViewsTests/__Snapshots__/SnapshotTests/testNoInformationText.1.png diff --git a/Sources/SpeziViews/Views/Text/NoInformationText.swift b/Sources/SpeziViews/Views/Text/NoInformationText.swift deleted file mode 100644 index bb34e1f..0000000 --- a/Sources/SpeziViews/Views/Text/NoInformationText.swift +++ /dev/null @@ -1,117 +0,0 @@ -// -// This source file is part of the Stanford Spezi open-source project -// -// SPDX-FileCopyrightText: 2024 Stanford University and the project authors (see CONTRIBUTORS.md) -// -// SPDX-License-Identifier: MIT -// - -import SwiftUI - - -/// Communicate non-present information. -/// -/// This view provides a unified style to communicate information that is not present yet. -/// You communicate to the user why no information is shown with a short descriptive title and elaborate -/// on the steps necessary to add information in a more descriptive caption text. -/// -/// In the example of the contacts app you could display a "No Contacts" header with a caption "Contacts -/// you've added will appear here." when no contacts were added to the list yet. -/// The below code demonstrates how to do this with the `NoInformationText`. -/// -/// ```swift -/// struct ContactsList: View { -/// private let contacts: [Contact] -/// -/// var body: some View { -/// if contacts.isEmpty { -/// NoInformationText(header: "No Contacts", caption: "Contacts you've added will appear here.") -/// } else { -/// // ... -/// } -/// } -/// -/// init(_ contacts: [Contact]) { -/// self.contacts = contacts -/// } -/// } -/// ``` -public struct NoInformationText: View { - private let header: Header - private let caption: Caption - - public var body: some View { - VStack { - header - .font(.title2) - .bold() - .accessibilityAddTraits(.isHeader) - caption - .padding([.leading, .trailing], 25) - .foregroundColor(.secondary) - } - .multilineTextAlignment(.center) - .frame(maxWidth: .infinity) - } - - - /// Create a new no-information text. - /// - Parameters: - /// - verbatim: The header string. - /// - caption: The descriptive caption view. - public init(verbatim header: String, @ViewBuilder caption: () -> Caption) where Header == Text { - self.init(header, caption: caption) - } - - /// Create a new no-information text. - /// - Parameters: - /// - header: The header string. - /// - caption: The descriptive caption view. - @_disfavoredOverload - public init(_ header: String, @ViewBuilder caption: () -> Caption) where Header == Text { - self.init(header: { Text(verbatim: header) }, caption: caption) - } - - /// Create a new no-information text. - /// - Parameters: - /// - header: The localized header text. - /// - caption: The descriptive caption view. - public init(_ header: LocalizedStringResource, @ViewBuilder caption: () -> Caption) where Header == Text { - self.init(header: { Text(header) }, caption: caption) - } - - /// Create a new no-information text. - /// - Parameters: - /// - header: The header view. - /// - caption: The descriptive caption view. - public init(@ViewBuilder header: () -> Header, @ViewBuilder caption: () -> Caption) { - self.header = header() - self.caption = caption() - } -} - - -#if DEBUG -#Preview { - NoInformationText { - Text(verbatim: "No Information") - } caption: { - Text(verbatim: "Please add information to show some information.") - } -} - -#Preview { - GeometryReader { proxy in - List { - NoInformationText { - Text(verbatim: "No Information") - } caption: { - Text(verbatim: "Please add information to show some information.") - } - .listRowInsets(.init(top: 0, leading: 0, bottom: 0, trailing: 0)) - .listRowBackground(Color.clear) - .frame(height: proxy.size.height - 100) - } - } -} -#endif diff --git a/Tests/SpeziViewsTests/SnapshotTests.swift b/Tests/SpeziViewsTests/SnapshotTests.swift index 8edfc75..820b498 100644 --- a/Tests/SpeziViewsTests/SnapshotTests.swift +++ b/Tests/SpeziViewsTests/SnapshotTests.swift @@ -13,14 +13,6 @@ import XCTest final class SnapshotTests: XCTestCase { - func testNoInformationText() { - let view = NoInformationText(verbatim: "No Contacts") { - Text(verbatim: "Newly added contacts will appear here.") - } - - assertSnapshot(of: view, as: .image(layout: .device(config: .iPhone13Pro))) - } - func testListRow() { let row = List { ListRow(verbatim: "San Francisco") { diff --git a/Tests/SpeziViewsTests/__Snapshots__/SnapshotTests/testNoInformationText.1.png b/Tests/SpeziViewsTests/__Snapshots__/SnapshotTests/testNoInformationText.1.png deleted file mode 100644 index aa94259bf75967dc60ace1829b72795a2a009c3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76601 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