62 lines
2.2 KiB
Swift
62 lines
2.2 KiB
Swift
//
|
|
// ThreeLayerPageTemplateModel.swift
|
|
// MVMCoreUI
|
|
//
|
|
// Created by Suresh, Kamlesh on 11/22/19.
|
|
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
@objcMembers public class ThreeLayerPageTemplateModel: TemplateModelProtocol {
|
|
|
|
public var formRules: [FormGroupRule]?
|
|
public var formValidator: FormValidator?
|
|
|
|
public static var identifier: String = "threeLayer"
|
|
|
|
public var pageType: String
|
|
public var screenHeading: String?
|
|
public var isAtomicTabs: Bool?
|
|
|
|
public var header: MoleculeModelProtocol?
|
|
public var middle: MoleculeModelProtocol?
|
|
public var footer: MoleculeModelProtocol?
|
|
|
|
public init(pageType: String, header: MoleculeModelProtocol?, middle: MoleculeModelProtocol?, footer: MoleculeModelProtocol?) {
|
|
self.pageType = pageType
|
|
self.header = header
|
|
self.middle = middle
|
|
self.footer = footer
|
|
}
|
|
|
|
private enum CodingKeys: String, CodingKey {
|
|
case pageType
|
|
case screenHeading
|
|
case header
|
|
case footer
|
|
case middle
|
|
case isAtomicTabs
|
|
}
|
|
|
|
required public init(from decoder: Decoder) throws {
|
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
|
pageType = try typeContainer.decode(String.self, forKey: .pageType)
|
|
screenHeading = try typeContainer.decodeIfPresent(String.self, forKey: .screenHeading)
|
|
isAtomicTabs = try typeContainer.decodeIfPresent(Bool.self, forKey: .isAtomicTabs)
|
|
header = try typeContainer.decodeMoleculeIfPresent(codingKey: .header)
|
|
middle = try typeContainer.decodeMoleculeIfPresent(codingKey: .middle)
|
|
footer = try typeContainer.decodeMoleculeIfPresent(codingKey: .footer)
|
|
}
|
|
|
|
public func encode(to encoder: Encoder) throws {
|
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
try container.encode(pageType, forKey: .pageType)
|
|
try container.encodeIfPresent(screenHeading, forKey: .screenHeading)
|
|
try container.encodeIfPresent(isAtomicTabs, forKey: .isAtomicTabs)
|
|
try container.encodeModelIfPresent(header, forKey: .header)
|
|
try container.encodeModelIfPresent(header, forKey: .middle)
|
|
try container.encodeModelIfPresent(footer, forKey: .footer)
|
|
}
|
|
}
|