gh-XcodesOrg-XcodesApp/Xcodes/Frontend/InfoPane/ReleaseNotesView.swift
Duong Thai f1fea6365c move release notes to ReleaseNotesView.swift
- narrow down interfaces of some functions
2023-11-23 22:46:22 +07:00

62 lines
1.4 KiB
Swift

//
// ReleaseNotesView.swift
// Xcodes
//
// Created by Duong Thai on 13/10/2023.
// Copyright © 2023 Robots and Pencils. All rights reserved.
//
import SwiftUI
struct ReleaseNotesView: View {
let url: URL?
@SwiftUI.Environment(\.openURL) var openURL: OpenURLAction
var body: some View {
if let url = url {
Button(action: { openURL(url) }) {
Label("ReleaseNotes", systemImage: "link")
}
.buttonStyle(LinkButtonStyle())
.contextMenu(menuItems: {
CopyReleaseNoteButton(url: url)
})
.frame(maxWidth: .infinity, alignment: .leading)
.help("ReleaseNotes.help")
} else {
EmptyView()
}
}
}
struct ReleaseNotesView_Preview: PreviewProvider {
static var previews: some View {
WrapperView()
}
}
private struct WrapperView: View {
@State var hasURL = false
var url: URL? {
hasURL
? nil
: URL(string: "https://developer.apple.com/documentation/xcode-release-notes/xcode-12_3-release-notes/")!
}
var body: some View {
VStack {
HStack {
ReleaseNotesView(url: url)
.border(.red)
}
Spacer()
Toggle(isOn: $hasURL) {
Text("Has URL?")
}
}
.animation(.default)
.frame(width: 300, height: 100)
.padding()
}
}