Files
omnivore/apple/OmnivoreKit/Sources/Views/SearchBar.swift
2022-07-20 10:06:09 -07:00

63 lines
1.5 KiB
Swift

import SwiftUI
public struct SearchBar: View {
private let horizontalPadding: Double
@Binding var searchTerm: String
@FocusState private var isFocused: Bool
public init(
searchTerm: Binding<String>,
horizontalPadding: Double = 10
) {
self._searchTerm = searchTerm
self.horizontalPadding = horizontalPadding
}
public var body: some View {
HStack(spacing: 0) {
TextField("Search", text: $searchTerm)
.padding(7)
.padding(.horizontal, 25)
.background(Color.systemGray6)
.cornerRadius(8)
.focused($isFocused)
.overlay(
HStack {
Image(systemName: "magnifyingglass")
.foregroundColor(.gray)
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
.padding(.leading, 10)
if self.searchTerm != "" {
Button(
action: {
self.searchTerm = ""
},
label: {
Image(systemName: "multiply.circle.fill")
.foregroundColor(.gray)
.padding(.trailing, 8)
}
)
}
}
)
.padding(.horizontal, horizontalPadding)
if isFocused {
Button(
action: {
self.searchTerm = ""
self.isFocused = false
},
label: {
Text("Cancel")
}
)
.padding(.trailing, 10)
.transition(.move(edge: .trailing))
}
}
}
}