Untitled
import SwiftUI struct TotalOrder: View { @Environment(\.presentationMode) var presentationMode @State private var isSearchBarVisible = false @State private var isDropDownVisible = false @State private var searchText = "" let orders: [ProductOrder] = [ ProductOrder(name: "Angel Reese", phone: "085-903-586", date: "14-10-2024", paymentStatus: "Paid", deliveryStatus: "Delivered", prices: "100", isPaid: true, isDelivered: true), ProductOrder(name: "John Doe", phone: "085-903-586", date: "14-10-2024", paymentStatus: "Pending", deliveryStatus: "Delivered", prices: "1000", isPaid: true, isDelivered: true), ProductOrder(name: "Jeffery King", phone: "085-903-586", date: "14-10-2024", paymentStatus: "Paid", deliveryStatus: "Delivered", prices: "10000", isPaid: false, isDelivered: false), ProductOrder(name: "Charles", phone: "085-903-58", date: "14-10-2024", paymentStatus: "Pending", deliveryStatus: "Processing", prices: "10", isPaid: true, isDelivered: true), ProductOrder(name: "Angel Reese", phone: "085-903-586", date: "14-10-2024", paymentStatus: "Pending", deliveryStatus: "Processing", prices: "1", isPaid: true, isDelivered: false) ] @State private var selectedOption = "All" // @State private var selectedOption2 = "All" @State private var showDropdown = false // @State private var defaultsoption = "Option 2" //@State private var showDropdown2 = false @State private var optionse = "Option 1" @StateObject var dropdownState = DropdownState() let options = ["All", "a-z", "z-a", "Last added"] let options2 = ["All", "Paid", "Pending", "Cancelled"] var sortedGroups: [ProductOrder] { let filteredGroups = orders.filter { group in searchText.isEmpty || group.name.localizedCaseInsensitiveContains(searchText) } return filteredGroups.sorted { $0.name < $1.name } } var body: some View { VStack{ HStack { if isSearchBarVisible { HStack { Image("searchbar") // Image(systemName: "magnifyingglass") .resizable() .frame(width:24, height: 24) .foregroundColor(Color(hex: "#818898")) .padding(.leading,15) TextField("Search", text: $searchText) .font(Font.custom("PlusJakartaSans", size: 14).weight(.medium)) .foregroundColor(Color(hex: "#818898")) .padding(3) .onChange(of: searchText) { _ in handleDropdownVisibility() } } .frame(height:52) .background(RoundedRectangle(cornerRadius: 10).stroke(Color(hex: "#DFE1E7"), lineWidth: 1)) } } .padding(.vertical,10) .padding(.horizontal,10) HStack { // First DropdownView instance DropdownView(dropdownState: dropdownState, firstOptions: options, secondOptions: options2, firstPlaceholder: "All", secondPlaceholder: "All", selectedOrder: "order") .onChange(of: dropdownState.selectedFirstOption) { newOption in print("Selected First Option (Parent): \(newOption)") } .onChange(of: dropdownState.selectedSecondOption) { newOption in print("Selected Second Option (Parent): \(newOption)") } } //.//padding(.top, 10) .frame(height: 36) .zIndex(1) HStack { // Line on the left Rectangle() .frame(height: 1) .foregroundColor(Color(hex: "#DFE1E7")) // // Text in the middle // Text("Or continue with") // .foregroundColor(.gray) // .font(.plusJakartaSans(size: 12, weight: .regular)) // .lineLimit(1) // Line on the right // Rectangle() // .frame(height: 1) // .foregroundColor(.gray) } .padding(.top,10) ScrollView (.vertical, showsIndicators: false){ VStack(spacing: 11) { ForEach(sortedGroups) { order in TotalOrderRow(order: order) } } } .padding(.top,10) //.padding(.top, 30) } .padding(.horizontal, 20) .navigationBarBackButtonHidden(true) // .navigationBarTitle("Orders") // .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .principal) { Text("Orders") .font(Font.custom("Plus Jakarta Sans", size: 18).weight(.bold)) .foregroundColor(.black) } ToolbarItem(placement: .navigationBarTrailing) { Button(action: { withAnimation { isSearchBarVisible.toggle() } }) { Image("pencil_plus") } } } .navigationBarBackButtonHidden(true) // Hide the default back button .navigationBarItems(leading: Button(action: { presentationMode.wrappedValue.dismiss() }) { Image(systemName: "arrow.left") .foregroundColor(.black) }) } func handleDropdownVisibility() { if !searchText.isEmpty { dropdownState.isSecondDropdownVisible = false dropdownState.isFirstDropdownVisible = false } } } struct TotalOrder_Previews: PreviewProvider { static var previews: some View { TotalOrder() } }
Leave a Comment