Schedule-ICTIS/Schedule ICTIS/Main/Views/SearchBarView.swift
Vladimir Dubovik 14c229175c Commit
2025-04-03 11:10:21 +03:00

93 lines
3.1 KiB
Swift

//
// SearchBarView.swift
// Schedule ICTIS
//
// Created by Mironov Egor on 13.11.2024.
//
import SwiftUI
struct SearchBarView: View {
@Binding var text: String
@FocusState var isFocused: Bool
@State private var isShowingSheet: Bool = false
@ObservedObject var vm: ScheduleViewModel
@Binding var isShowingMonthSlider: Bool
var provider = ClassProvider.shared
var body: some View {
HStack (spacing: 11) {
HStack (spacing: 0) {
Image(systemName: "magnifyingglass")
.foregroundColor(Color.gray)
.padding(.leading, 12)
.padding(.trailing, 7)
TextField("Поиск группы", text: $text)
.disableAutocorrection(true)
.focused($isFocused)
.onSubmit {
self.isFocused = false
if (!text.isEmpty) {
vm.nameToHtml[vm.searchingGroup] = nil
vm.removeFromSchedule(group: vm.searchingGroup)
text = transformStringToFormat(text)
vm.searchingGroup = text
vm.nameToHtml[text] = ""
vm.fetchWeekSchedule()
vm.updateFilteringGroups()
}
self.text = ""
}
.submitLabel(.search)
if isFocused {
Button {
self.text = ""
self.isFocused = false
} label: {
Image(systemName: "xmark.circle.fill")
.padding(.trailing, 20)
.offset(x: 10)
.foregroundColor(.gray)
.background(
)
}
}
}
.simultaneousGesture(TapGesture().onEnded {
self.isShowingMonthSlider = false
})
.frame(height: 40)
.background(
RoundedRectangle(cornerRadius: 10)
.fill(.white)
)
if !isFocused {
Button {
isShowingSheet = true
} label: {
ZStack {
Rectangle()
.frame(width: 40, height: 40)
.foregroundStyle(Color("blueColor"))
.cornerRadius(15)
Image(systemName: "plus")
.resizable()
.foregroundStyle(.white)
.scaledToFit()
.frame(width: 16)
}
}
}
}
.padding(.horizontal)
.padding(.top, 5)
.frame(height: 40)
.accentColor(.blue)
.sheet(isPresented: $isShowingSheet) {
CreateEditClassView(vm: .init(provider: provider), day: vm.selectedDay)
}
}
}