vds_ios/VDS/Components/TextFields/EntryField/EntryFieldModel.swift
Matt Bruce 02325d0d30 updated entry fields
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2022-10-10 14:17:17 -05:00

85 lines
2.4 KiB
Swift

//
// EntryFieldModel.swift
// VDS
//
// Created by Matt Bruce on 10/3/22.
//
import Foundation
public enum HelperTextPlacement: String, CaseIterable {
case bottom, right
}
public protocol EntryFieldModel: Modelable, FormFieldable, Errorable {
var defaultVaue: AnyHashable? { get set }
var required: Bool { get set }
var readOnly: Bool { get set }
var labelText: String? { get set }
var helperText: String? { get set }
var helperTextPlacement: HelperTextPlacement { get set }
var transparentBackground: Bool { get set }
var width: CGFloat? { get set }
var maxLength: Int? { get set }
var tooltipTitle: String? { get set }
var tooltipContent: String? { get set }
}
extension EntryFieldModel {
public var labelModel: DefaultLabelModel {
var model = DefaultLabelModel()
model.textPosition = .left
model.typograpicalStyle = .BodySmall
model.text = labelText
model.surface = surface
model.disabled = disabled
return model
}
public var helperLabelModel: DefaultLabelModel? {
guard let helperText else { return nil }
var model = DefaultLabelModel()
model.textPosition = .left
model.typograpicalStyle = .BodySmall
model.text = helperText
model.surface = surface
model.disabled = disabled
return model
}
public var errorLabelModel: DefaultLabelModel? {
guard let errorText else { return nil }
var model = DefaultLabelModel()
model.textPosition = .left
model.typograpicalStyle = .BodySmall
model.text = errorText
model.surface = surface
model.disabled = disabled
return model
}
public var tooltipTitleModel: DefaultLabelModel? {
guard let tooltipTitle else { return nil }
var model = DefaultLabelModel()
model.textPosition = .left
model.typograpicalStyle = .BodySmall
model.text = tooltipTitle
model.surface = surface
model.disabled = disabled
return model
}
public var tooltipContentModel: DefaultLabelModel? {
guard let tooltipContent else { return nil }
var model = DefaultLabelModel()
model.textPosition = .left
model.typograpicalStyle = .BodySmall
model.text = tooltipContent
model.surface = surface
model.disabled = disabled
return model
}
}