65 lines
1.7 KiB
Swift
65 lines
1.7 KiB
Swift
//
|
|
// TextEntryField.swift
|
|
// VDS
|
|
//
|
|
// Created by Matt Bruce on 10/3/22.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
import VDSColorTokens
|
|
import Combine
|
|
|
|
public class TextEntryField: TextEntryFieldBase<DefaultTextEntryField>{}
|
|
|
|
open class TextEntryFieldBase<ModelType:TextEntryFieldModel>: EntryField<ModelType> {
|
|
|
|
//--------------------------------------------------
|
|
// MARK: - Public Properties
|
|
//--------------------------------------------------
|
|
|
|
@Proxy(\.model.type)
|
|
public var type: TextEntryFieldType
|
|
|
|
|
|
//--------------------------------------------------
|
|
// MARK: - State
|
|
//--------------------------------------------------
|
|
open override func updateView(viewModel: ModelType) {
|
|
super.updateView(viewModel: viewModel)
|
|
containerView.backgroundColor = .red
|
|
|
|
//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
|
|
}
|
|
}
|
|
}
|