Untitled
unknown
plain_text
9 months ago
5.5 kB
6
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()
}
}
Editor is loading...
Leave a Comment