// // 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 } }