85 lines
2.4 KiB
Swift
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
|
|
}
|
|
|
|
}
|