fixes
This commit is contained in:
commit
ba76fedff4
@ -62,6 +62,7 @@
|
|||||||
01F2A03223A4498200D954D8 /* CaretButtonModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A03123A4498200D954D8 /* CaretButtonModel.swift */; };
|
01F2A03223A4498200D954D8 /* CaretButtonModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F2A03123A4498200D954D8 /* CaretButtonModel.swift */; };
|
||||||
0A1214A022C11A18007C7030 /* ActionDetailWithImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */; };
|
0A1214A022C11A18007C7030 /* ActionDetailWithImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */; };
|
||||||
0A1B4A96233BB18F005B3FB4 /* CheckboxWithLabelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7BAFA2232BE63400FB8E22 /* CheckboxWithLabelView.swift */; };
|
0A1B4A96233BB18F005B3FB4 /* CheckboxWithLabelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7BAFA2232BE63400FB8E22 /* CheckboxWithLabelView.swift */; };
|
||||||
|
0A209CD323A7E2810068F8B0 /* UIStackViewAlignment+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A209CD223A7E2810068F8B0 /* UIStackViewAlignment+Extension.swift */; };
|
||||||
0A41BA6E2344FCD400D4C0BC /* CATransaction+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A41BA6D2344FCD400D4C0BC /* CATransaction+Extension.swift */; };
|
0A41BA6E2344FCD400D4C0BC /* CATransaction+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A41BA6D2344FCD400D4C0BC /* CATransaction+Extension.swift */; };
|
||||||
0A7BAD74232A8DC700FB8E22 /* HeadlineBodyButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7BAD73232A8DC700FB8E22 /* HeadlineBodyButton.swift */; };
|
0A7BAD74232A8DC700FB8E22 /* HeadlineBodyButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7BAD73232A8DC700FB8E22 /* HeadlineBodyButton.swift */; };
|
||||||
0A7BAFA1232BE61800FB8E22 /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7BAFA0232BE61800FB8E22 /* Checkbox.swift */; };
|
0A7BAFA1232BE61800FB8E22 /* Checkbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A7BAFA0232BE61800FB8E22 /* Checkbox.swift */; };
|
||||||
@ -313,6 +314,7 @@
|
|||||||
01EB368D23609801006832FA /* HeadlineBodyModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeadlineBodyModel.swift; sourceTree = "<group>"; };
|
01EB368D23609801006832FA /* HeadlineBodyModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeadlineBodyModel.swift; sourceTree = "<group>"; };
|
||||||
01F2A03123A4498200D954D8 /* CaretButtonModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaretButtonModel.swift; sourceTree = "<group>"; };
|
01F2A03123A4498200D954D8 /* CaretButtonModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaretButtonModel.swift; sourceTree = "<group>"; };
|
||||||
0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionDetailWithImage.swift; sourceTree = "<group>"; };
|
0A12149F22C11A17007C7030 /* ActionDetailWithImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActionDetailWithImage.swift; sourceTree = "<group>"; };
|
||||||
|
0A209CD223A7E2810068F8B0 /* UIStackViewAlignment+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIStackViewAlignment+Extension.swift"; sourceTree = "<group>"; };
|
||||||
0A41BA6D2344FCD400D4C0BC /* CATransaction+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CATransaction+Extension.swift"; sourceTree = "<group>"; };
|
0A41BA6D2344FCD400D4C0BC /* CATransaction+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CATransaction+Extension.swift"; sourceTree = "<group>"; };
|
||||||
0A7BAD73232A8DC700FB8E22 /* HeadlineBodyButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadlineBodyButton.swift; sourceTree = "<group>"; };
|
0A7BAD73232A8DC700FB8E22 /* HeadlineBodyButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadlineBodyButton.swift; sourceTree = "<group>"; };
|
||||||
0A7BAFA0232BE61800FB8E22 /* Checkbox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Checkbox.swift; sourceTree = "<group>"; };
|
0A7BAFA0232BE61800FB8E22 /* Checkbox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Checkbox.swift; sourceTree = "<group>"; };
|
||||||
@ -920,6 +922,7 @@
|
|||||||
D29DF2A721E7B2F9003B2FB9 /* MVMCoreUIConstants.h */,
|
D29DF2A721E7B2F9003B2FB9 /* MVMCoreUIConstants.h */,
|
||||||
D29DF2A821E7B2F9003B2FB9 /* MVMCoreUIConstants.m */,
|
D29DF2A821E7B2F9003B2FB9 /* MVMCoreUIConstants.m */,
|
||||||
0A41BA6D2344FCD400D4C0BC /* CATransaction+Extension.swift */,
|
0A41BA6D2344FCD400D4C0BC /* CATransaction+Extension.swift */,
|
||||||
|
0A209CD223A7E2810068F8B0 /* UIStackViewAlignment+Extension.swift */,
|
||||||
);
|
);
|
||||||
path = Utility;
|
path = Utility;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -1304,6 +1307,7 @@
|
|||||||
D27CD40E2322EEAF00C1DC07 /* TabsTableViewCell.swift in Sources */,
|
D27CD40E2322EEAF00C1DC07 /* TabsTableViewCell.swift in Sources */,
|
||||||
D224799B231965AD003FCCF9 /* AccordionMoleculeTableViewCell.swift in Sources */,
|
D224799B231965AD003FCCF9 /* AccordionMoleculeTableViewCell.swift in Sources */,
|
||||||
D22D1F1F220343560077CEC0 /* MVMCoreUICheckMarkView.m in Sources */,
|
D22D1F1F220343560077CEC0 /* MVMCoreUICheckMarkView.m in Sources */,
|
||||||
|
0A209CD323A7E2810068F8B0 /* UIStackViewAlignment+Extension.swift in Sources */,
|
||||||
01004F3022721C3800991ECC /* RadioButton.swift in Sources */,
|
01004F3022721C3800991ECC /* RadioButton.swift in Sources */,
|
||||||
D268C70E238C22D7007F2C1C /* DropDownFilterTableViewCell.swift in Sources */,
|
D268C70E238C22D7007F2C1C /* DropDownFilterTableViewCell.swift in Sources */,
|
||||||
017BEB3C2361EA1D0024EF95 /* MFViewController+Model.swift in Sources */,
|
017BEB3C2361EA1D0024EF95 /* MFViewController+Model.swift in Sources */,
|
||||||
|
|||||||
@ -39,14 +39,14 @@ public class CaretButtonModel: MoleculeProtocol {
|
|||||||
enabledColor = try typeContainer.decodeIfPresent(String.self, forKey: .enabledColor)
|
enabledColor = try typeContainer.decodeIfPresent(String.self, forKey: .enabledColor)
|
||||||
disabledColor = try typeContainer.decodeIfPresent(String.self, forKey: .disabledColor)
|
disabledColor = try typeContainer.decodeIfPresent(String.self, forKey: .disabledColor)
|
||||||
enabled = try typeContainer.decodeIfPresent(Bool.self, forKey: .enabled)
|
enabled = try typeContainer.decodeIfPresent(Bool.self, forKey: .enabled)
|
||||||
action = try typeContainer.decode(codingKey: .action, typeCodingKey: ActionCodingKey.type)
|
action = try typeContainer.decodeModel(codingKey: .action, typeCodingKey: ActionCodingKey.type)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func encode(to encoder: Encoder) throws {
|
public func encode(to encoder: Encoder) throws {
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encode(label, forKey: .label)
|
try container.encode(label, forKey: .label)
|
||||||
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
||||||
try container.encodeIfPresent(action, forKey: .action)
|
try container.encodeModel(action, forKey: .action)
|
||||||
try container.encodeIfPresent(enabledColor, forKey: .enabledColor)
|
try container.encodeIfPresent(enabledColor, forKey: .enabledColor)
|
||||||
try container.encodeIfPresent(disabledColor, forKey: .disabledColor)
|
try container.encodeIfPresent(disabledColor, forKey: .disabledColor)
|
||||||
try container.encodeIfPresent(enabled, forKey: .enabled)
|
try container.encodeIfPresent(enabled, forKey: .enabled)
|
||||||
|
|||||||
@ -57,7 +57,7 @@ import Foundation
|
|||||||
self.fontName = try typeContainer.decodeIfPresent(String.self, forKey: .fontName)
|
self.fontName = try typeContainer.decodeIfPresent(String.self, forKey: .fontName)
|
||||||
self.fontSize = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .fontSize)
|
self.fontSize = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .fontSize)
|
||||||
self.textAlignment = try typeContainer.decodeIfPresent(String.self, forKey: .textAlignment)
|
self.textAlignment = try typeContainer.decodeIfPresent(String.self, forKey: .textAlignment)
|
||||||
self.attributes = try typeContainer.decodeArrayIfPresent(codingKey: .attributes, typeCodingKey: AttributeTypeKey.type) as? [LabelAttributeModel]
|
self.attributes = try typeContainer.decodeModelsIfPresent(codingKey: .attributes, typeCodingKey: AttributeTypeKey.type) as? [LabelAttributeModel]
|
||||||
self.html = try typeContainer.decodeIfPresent(String.self, forKey: .html)
|
self.html = try typeContainer.decodeIfPresent(String.self, forKey: .html)
|
||||||
self.hero = try typeContainer.decodeIfPresent(Int.self, forKey: .hero)
|
self.hero = try typeContainer.decodeIfPresent(Int.self, forKey: .hero)
|
||||||
self.makeWholeViewClickable = try typeContainer.decodeIfPresent(Bool.self, forKey: .makeWholeViewClickable)
|
self.makeWholeViewClickable = try typeContainer.decodeIfPresent(Bool.self, forKey: .makeWholeViewClickable)
|
||||||
|
|||||||
@ -13,22 +13,22 @@ extension KeyedDecodingContainer where Key : CodingKey {
|
|||||||
case moleculeName
|
case moleculeName
|
||||||
}
|
}
|
||||||
|
|
||||||
public func decode(codingKey: KeyedDecodingContainer<K>.Key) throws -> MoleculeProtocol {
|
public func decodeMolecule(codingKey: KeyedDecodingContainer<K>.Key) throws -> MoleculeProtocol {
|
||||||
return try decode(codingKey: codingKey, typeCodingKey: TypeCodingKey.moleculeName)
|
return try decodeModel(codingKey: codingKey, typeCodingKey: TypeCodingKey.moleculeName)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func decodeIfPresent(codingKey: KeyedDecodingContainer<K>.Key) throws -> MoleculeProtocol? {
|
public func decodeMoleculeIfPresent(codingKey: KeyedDecodingContainer<K>.Key) throws -> MoleculeProtocol? {
|
||||||
return try decodeIfPresent(codingKey: codingKey, typeCodingKey: TypeCodingKey.moleculeName)
|
return try decodeModelIfPresent(codingKey: codingKey, typeCodingKey: TypeCodingKey.moleculeName)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func decodeArray(codingKey: KeyedDecodingContainer<K>.Key) throws -> [MoleculeProtocol] {
|
public func decodeMolecules(codingKey: KeyedDecodingContainer<K>.Key) throws -> [MoleculeProtocol] {
|
||||||
guard let models = try decodeArray(codingKey: codingKey, typeCodingKey: TypeCodingKey.moleculeName) as? [MoleculeProtocol] else {
|
guard let models = try decodeModels(codingKey: codingKey, typeCodingKey: TypeCodingKey.moleculeName) as? [MoleculeProtocol] else {
|
||||||
throw ModelRegistry.Error.decoderError
|
throw ModelRegistry.Error.decoderError
|
||||||
}
|
}
|
||||||
return models
|
return models
|
||||||
}
|
}
|
||||||
|
|
||||||
public func decodeArrayIfPresent(codingKey: KeyedDecodingContainer<K>.Key) throws -> [MoleculeProtocol]? {
|
public func decodeArrayIfPresent(codingKey: KeyedDecodingContainer<K>.Key) throws -> [MoleculeProtocol]? {
|
||||||
return try decodeArrayIfPresent(codingKey: codingKey, typeCodingKey: TypeCodingKey.moleculeName) as? [MoleculeProtocol]
|
return try decodeModelsIfPresent(codingKey: codingKey, typeCodingKey: TypeCodingKey.moleculeName) as? [MoleculeProtocol]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,14 +25,14 @@ import Foundation
|
|||||||
|
|
||||||
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)
|
||||||
molecule = try typeContainer.decode(codingKey: .molecule)
|
molecule = try typeContainer.decodeMolecule(codingKey: .molecule)
|
||||||
|
//(codingKey: .molecule)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func encode(to encoder: Encoder) throws {
|
public func encode(to encoder: Encoder) throws {
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encode(moleculeName, forKey: .moleculeName)
|
try container.encode(moleculeName, forKey: .moleculeName)
|
||||||
try container.encode(backgroundColor, forKey: .backgroundColor)
|
try container.encode(backgroundColor, forKey: .backgroundColor)
|
||||||
try container.encode(molecule, forKey: .molecule)
|
try container.encodeModel(molecule, forKey: .molecule)
|
||||||
try container.encodeIfPresent(self.molecule, forKey: .molecule)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,7 +54,7 @@ import UIKit
|
|||||||
self.height = try typeContainer.decode(Float.self, forKey: .height)
|
self.height = try typeContainer.decode(Float.self, forKey: .height)
|
||||||
self.itemWidthPercent = try typeContainer.decode(Float.self, forKey: .itemWidthPercent)
|
self.itemWidthPercent = try typeContainer.decode(Float.self, forKey: .itemWidthPercent)
|
||||||
self.itemAlignment = try typeContainer.decode(String.self, forKey: .itemAlignment)
|
self.itemAlignment = try typeContainer.decode(String.self, forKey: .itemAlignment)
|
||||||
self.pagingMolecule = try typeContainer.decodeIfPresent(codingKey: .pagingMolecule) as? PagingMoleculeProtocol
|
self.pagingMolecule = try typeContainer.decodeMoleculeIfPresent(codingKey: .pagingMolecule) as? PagingMoleculeProtocol
|
||||||
}
|
}
|
||||||
|
|
||||||
public func encode(to encoder: Encoder) throws {
|
public func encode(to encoder: Encoder) throws {
|
||||||
@ -67,6 +67,6 @@ import UIKit
|
|||||||
try container.encode(height, forKey: .height)
|
try container.encode(height, forKey: .height)
|
||||||
try container.encode(itemWidthPercent, forKey: .itemWidthPercent)
|
try container.encode(itemWidthPercent, forKey: .itemWidthPercent)
|
||||||
try container.encode(itemAlignment, forKey: .itemAlignment)
|
try container.encode(itemAlignment, forKey: .itemAlignment)
|
||||||
try container.encodeIfPresent(self.pagingMolecule, forKey: .pagingMolecule)
|
try container.encodeModelIfPresent(pagingMolecule, forKey: .pagingMolecule)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,7 @@ import Foundation
|
|||||||
|
|
||||||
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)
|
||||||
molecule = try typeContainer.decode(codingKey: .molecule)
|
molecule = try typeContainer.decodeMolecule(codingKey: .molecule)
|
||||||
self.molecules = try typeContainer.decode([[ListItemModel]].self, forKey: .molecules)
|
self.molecules = try typeContainer.decode([[ListItemModel]].self, forKey: .molecules)
|
||||||
self.separator = try typeContainer.decode(LineModel.self, forKey: .separator)
|
self.separator = try typeContainer.decode(LineModel.self, forKey: .separator)
|
||||||
self.backgroundColor = try typeContainer.decodeIfPresent(String.self, forKey: .backgroundColor)
|
self.backgroundColor = try typeContainer.decodeIfPresent(String.self, forKey: .backgroundColor)
|
||||||
@ -42,7 +42,7 @@ import Foundation
|
|||||||
|
|
||||||
public func encode(to encoder: Encoder) throws {
|
public func encode(to encoder: Encoder) throws {
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encode(molecule, forKey: .molecule)
|
try container.encodeModel(molecule, forKey: .molecule)
|
||||||
try container.encode(moleculeName, forKey: .moleculeName)
|
try container.encode(moleculeName, forKey: .moleculeName)
|
||||||
try container.encode(molecules, forKey: .molecules)
|
try container.encode(molecules, forKey: .molecules)
|
||||||
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
||||||
|
|||||||
@ -30,14 +30,13 @@ import Foundation
|
|||||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
self.moleculeName = try typeContainer.decode(String.self, forKey: .moleculeName)
|
self.moleculeName = try typeContainer.decode(String.self, forKey: .moleculeName)
|
||||||
self.backgroundColor = try typeContainer.decodeIfPresent(String.self, forKey: .backgroundColor)
|
self.backgroundColor = try typeContainer.decodeIfPresent(String.self, forKey: .backgroundColor)
|
||||||
self.molecule = try typeContainer.decode(codingKey: .molecule)
|
self.molecule = try typeContainer.decodeMolecule(codingKey: .molecule)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func encode(to encoder: Encoder) throws {
|
public func encode(to encoder: Encoder) throws {
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encode(moleculeName, forKey: .moleculeName)
|
try container.encode(moleculeName, forKey: .moleculeName)
|
||||||
try container.encodeIfPresent(self.molecule, forKey: .molecule)
|
|
||||||
try container.encodeIfPresent(self.backgroundColor, forKey: .backgroundColor)
|
try container.encodeIfPresent(self.backgroundColor, forKey: .backgroundColor)
|
||||||
try container.encode(molecule, forKey: .molecule)
|
try container.encodeModel(self.molecule, forKey: .moleculeName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,16 +30,15 @@ import Foundation
|
|||||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
self.moleculeName = try typeContainer.decode(String.self, forKey: .moleculeName)
|
self.moleculeName = try typeContainer.decode(String.self, forKey: .moleculeName)
|
||||||
self.backgroundColor = try typeContainer.decodeIfPresent(String.self, forKey: .backgroundColor)
|
self.backgroundColor = try typeContainer.decodeIfPresent(String.self, forKey: .backgroundColor)
|
||||||
self.molecule = try typeContainer.decode(codingKey: .molecule)
|
self.molecule = try typeContainer.decodeMolecule(codingKey: .molecule)
|
||||||
self.seperator = try typeContainer.decodeIfPresent(LineModel.self, forKey: .separator)
|
self.seperator = try typeContainer.decodeIfPresent(LineModel.self, forKey: .separator)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func encode(to encoder: Encoder) throws {
|
public func encode(to encoder: Encoder) throws {
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encode(moleculeName, forKey: .moleculeName)
|
try container.encode(moleculeName, forKey: .moleculeName)
|
||||||
try container.encodeIfPresent(self.molecule, forKey: .molecule)
|
try container.encodeModelIfPresent(molecule, forKey: .molecule)
|
||||||
try container.encodeIfPresent(self.backgroundColor, forKey: .backgroundColor)
|
try container.encodeIfPresent(self.backgroundColor, forKey: .backgroundColor)
|
||||||
try container.encodeIfPresent(self.seperator, forKey: .separator)
|
try container.encodeIfPresent(self.seperator, forKey: .separator)
|
||||||
try container.encode(molecule, forKey: .molecule)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
40
MVMCoreUI/Models/Molecules/ListItemModel.swift
Normal file
40
MVMCoreUI/Models/Molecules/ListItemModel.swift
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
//
|
||||||
|
// ListItem.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Suresh, Kamlesh on 10/3/19.
|
||||||
|
// Copyright © 2019 Suresh, Kamlesh. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
@objcMembers public class ListItemModel: MoleculeProtocol {
|
||||||
|
public static var identifier: String = "listItem"
|
||||||
|
public var molecule: MoleculeProtocol?
|
||||||
|
public var backgroundColor: String?
|
||||||
|
public var action: ActionModel?
|
||||||
|
|
||||||
|
public init(molecule: MoleculeProtocol?, actionMap: ActionModel?) {
|
||||||
|
self.molecule = molecule
|
||||||
|
self.action = actionMap
|
||||||
|
}
|
||||||
|
|
||||||
|
enum CodingKeys: String, CodingKey {
|
||||||
|
case moleculeName
|
||||||
|
case molecule
|
||||||
|
case action
|
||||||
|
}
|
||||||
|
|
||||||
|
required public init(from decoder: Decoder) throws {
|
||||||
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
|
self.molecule = try typeContainer.decodeMoleculeIfPresent(codingKey: .molecule)
|
||||||
|
self.action = try typeContainer.decodeIfPresent(ActionModel.self, forKey: .action)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func encode(to encoder: Encoder) throws {
|
||||||
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
|
try container.encode(moleculeName, forKey: .moleculeName)
|
||||||
|
try container.encodeModelIfPresent(self.molecule, forKey: .molecule)
|
||||||
|
try container.encodeIfPresent(action, forKey: .action)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -40,7 +40,7 @@ import Foundation
|
|||||||
|
|
||||||
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)
|
||||||
self.molecule = try typeContainer.decodeIfPresent(codingKey: .molecule)
|
self.molecule = try typeContainer.decodeMoleculeIfPresent(codingKey: .molecule)
|
||||||
|
|
||||||
self.spacing = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .spacing)
|
self.spacing = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .spacing)
|
||||||
self.percentage = try typeContainer.decodeIfPresent(Int.self, forKey: .percentage)
|
self.percentage = try typeContainer.decodeIfPresent(Int.self, forKey: .percentage)
|
||||||
@ -52,12 +52,6 @@ import Foundation
|
|||||||
public func encode(to encoder: Encoder) throws {
|
public func encode(to encoder: Encoder) throws {
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encode(moleculeName, forKey: .moleculeName)
|
try container.encode(moleculeName, forKey: .moleculeName)
|
||||||
try container.encodeIfPresent(self.molecule, forKey: .molecule)
|
try container.encodeModelIfPresent(self.molecule, forKey: .molecule)
|
||||||
|
|
||||||
try container.encode(spacing, forKey: .spacing)
|
|
||||||
try container.encode(percentage, forKey: .percentage)
|
|
||||||
try container.encode(verticalAlignment, forKey: .verticalAlignment)
|
|
||||||
try container.encode(horizontalAlignment, forKey: .horizontalAlignment)
|
|
||||||
try container.encode(gone, forKey: .gone)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,10 +40,11 @@ import Foundation
|
|||||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
self.pageType = try typeContainer.decode(String.self, forKey: .pageType)
|
self.pageType = try typeContainer.decode(String.self, forKey: .pageType)
|
||||||
self.screenHeading = try typeContainer.decode(String.self, forKey: .screenHeading)
|
self.screenHeading = try typeContainer.decode(String.self, forKey: .screenHeading)
|
||||||
guard let list = try typeContainer.decodeArray(codingKey: .molecules) as? [ListItemModelProtocol] else {
|
|
||||||
|
guard let molecules = try typeContainer.decodeMolecules(codingKey: .molecules) as? [ListItemModelProtocol] else {
|
||||||
throw JSONError.pathNotFound
|
throw JSONError.pathNotFound
|
||||||
}
|
}
|
||||||
self.molecules = list
|
self.molecules = molecules
|
||||||
self.isAtomicTabs = try typeContainer.decodeIfPresent(Bool.self, forKey: .isAtomicTabs)
|
self.isAtomicTabs = try typeContainer.decodeIfPresent(Bool.self, forKey: .isAtomicTabs)
|
||||||
self.header = try typeContainer.decodeIfPresent(HeaderModel.self, forKey: .header)
|
self.header = try typeContainer.decodeIfPresent(HeaderModel.self, forKey: .header)
|
||||||
self.footer = try typeContainer.decodeIfPresent(MoleculeStackModel.self, forKey: .footer)
|
self.footer = try typeContainer.decodeIfPresent(MoleculeStackModel.self, forKey: .footer)
|
||||||
@ -54,7 +55,7 @@ import Foundation
|
|||||||
try container.encode(pageType, forKey: .pageType)
|
try container.encode(pageType, forKey: .pageType)
|
||||||
try container.encode(screenHeading, forKey: .screenHeading)
|
try container.encode(screenHeading, forKey: .screenHeading)
|
||||||
|
|
||||||
try container.encodeArray(molecules, forKey: .molecules)
|
try container.encodeModelsIfPresent(molecules, forKey: .molecules)
|
||||||
try container.encodeIfPresent(isAtomicTabs, forKey: .isAtomicTabs)
|
try container.encodeIfPresent(isAtomicTabs, forKey: .isAtomicTabs)
|
||||||
try container.encodeIfPresent(header, forKey: .header)
|
try container.encodeIfPresent(header, forKey: .header)
|
||||||
try container.encodeIfPresent(footer, forKey: .footer)
|
try container.encodeIfPresent(footer, forKey: .footer)
|
||||||
|
|||||||
@ -33,8 +33,8 @@ import MVMCore
|
|||||||
|
|
||||||
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)
|
||||||
molecule = try typeContainer.decode(codingKey: .molecule)
|
molecule = try typeContainer.decodeMolecule(codingKey: .molecule)
|
||||||
action = try typeContainer.decodeIfPresent(codingKey: .action, typeCodingKey: ActionCodingKey.type)
|
action = try typeContainer.decodeModelIfPresent(codingKey: .action, typeCodingKey: ActionCodingKey.type)
|
||||||
hideArrow = try typeContainer.decodeIfPresent(Bool.self, forKey: .hideArrow)
|
hideArrow = try typeContainer.decodeIfPresent(Bool.self, forKey: .hideArrow)
|
||||||
separator = try typeContainer.decodeIfPresent(LineModel.self, forKey: .separator)
|
separator = try typeContainer.decodeIfPresent(LineModel.self, forKey: .separator)
|
||||||
style = try typeContainer.decodeIfPresent(String.self, forKey: .style)
|
style = try typeContainer.decodeIfPresent(String.self, forKey: .style)
|
||||||
@ -43,8 +43,8 @@ import MVMCore
|
|||||||
public func encode(to encoder: Encoder) throws {
|
public func encode(to encoder: Encoder) throws {
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
try container.encode(moleculeName, forKey: .moleculeName)
|
try container.encode(moleculeName, forKey: .moleculeName)
|
||||||
try container.encode(molecule, forKey: .molecule)
|
try container.encodeModel(molecule, forKey: .molecule)
|
||||||
try container.encodeIfPresent(action, forKey: .action)
|
try container.encodeModelIfPresent(action, forKey: .action)
|
||||||
try container.encodeIfPresent(hideArrow, forKey: .hideArrow)
|
try container.encodeIfPresent(hideArrow, forKey: .hideArrow)
|
||||||
try container.encodeIfPresent(separator, forKey: .separator)
|
try container.encodeIfPresent(separator, forKey: .separator)
|
||||||
try container.encodeIfPresent(style, forKey: .style)
|
try container.encodeIfPresent(style, forKey: .style)
|
||||||
|
|||||||
72
MVMCoreUI/Utility/UIStackViewAlignment+Extension.swift
Normal file
72
MVMCoreUI/Utility/UIStackViewAlignment+Extension.swift
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
//
|
||||||
|
// UIStackViewAlignment+Extension.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Kevin Christiano on 12/16/19.
|
||||||
|
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
/**
|
||||||
|
When using this class in codable for a String value from server.
|
||||||
|
|
||||||
|
Example use case....
|
||||||
|
|
||||||
|
var alignment: UIStackView.Alignment
|
||||||
|
|
||||||
|
enum CodingKeys: String, CodingKey {
|
||||||
|
case alignment
|
||||||
|
}
|
||||||
|
|
||||||
|
required public init(from decoder: Decoder) throws {
|
||||||
|
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
|
let word = try container.decode(String.self, forKey: .alignment)
|
||||||
|
alignment = UIStackView.Alignment(rawValue: word)!
|
||||||
|
}
|
||||||
|
|
||||||
|
public func encode(to encoder: Encoder) throws {
|
||||||
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
|
try container.encode(alignment.rawValueString, forKey: .alignment)
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
extension UIStackView.Alignment: RawRepresentable {
|
||||||
|
|
||||||
|
init?(rawValue: String) {
|
||||||
|
switch rawValue {
|
||||||
|
case "fill":
|
||||||
|
self = .fill
|
||||||
|
case "leading":
|
||||||
|
self = .leading
|
||||||
|
case "firstBaseline":
|
||||||
|
self = .firstBaseline
|
||||||
|
case "center":
|
||||||
|
self = .center
|
||||||
|
case "trailing":
|
||||||
|
self = .trailing
|
||||||
|
case "lastBaseline":
|
||||||
|
self = .lastBaseline
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var rawValueString: String {
|
||||||
|
switch self {
|
||||||
|
case .fill:
|
||||||
|
return "fill"
|
||||||
|
case .leading:
|
||||||
|
return "leading"
|
||||||
|
case .firstBaseline:
|
||||||
|
return "firstBaseline"
|
||||||
|
case .center:
|
||||||
|
return "center"
|
||||||
|
case .trailing:
|
||||||
|
return "trailing"
|
||||||
|
case .lastBaseline:
|
||||||
|
return "lastBaseline"
|
||||||
|
@unknown default:
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user