Untitled

 avatar
unknown
plain_text
a month ago
5.5 kB
4
Indexable
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-586", 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(maxHeight: 36)
            .zIndex(1)
 
            ScrollView (.vertical, showsIndicators: false){
                VStack(spacing: 15) {
                    ForEach(sortedGroups) { order in
                        TotalOrderRow(order: order)
                    }
                }
            }
            .padding(.top, 30)
        }
        .padding(.horizontal, 20)
        .navigationBarBackButtonHidden(true)
        .navigationBarTitle("Orders")
        .navigationBarTitleDisplayMode(.inline)
        .toolbar {
            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