subclass to formFieldModel
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
3270f21951
commit
698f7b5520
@ -7,26 +7,18 @@
|
|||||||
//
|
//
|
||||||
import VDS
|
import VDS
|
||||||
|
|
||||||
public class ToggleModel: MoleculeModelProtocol, FormFieldProtocol {
|
public class ToggleModel: FormFieldModel {
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public static var identifier: String = "toggle"
|
public override static var identifier: String { "toggle" }
|
||||||
public var id: String = UUID().uuidString
|
|
||||||
|
|
||||||
public var accessibilityIdentifier: String?
|
|
||||||
public var backgroundColor: Color?
|
|
||||||
public var selected: Bool = false
|
public var selected: Bool = false
|
||||||
public var animated: Bool = true
|
public var animated: Bool = true
|
||||||
public var enabled: Bool = true
|
|
||||||
public var readOnly: Bool = false
|
|
||||||
public var action: ActionModelProtocol?
|
public var action: ActionModelProtocol?
|
||||||
public var alternateAction: ActionModelProtocol?
|
public var alternateAction: ActionModelProtocol?
|
||||||
public var accessibilityText: String?
|
public var accessibilityText: String?
|
||||||
|
|
||||||
public var surface: Surface { inverted ? .dark : .light }
|
|
||||||
public var inverted: Bool = false
|
|
||||||
public var showText: Bool = false
|
public var showText: Bool = false
|
||||||
public var onText: String?
|
public var onText: String?
|
||||||
public var offText: String?
|
public var offText: String?
|
||||||
@ -34,61 +26,41 @@ public class ToggleModel: MoleculeModelProtocol, FormFieldProtocol {
|
|||||||
public var textWeight: VDS.Toggle.TextWeight = .regular
|
public var textWeight: VDS.Toggle.TextWeight = .regular
|
||||||
public var textPosition: VDS.Toggle.TextPosition = .left
|
public var textPosition: VDS.Toggle.TextPosition = .left
|
||||||
|
|
||||||
public var fieldKey: String?
|
|
||||||
public var groupName: String = FormValidator.defaultGroupName
|
|
||||||
public var baseValue: AnyHashable?
|
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Keys
|
// MARK: - Keys
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
private enum CodingKeys: String, CodingKey {
|
private enum CodingKeys: String, CodingKey {
|
||||||
case id
|
|
||||||
case moleculeName
|
|
||||||
case state
|
case state
|
||||||
case animated
|
case animated
|
||||||
case enabled
|
|
||||||
case readOnly
|
|
||||||
case action
|
case action
|
||||||
case backgroundColor
|
|
||||||
case accessibilityIdentifier
|
|
||||||
case alternateAction
|
case alternateAction
|
||||||
case accessibilityText
|
case accessibilityText
|
||||||
|
|
||||||
case inverted
|
|
||||||
case showText
|
case showText
|
||||||
case onText
|
case onText
|
||||||
case offText
|
case offText
|
||||||
case textSize
|
case textSize
|
||||||
case textWeight
|
case textWeight
|
||||||
case textPosition
|
case textPosition
|
||||||
|
|
||||||
case fieldKey
|
|
||||||
case groupName
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Form Valdiation
|
// MARK: - Form Valdiation
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public func formFieldValue() -> AnyHashable? {
|
public override func formFieldValue() -> AnyHashable? {
|
||||||
guard enabled else { return nil }
|
guard enabled else { return nil }
|
||||||
return selected
|
return selected
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
|
||||||
// MARK: - Server Value
|
|
||||||
//--------------------------------------------------
|
|
||||||
open func formFieldServerValue() -> AnyHashable? {
|
|
||||||
return formFieldValue()
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Initializer
|
// MARK: - Initializer
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public init(_ state: Bool, id: String = UUID().uuidString) {
|
public init(_ state: Bool, id: String = UUID().uuidString) {
|
||||||
self.selected = state
|
selected = state
|
||||||
|
super.init()
|
||||||
baseValue = state
|
baseValue = state
|
||||||
self.id = id
|
self.id = id
|
||||||
}
|
}
|
||||||
@ -100,8 +72,6 @@ public class ToggleModel: MoleculeModelProtocol, FormFieldProtocol {
|
|||||||
required public init(from decoder: Decoder) throws {
|
required public init(from decoder: Decoder) throws {
|
||||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
|
|
||||||
id = try typeContainer.decodeIfPresent(String.self, forKey: .id) ?? UUID().uuidString
|
|
||||||
|
|
||||||
if let state = try typeContainer.decodeIfPresent(Bool.self, forKey: .state) {
|
if let state = try typeContainer.decodeIfPresent(Bool.self, forKey: .state) {
|
||||||
self.selected = state
|
self.selected = state
|
||||||
}
|
}
|
||||||
@ -112,44 +82,28 @@ public class ToggleModel: MoleculeModelProtocol, FormFieldProtocol {
|
|||||||
|
|
||||||
action = try typeContainer.decodeModelIfPresent(codingKey: .action)
|
action = try typeContainer.decodeModelIfPresent(codingKey: .action)
|
||||||
alternateAction = try typeContainer.decodeModelIfPresent(codingKey: .alternateAction)
|
alternateAction = try typeContainer.decodeModelIfPresent(codingKey: .alternateAction)
|
||||||
accessibilityIdentifier = try typeContainer.decodeIfPresent(String.self, forKey: .accessibilityIdentifier)
|
|
||||||
|
|
||||||
accessibilityText = try typeContainer.decodeIfPresent(String.self, forKey: .accessibilityText)
|
accessibilityText = try typeContainer.decodeIfPresent(String.self, forKey: .accessibilityText)
|
||||||
|
|
||||||
baseValue = selected
|
|
||||||
fieldKey = try typeContainer.decodeIfPresent(String.self, forKey: .fieldKey)
|
|
||||||
if let groupName = try typeContainer.decodeIfPresent(String.self, forKey: .groupName) {
|
|
||||||
self.groupName = groupName
|
|
||||||
}
|
|
||||||
enabled = try typeContainer.decodeIfPresent(Bool.self, forKey: .enabled) ?? true
|
|
||||||
readOnly = try typeContainer.decodeIfPresent(Bool.self, forKey: .readOnly) ?? false
|
|
||||||
|
|
||||||
inverted = try typeContainer.decodeIfPresent(Bool.self, forKey: .inverted) ?? false
|
|
||||||
showText = try typeContainer.decodeIfPresent(Bool.self, forKey: .showText) ?? false
|
showText = try typeContainer.decodeIfPresent(Bool.self, forKey: .showText) ?? false
|
||||||
onText = try typeContainer.decodeIfPresent(String.self, forKey: .onText)
|
onText = try typeContainer.decodeIfPresent(String.self, forKey: .onText)
|
||||||
offText = try typeContainer.decodeIfPresent(String.self, forKey: .offText)
|
offText = try typeContainer.decodeIfPresent(String.self, forKey: .offText)
|
||||||
textSize = try typeContainer.decodeIfPresent(VDS.Toggle.TextSize.self, forKey: .textSize) ?? .small
|
textSize = try typeContainer.decodeIfPresent(VDS.Toggle.TextSize.self, forKey: .textSize) ?? .small
|
||||||
textWeight = try typeContainer.decodeIfPresent(VDS.Toggle.TextWeight.self, forKey: .textWeight) ?? .regular
|
textWeight = try typeContainer.decodeIfPresent(VDS.Toggle.TextWeight.self, forKey: .textWeight) ?? .regular
|
||||||
textPosition = try typeContainer.decodeIfPresent(VDS.Toggle.TextPosition.self, forKey: .textPosition) ?? .left
|
textPosition = try typeContainer.decodeIfPresent(VDS.Toggle.TextPosition.self, forKey: .textPosition) ?? .left
|
||||||
|
|
||||||
|
try super.init(from: decoder)
|
||||||
|
baseValue = selected
|
||||||
}
|
}
|
||||||
|
|
||||||
public func encode(to encoder: Encoder) throws {
|
public override func encode(to encoder: Encoder) throws {
|
||||||
|
try super.encode(to: encoder)
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encode(id, forKey: .id)
|
|
||||||
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
|
||||||
try container.encodeIfPresent(accessibilityIdentifier, forKey: .accessibilityIdentifier)
|
|
||||||
try container.encodeModelIfPresent(action, forKey: .action)
|
try container.encodeModelIfPresent(action, forKey: .action)
|
||||||
try container.encodeModelIfPresent(alternateAction, forKey: .alternateAction)
|
try container.encodeModelIfPresent(alternateAction, forKey: .alternateAction)
|
||||||
try container.encode(moleculeName, forKey: .moleculeName)
|
|
||||||
try container.encode(selected, forKey: .state)
|
try container.encode(selected, forKey: .state)
|
||||||
try container.encode(animated, forKey: .animated)
|
try container.encode(animated, forKey: .animated)
|
||||||
try container.encode(enabled, forKey: .enabled)
|
|
||||||
try container.encodeIfPresent(accessibilityText, forKey: .accessibilityText)
|
try container.encodeIfPresent(accessibilityText, forKey: .accessibilityText)
|
||||||
try container.encodeIfPresent(fieldKey, forKey: .fieldKey)
|
|
||||||
try container.encodeIfPresent(groupName, forKey: .groupName)
|
|
||||||
try container.encode(readOnly, forKey: .readOnly)
|
|
||||||
|
|
||||||
try container.encode(inverted, forKey: .inverted)
|
|
||||||
try container.encode(showText, forKey: .showText)
|
try container.encode(showText, forKey: .showText)
|
||||||
try container.encodeIfPresent(onText, forKey: .onText)
|
try container.encodeIfPresent(onText, forKey: .onText)
|
||||||
try container.encodeIfPresent(offText, forKey: .offText)
|
try container.encodeIfPresent(offText, forKey: .offText)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user