added ClearableModelProtocol

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2022-01-11 10:17:10 -06:00
parent cb3811f4ea
commit 63a23033cc
3 changed files with 73 additions and 0 deletions

View File

@ -569,6 +569,7 @@
DBC4391922442197001AB423 /* DashLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC4391722442197001AB423 /* DashLine.swift */; };
DBC4391B224421A0001AB423 /* CaretLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC4391A224421A0001AB423 /* CaretLink.swift */; };
DBEFFA04225A829700230692 /* Label.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB891E822253FA8500022516 /* Label.swift */; };
EA05EFA9278DDE2C00828819 /* ClearFormFieldEffectModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA05EFA8278DDE2C00828819 /* ClearFormFieldEffectModel.swift */; };
EA5124FD243601600051A3A4 /* BGImageHeadlineBodyButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5124FC243601600051A3A4 /* BGImageHeadlineBodyButton.swift */; };
EA5124FF2436018E0051A3A4 /* BGImageHeadlineBodyButtonModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5124FE2436018E0051A3A4 /* BGImageHeadlineBodyButtonModel.swift */; };
EA7E67742758310500ABF773 /* EnableFormFieldEffectModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA7E67732758310500ABF773 /* EnableFormFieldEffectModel.swift */; };
@ -1146,6 +1147,7 @@
DBC4391622442196001AB423 /* CaretView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CaretView.swift; sourceTree = "<group>"; };
DBC4391722442197001AB423 /* DashLine.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DashLine.swift; sourceTree = "<group>"; };
DBC4391A224421A0001AB423 /* CaretLink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CaretLink.swift; sourceTree = "<group>"; };
EA05EFA8278DDE2C00828819 /* ClearFormFieldEffectModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClearFormFieldEffectModel.swift; sourceTree = "<group>"; };
EA5124FC243601600051A3A4 /* BGImageHeadlineBodyButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BGImageHeadlineBodyButton.swift; sourceTree = "<group>"; };
EA5124FE2436018E0051A3A4 /* BGImageHeadlineBodyButtonModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BGImageHeadlineBodyButtonModel.swift; sourceTree = "<group>"; };
EA7E67732758310500ABF773 /* EnableFormFieldEffectModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EnableFormFieldEffectModel.swift; sourceTree = "<group>"; };
@ -2425,6 +2427,7 @@
EA7E67732758310500ABF773 /* EnableFormFieldEffectModel.swift */,
EAA0CFB2275E831E00D65EB0 /* DisableFormFieldEffectModel.swift */,
EAA0CFB0275E823A00D65EB0 /* HideFormFieldEffectModel.swift */,
EA05EFA8278DDE2C00828819 /* ClearFormFieldEffectModel.swift */,
);
path = FormFieldEffect;
sourceTree = "<group>";
@ -3013,6 +3016,7 @@
52267A0723FFE25000906CBA /* ListOneColumnFullWidthTextAllTextAndLinks.swift in Sources */,
D2ED2812254B0EB800A1C293 /* MVMCoreTopAlertObject.m in Sources */,
0AA4D2E125CAEC72008DB32D /* AccessibilityModelProtocol.swift in Sources */,
EA05EFA9278DDE2C00828819 /* ClearFormFieldEffectModel.swift in Sources */,
C003506123AA94CD00B6AC29 /* Button.swift in Sources */,
DBC4391B224421A0001AB423 /* CaretLink.swift in Sources */,
D29C559025C095210082E7D6 /* Video.swift in Sources */,

View File

@ -0,0 +1,68 @@
//
// ClearFormFieldEffectModel.swift
// MVMCoreUI
//
// Created by Matt Bruce on 1/11/22.
// Copyright © 2022 Verizon Wireless. All rights reserved.
//
import Foundation
public protocol ClearableModelProtocol {
func clear()
}
public class ClearFormFieldEffectModel: FormFieldEffectProtocol {
//--------------------------------------------------
// MARK: - Properties
//--------------------------------------------------
public static var identifier: String = "clearFormFieldEffect"
public var fieldKey: String = ""
public var activatedRuleIds: [String]?
public var rules: [RulesProtocol]
init(_ fieldKey: String, activatedRuleIds: [String], rules: [RulesProtocol]) {
self.fieldKey = fieldKey
self.activatedRuleIds = activatedRuleIds
self.rules = rules
}
//--------------------------------------------------
// MARK: - Keys
//--------------------------------------------------
private enum CodingKeys: String, CodingKey {
case fieldKey
case activatedRuleIds
case rules
}
//--------------------------------------------------
// MARK: - Codec
//--------------------------------------------------
required public init(from decoder: Decoder) throws {
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
self.fieldKey = try typeContainer.decode(String.self, forKey: .fieldKey)
self.activatedRuleIds = try typeContainer.decodeIfPresent([String].self, forKey: .activatedRuleIds)
self.rules = try typeContainer.decodeModels(codingKey: .rules)
}
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(fieldKey, forKey: .fieldKey)
try container.encode(activatedRuleIds, forKey: .activatedRuleIds)
try container.encodeModels(rules, forKey: .rules)
}
public func setEffect(validity: Bool, field: FormFieldProtocol,form: FormValidator, group: FormGroupRule) {
guard let field = field as? ClearableModelProtocol, validity else { return }
field.clear()
if let updateField = field as? UIUpdatableModelProtocol {
updateField.updateUI?()
}
}
}

View File

@ -246,5 +246,6 @@ open class CoreUIModelMapping: ModelMapping {
ModelRegistry.register(EnableFormFieldEffectModel.self)
ModelRegistry.register(DisableFormFieldEffectModel.self)
ModelRegistry.register(HideFormFieldEffectModel.self)
ModelRegistry.register(ClearFormFieldEffectModel.self)
}
}