1 contributor
//
// ChevronView.swift
// USB Meter
//
// Created by Bogdan Timofte on 02/05/2020.
// Copyright © 2020 Bogdan Timofte. All rights reserved.
//
import SwiftUI
struct ChevronView: View {
@Binding var rotate: Bool
var body: some View {
Button(action: {
self.rotate.toggle()
}) {
Image(systemName: "chevron.right.circle")
.imageScale(.large)
.rotationEffect(.degrees(rotate ? 270 : 90))
.animation(.easeInOut, value: rotate)
.padding(.vertical)
}
}
}
struct ContextInfoButton: View {
let title: String
let message: String
let popoverWidth: CGFloat
@State private var showsPopover = false
init(
title: String,
message: String,
popoverWidth: CGFloat = 280
) {
self.title = title
self.message = message
self.popoverWidth = popoverWidth
}
var body: some View {
Button {
showsPopover.toggle()
} label: {
Image(systemName: "info.circle")
.font(.body.weight(.semibold))
.foregroundColor(.secondary)
}
.buttonStyle(.plain)
.accessibilityLabel("\(title) info")
.popover(isPresented: $showsPopover, arrowEdge: .top) {
VStack(alignment: .leading, spacing: 10) {
Text(title)
.font(.headline)
Text(message)
.font(.body)
.fixedSize(horizontal: false, vertical: true)
}
.padding(16)
.frame(width: popoverWidth, alignment: .leading)
}
}
}
struct ContextInfoHeader: View {
let title: String
let message: String
var body: some View {
HStack(spacing: 8) {
Text(title)
Spacer(minLength: 0)
ContextInfoButton(title: title, message: message)
}
}
}