70 lines
1.9 KiB
Swift
70 lines
1.9 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 showSuccess: Bool { get set }
|
|
var successText: String? { get set }
|
|
var transparentBackground: Bool { get set }
|
|
var width: CGFloat? { get set }
|
|
var maxLength: Int? { 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? {
|
|
var model = DefaultLabelModel()
|
|
model.textPosition = .left
|
|
model.typograpicalStyle = .BodySmall
|
|
model.text = helperText
|
|
model.surface = surface
|
|
model.disabled = disabled
|
|
return model
|
|
}
|
|
|
|
public var errorLabelModel: DefaultLabelModel? {
|
|
var model = DefaultLabelModel()
|
|
model.textPosition = .left
|
|
model.typograpicalStyle = .BodySmall
|
|
model.text = errorText
|
|
model.surface = surface
|
|
model.disabled = disabled
|
|
return model
|
|
}
|
|
|
|
public var successLabelModel: DefaultLabelModel? {
|
|
var model = DefaultLabelModel()
|
|
model.textPosition = .left
|
|
model.typograpicalStyle = .BodySmall
|
|
model.text = successText
|
|
model.surface = surface
|
|
model.disabled = disabled
|
|
return model
|
|
}
|
|
}
|