// // TextEntryField.swift // VDS // // Created by Matt Bruce on 10/3/22. // import Foundation import UIKit import VDSColorTokens import Combine public class TextEntryField: TextEntryFieldBase{} open class TextEntryFieldBase: EntryField { //-------------------------------------------------- // MARK: - Public Properties //-------------------------------------------------- @Proxy(\.model.type) public var type: TextEntryFieldType //-------------------------------------------------- // MARK: - State //-------------------------------------------------- open override func updateView(viewModel: ModelType) { super.updateView(viewModel: viewModel) containerView.backgroundColor = backgroundColorConfiguration.getColor(viewModel) containerView.layer.borderColor = borderColorConfiguration.getColor(viewModel).cgColor containerView.layer.borderWidth = 1 containerView.layer.cornerRadius = 4 //set the width constraints if let width = viewModel.width, width > viewModel.type.width { widthConstraint?.constant = width widthConstraint?.isActive = true minWidthConstraint?.isActive = false } else { minWidthConstraint?.constant = viewModel.type.width widthConstraint?.isActive = false minWidthConstraint?.isActive = true } } } extension TextEntryFieldType { var width: CGFloat { switch self { case .inlineAction: return 102 case .password: return 62.0 case .creditCard: return 288.0 case .tel: return 176.0 case .date: return 114.0 case .securityCode: return 88.0 default: return 40.0 } } }