50 lines
1.3 KiB
Swift
50 lines
1.3 KiB
Swift
//
|
|
// ScrollView.swift
|
|
// MacBackend
|
|
//
|
|
// Created by david-swift on 02.12.2024.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
/// The scroll view widget.
|
|
public struct ScrollView: SwiftUIWidget {
|
|
|
|
/// The axes.
|
|
var axes: Set<Axis>
|
|
/// The view's content.
|
|
var content: Body
|
|
/// Whether to hide the scroll indicators.
|
|
var hideScrollIndicators = false
|
|
|
|
/// The wrapped views.
|
|
public var wrappedViews: [String: any Meta.AnyView] {
|
|
[.mainContent: content]
|
|
}
|
|
|
|
/// Initialize the scroll view.
|
|
/// - Parameter content: The content view.
|
|
public init(_ axes: Set<Axis> = .vertical, @Meta.ViewBuilder content: () -> Body) {
|
|
self.content = content()
|
|
self.axes = axes
|
|
}
|
|
|
|
/// Get the SwiftUI view.
|
|
/// - Parameter properties: The widget data.
|
|
/// - Returns: The SwiftUI view.
|
|
public static func view(properties: Self) -> some SwiftUI.View {
|
|
SwiftUI.ScrollView(properties.axes.swiftUI) {
|
|
MacBackendView(.mainContent)
|
|
}
|
|
.scrollIndicators(properties.hideScrollIndicators ? .hidden : .automatic)
|
|
}
|
|
|
|
/// Whether to hide the scroll indicators.
|
|
/// - Parameter enabled: Whether the scroll indicators are hidden.
|
|
/// - Returns: The scroll view.
|
|
public func hideScrollIndicators(_ enabled: Bool = true) -> Self {
|
|
modify { $0.hideScrollIndicators = enabled }
|
|
}
|
|
|
|
}
|