86 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
//
 | 
						|
//  FaqView.swift
 | 
						|
//  SodaLive
 | 
						|
//
 | 
						|
//  Created by klaus on 2023/08/11.
 | 
						|
//
 | 
						|
 | 
						|
import SwiftUI
 | 
						|
import RichText
 | 
						|
 | 
						|
struct FaqView: View {
 | 
						|
    
 | 
						|
    let faqs: [Faq]
 | 
						|
    
 | 
						|
    @State private var openIndex = -1
 | 
						|
    
 | 
						|
    var body: some View {
 | 
						|
        VStack(spacing: 0) {
 | 
						|
            ForEach(0..<faqs.count, id: \.self) { index in
 | 
						|
                let faq = faqs[index]
 | 
						|
                
 | 
						|
                VStack(spacing: 0) {
 | 
						|
                    HStack(alignment: .top, spacing: 6.7) {
 | 
						|
                        Text("Q")
 | 
						|
                            .font(.custom(Font.bold.rawValue, size: 13.3))
 | 
						|
                            .foregroundColor(Color.button)
 | 
						|
                        
 | 
						|
                        Text(faq.question)
 | 
						|
                            .font(.custom(Font.medium.rawValue, size: 14.7))
 | 
						|
                            .foregroundColor(Color.grayee)
 | 
						|
                            .fixedSize(horizontal: false, vertical: true)
 | 
						|
                        
 | 
						|
                        Spacer()
 | 
						|
                        
 | 
						|
                        Image(openIndex == index ? "btn_dropdown_up" : "btn_dropdown_down")
 | 
						|
                            .resizable()
 | 
						|
                            .frame(width: 20, height: 20)
 | 
						|
                    }
 | 
						|
                    .padding(.vertical, 20)
 | 
						|
                    .padding(.horizontal, 6.7)
 | 
						|
                    
 | 
						|
                    if openIndex == index {
 | 
						|
                        HStack(alignment: .top, spacing: 6.7) {
 | 
						|
                            Text("A")
 | 
						|
                                .font(.custom(Font.bold.rawValue, size: 13.3))
 | 
						|
                                .foregroundColor(Color.button)
 | 
						|
                                .padding(.top, 13.3)
 | 
						|
                            
 | 
						|
                            RichText(html: faq.answer)
 | 
						|
                                .font(.custom(Font.medium.rawValue, size: 13.3))
 | 
						|
                                .foregroundColor(Color.graybb)
 | 
						|
                        }
 | 
						|
                        .padding(.vertical, 20)
 | 
						|
                        .padding(.horizontal, 6.7)
 | 
						|
                        .background(Color.gray22)
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                .padding(.horizontal, 13.3)
 | 
						|
                .contentShape(Rectangle())
 | 
						|
                .onTapGesture {
 | 
						|
                    if openIndex != index {
 | 
						|
                        openIndex = index
 | 
						|
                    } else {
 | 
						|
                        openIndex = -1
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        .padding(.bottom, 40)
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
struct FaqView_Previews: PreviewProvider {
 | 
						|
    static var previews: some View {
 | 
						|
        FaqView(
 | 
						|
            faqs: [
 | 
						|
                Faq(question: "질문1", answer: "답변1"),
 | 
						|
                Faq(question: "질문2", answer: "답변2"),
 | 
						|
                Faq(question: "질문3", answer: "답변3"),
 | 
						|
                Faq(question: "질문4", answer: "답변4"),
 | 
						|
                Faq(question: "질문5", answer: "답변5")
 | 
						|
            ]
 | 
						|
        )
 | 
						|
    }
 | 
						|
}
 |