macbackend/Sources/MacBackend/AnyView.swift
david-swift 7f53c267d2
All checks were successful
Deploy Docs / publish (push) Successful in 3m10s
SwiftLint / SwiftLint (push) Successful in 1s
Use signal for presenting menus
2024-12-13 21:50:50 +01:00

64 lines
2.1 KiB
Swift

//
// AnyView.swift
// MacBackend
//
// Created by david-swift on 04.12.2024.
//
@_exported import Core
extension AnyView {
// swiftlint:disable function_default_parameter_at_end
/// Add an alert to a view.
/// - Parameters:
/// - title: The title.
/// - description: The description.
/// - isPresented: Whether the alert is visible.
/// - Returns: The alert.
public func alert(_ title: String, description: String = "", isPresented: Meta.Binding<Bool>) -> Alert {
.init(title: title, description: description, isPresented: isPresented, child: self)
}
// swiftlint:enable function_default_parameter_at_end
/// Set the padding.
/// - Parameters:
/// - padding: The padding.
/// - edges: The edges.
/// - Returns: The view.
public func padding(_ padding: Double, edges: Set<Edge> = .all) -> AnyView {
PaddingView(padding: padding, edges: edges, child: self)
}
/// A menu over the view.
/// - Parameters:
/// - isPresented: Whether the menu is currently visible.
/// - menu: The menu.
/// - Returns: The view.
public func menu(present: Signal, @ViewBuilder menu: @escaping () -> Body) -> AnyView {
MenuWrapper(content: { self }, present: present, menu: menu)
}
/// Add toolbar items to the end.
/// - Parameter content: The toolbar's content.
/// - Returns: The view.
public func toolbar(@ViewBuilder content: () -> Body) -> AnyView {
ToolbarView(child: self, type: .end, toolbarViews: content)
}
/// Add toolbar items to the start.
/// - Parameter content: The toolbar's content.
/// - Returns: The view.
public func leadingToolbar(@ViewBuilder content: () -> Body) -> AnyView {
ToolbarView(child: self, type: .start, toolbarViews: content)
}
/// Add centered toolbar items.
/// - Parameter content: The toolbar's content.
/// - Returns: The view.
public func centeredToolbar(@ViewBuilder content: () -> Body) -> AnyView {
ToolbarView(child: self, type: .center, toolbarViews: content)
}
}