87 lines
2.9 KiB
Swift
87 lines
2.9 KiB
Swift
//
|
|
// RouletteSettingsOptionView.swift
|
|
// SodaLive
|
|
//
|
|
// Created by klaus on 2023/12/05.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct RouletteSettingsOptionView: View {
|
|
|
|
@ObservedObject var option: RouletteOption
|
|
|
|
let index: Int
|
|
let onClickDelete: () -> Void
|
|
let calculateTotalPercentage: () -> Void
|
|
|
|
var body: some View {
|
|
VStack(spacing: 6.7) {
|
|
HStack(spacing: 0) {
|
|
Text("옵션 \(index + 1)")
|
|
.font(.custom(Font.medium.rawValue, size: 14.7))
|
|
.foregroundColor(Color(hex: "eeeeee"))
|
|
|
|
Spacer()
|
|
|
|
if index > 1 {
|
|
Text("삭제")
|
|
.font(.custom(Font.medium.rawValue, size: 14.7))
|
|
.foregroundColor(Color(hex: "ff5c49"))
|
|
.onTapGesture { onClickDelete() }
|
|
}
|
|
}
|
|
|
|
HStack(spacing: 8) {
|
|
TextField("옵션을 입력하세요", text: $option.title)
|
|
.autocapitalization(.none)
|
|
.disableAutocorrection(true)
|
|
.font(.custom(Font.medium.rawValue, size: 13.3))
|
|
.foregroundColor(Color(hex: "eeeeee"))
|
|
.keyboardType(.default)
|
|
.padding(.horizontal, 13.3)
|
|
.padding(.vertical, 16.7)
|
|
.frame(maxWidth: .infinity)
|
|
.background(Color(hex: "222222"))
|
|
.cornerRadius(6.7)
|
|
|
|
HStack(spacing: 0) {
|
|
TextField("0.00", text: $option.percentage)
|
|
.autocapitalization(.none)
|
|
.disableAutocorrection(true)
|
|
.font(.custom(Font.medium.rawValue, size: 13.3))
|
|
.foregroundColor(Color(hex: "eeeeee"))
|
|
.keyboardType(.decimalPad)
|
|
.onChange(of: option.percentage) { newValue in
|
|
if newValue.count > 5 {
|
|
option.percentage = String(newValue.prefix(5))
|
|
}
|
|
|
|
calculateTotalPercentage()
|
|
}
|
|
|
|
Text("%")
|
|
.font(.custom(Font.medium.rawValue, size: 13.3))
|
|
.foregroundColor(Color(hex: "eeeeee"))
|
|
}
|
|
.padding(.horizontal, 13.3)
|
|
.padding(.vertical, 16.7)
|
|
.frame(maxWidth: 85)
|
|
.background(Color(hex: "222222"))
|
|
.cornerRadius(6.7)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
struct RouletteSettingsOptionView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
RouletteSettingsOptionView(
|
|
option: RouletteOption(title: "옵션1", percentage: ""),
|
|
index: 2,
|
|
onClickDelete: {},
|
|
calculateTotalPercentage: {}
|
|
)
|
|
}
|
|
}
|