96 lines
3.6 KiB
Swift
96 lines
3.6 KiB
Swift
//
|
|
// TextViewModel.swift
|
|
// MVMCoreUI
|
|
//
|
|
// Created by Kevin Christiano on 4/2/20.
|
|
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
|
|
open class TextViewModel: TextEntryFieldModel {
|
|
//--------------------------------------------------
|
|
// MARK: - Properties
|
|
//--------------------------------------------------
|
|
|
|
public override class var identifier: String {
|
|
return "textView"
|
|
}
|
|
|
|
public var accessibilityText: String?
|
|
public var fontStyle: Styler.Font = Styler.Font.RegularBodySmall
|
|
public var textAlignment: NSTextAlignment = .left
|
|
public var height: CGFloat?
|
|
public var placeholderTextColor: Color = Color(uiColor: .mvmCoolGray3)
|
|
public var placeholderFontStyle: Styler.Font = Styler.Font.RegularMicro
|
|
public var showsPlaceholder: Bool = false
|
|
public var hideBorders: Bool = false
|
|
public var isEditable: Bool = true
|
|
|
|
//--------------------------------------------------
|
|
// MARK: - Keys
|
|
//--------------------------------------------------
|
|
|
|
private enum CodingKeys: String, CodingKey {
|
|
case text
|
|
case accessibilityText
|
|
case fontStyle
|
|
case textAlignment
|
|
case height
|
|
case hideBorders
|
|
case placeholderFontStyle
|
|
case placeholderTextColor
|
|
case isEditable = "editable"
|
|
}
|
|
|
|
//--------------------------------------------------
|
|
// MARK: - Codec
|
|
//--------------------------------------------------
|
|
|
|
required public init(from decoder: Decoder) throws {
|
|
try super.init(from: decoder)
|
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
|
|
|
if let placeholderFontStyle = try typeContainer.decodeIfPresent(Styler.Font.self, forKey: .placeholderFontStyle) {
|
|
self.placeholderFontStyle = placeholderFontStyle
|
|
}
|
|
|
|
if let placeholderTextColor = try typeContainer.decodeIfPresent(Color.self, forKey: .placeholderTextColor) {
|
|
self.placeholderTextColor = placeholderTextColor
|
|
}
|
|
|
|
if let textAlignment = try typeContainer.decodeIfPresent(NSTextAlignment.self, forKey: .textAlignment) {
|
|
self.textAlignment = textAlignment
|
|
}
|
|
|
|
if let hideBorders = try typeContainer.decodeIfPresent(Bool.self, forKey: .hideBorders) {
|
|
self.hideBorders = hideBorders
|
|
}
|
|
|
|
if let isEditable = try typeContainer.decodeIfPresent(Bool.self, forKey: .isEditable) {
|
|
self.isEditable = isEditable
|
|
}
|
|
|
|
if let fontStyle = try typeContainer.decodeIfPresent(Styler.Font.self, forKey: .fontStyle) {
|
|
self.fontStyle = fontStyle
|
|
}
|
|
|
|
accessibilityText = try typeContainer.decodeIfPresent(String.self, forKey: .accessibilityText)
|
|
height = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .height)
|
|
}
|
|
|
|
public override func encode(to encoder: Encoder) throws {
|
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
try container.encodeIfPresent(accessibilityText, forKey: .accessibilityText)
|
|
try container.encodeIfPresent(fontStyle, forKey: .fontStyle)
|
|
try container.encodeIfPresent(height, forKey: .height)
|
|
try container.encodeIfPresent(hideBorders, forKey: .hideBorders)
|
|
try container.encode(text, forKey: .text)
|
|
try container.encode(placeholderFontStyle, forKey: .placeholderFontStyle)
|
|
try container.encode(placeholderTextColor, forKey: .placeholderTextColor)
|
|
try container.encode(textAlignment, forKey: .textAlignment)
|
|
try container.encode(isEditable, forKey: .isEditable)
|
|
}
|
|
}
|