mirror of
https://github.com/XcodesOrg/XcodesApp.git
synced 2026-03-25 08:55:46 +00:00
48 lines
1.3 KiB
Swift
48 lines
1.3 KiB
Swift
//
|
|
// NavigationSplitViewWrapper.swift
|
|
// Xcodes
|
|
//
|
|
// Created by Matt Kiazyk on 2023-12-12.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct NavigationSplitViewWrapper<Sidebar, Detail>: View where Sidebar: View, Detail: View {
|
|
private var sidebar: Sidebar
|
|
private var detail: Detail
|
|
|
|
init(
|
|
@ViewBuilder sidebar: () -> Sidebar,
|
|
@ViewBuilder detail: () -> Detail
|
|
) {
|
|
self.sidebar = sidebar()
|
|
self.detail = detail()
|
|
}
|
|
|
|
var body: some View {
|
|
if #available(iOS 16, macOS 13, tvOS 16, watchOS 9, visionOS 1, *) {
|
|
// Use the latest API available
|
|
NavigationSplitView {
|
|
|
|
if #available(macOS 14, *) {
|
|
sidebar
|
|
.navigationSplitViewColumnWidth(min: 290, ideal: 290)
|
|
} else {
|
|
sidebar
|
|
}
|
|
} detail: {
|
|
detail
|
|
}
|
|
.navigationSplitViewStyle(.balanced)
|
|
} else {
|
|
// Alternative code for earlier versions of OS.
|
|
NavigationView {
|
|
// The first column is the sidebar.
|
|
sidebar
|
|
.frame(minWidth: 300)
|
|
detail
|
|
}
|
|
.navigationViewStyle(.columns)
|
|
}
|
|
}
|
|
}
|