// // PollOptionRow.swift // // // Created by MainasuK on 2022-5-31. // import SwiftUI import MastodonAsset import MastodonCore import MastodonLocalization public struct PollOptionRow: View { @ObservedObject var viewModel: PollComposeItem.Option let index: Int let moveUp: (() -> Void)? let moveDown: (() -> Void)? let removeOption: (() -> Void)? let deleteBackwardResponseTextFieldRelayDelegate: DeleteBackwardResponseTextFieldRelayDelegate? let configurationHandler: (DeleteBackwardResponseTextField) -> Void public var body: some View { HStack(alignment: .center, spacing: 16) { HStack(alignment: .center, spacing: .zero) { Image(systemName: "circle") .frame(width: 20, height: 20) .padding(.leading, 16) .padding(.trailing, 16 - 10) // 8pt for TextField leading .font(.system(size: 17)) .accessibilityHidden(true) let field = PollOptionTextField( text: $viewModel.text, index: index, delegate: deleteBackwardResponseTextFieldRelayDelegate ) { textField in viewModel.textField = textField configurationHandler(textField) } .onReceive(viewModel.$shouldBecomeFirstResponder) { shouldBecomeFirstResponder in guard shouldBecomeFirstResponder else { return } viewModel.shouldBecomeFirstResponder = false viewModel.textField?.becomeFirstResponder() } field.accessibilityActions { if let moveUp { Button(L10n.Scene.Compose.Poll.moveUp, action: moveUp) } if let moveDown { Button(L10n.Scene.Compose.Poll.moveDown, action: moveDown) } if let removeOption { Button(L10n.Scene.Compose.Poll.removeOption, action: removeOption) } } } .background(Color(viewModel.backgroundColor)) .cornerRadius(10) .shadow(color: .black.opacity(0.3), radius: 2, x: 0, y: 1) Image(uiImage: Asset.Scene.Compose.reorderDot.image.withRenderingMode(.alwaysTemplate)) .foregroundColor(Color(UIColor.label)) .accessibilityHidden(true) } .background(Color.clear) } }