Merge branch 'develop' into feature/list_rightvariable_totaldata

* develop: (28 commits)
  bug fixes
  fix typo
  moved files
  fixes for certain devices
  Minor changes for testing
  sticky footer
  fix molecule protocol type Update column molecule to allow for matching heights on each side.
  Changes made as per comments
  uistack molecule extension
  Removed extra spaces and added height constraint for stacks.
  Removed extra space.
  code improvement
  Refactored code as per the changes in confluence.
  Resolved merge conflicts.
  19006 - List - Two Column - Price Description - Files added to new branch
  Code cleanup
  Code cleanup.
  Code refactoring.
  Created folder structure
  Added ListTwoCloumnPriceDetails molecule
  ...
This commit is contained in:
Kruthika KP 2020-03-17 15:13:26 +05:30
commit e9569b0623
18 changed files with 547 additions and 9 deletions

View File

@ -121,6 +121,10 @@
525019DE2406430800EED91C /* ListProgressBarData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525019DC2406430800EED91C /* ListProgressBarData.swift */; };
525019E52406852100EED91C /* ListFourColumnDataUsageDividerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525019E42406852100EED91C /* ListFourColumnDataUsageDividerModel.swift */; };
525019E72406853600EED91C /* ListFourColumnDataUsageDivider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525019E62406853600EED91C /* ListFourColumnDataUsageDivider.swift */; };
525239C02407BCFF00454969 /* ListTwoColumnPriceDetailsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525239BF2407BCFF00454969 /* ListTwoColumnPriceDetailsModel.swift */; };
525239C22407BD1000454969 /* ListTwoColumnPriceDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525239C12407BD1000454969 /* ListTwoColumnPriceDetails.swift */; };
526A265C240D1FF700B0D828 /* ListTwoColumnCompareChangesModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526A265B240D1FF700B0D828 /* ListTwoColumnCompareChangesModel.swift */; };
526A265E240D200500B0D828 /* ListTwoColumnCompareChanges.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526A265D240D200500B0D828 /* ListTwoColumnCompareChanges.swift */; };
52B201D224081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B201D024081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethod.swift */; };
52B201D324081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethodModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B201D124081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethodModel.swift */; };
8D070BB0241B56530099AC56 /* ListRightVariableTotalDataCaretModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D070BAF241B56530099AC56 /* ListRightVariableTotalDataCaretModel.swift */; };
@ -200,6 +204,9 @@
D22D1F47220496A30077CEC0 /* MVMCoreUISwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D22D1F45220496A30077CEC0 /* MVMCoreUISwitch.m */; };
D22D1F562204CE5D0077CEC0 /* MVMCoreUIStackableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = D22D1F542204CE5D0077CEC0 /* MVMCoreUIStackableViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
D22D1F572204CE5D0077CEC0 /* MVMCoreUIStackableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D22D1F552204CE5D0077CEC0 /* MVMCoreUIStackableViewController.m */; };
D22D8395241FB41200D3DF69 /* UIStackView+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D22D8394241FB41200D3DF69 /* UIStackView+Extension.swift */; };
D236E5B4241FEB1000C38625 /* ListTwoColumnPriceDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = D236E5B2241FEB1000C38625 /* ListTwoColumnPriceDescription.swift */; };
D236E5B5241FEB1000C38625 /* ListTwoColumnPriceDescriptionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D236E5B3241FEB1000C38625 /* ListTwoColumnPriceDescriptionModel.swift */; };
D243859923A16B1800332775 /* Container.swift in Sources */ = {isa = PBXBuildFile; fileRef = D243859823A16B1800332775 /* Container.swift */; };
D256E9932412880000360572 /* Header.swift in Sources */ = {isa = PBXBuildFile; fileRef = D256E9922412880000360572 /* Header.swift */; };
D260105323CEA61600764D80 /* ToggleModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D260105223CEA61600764D80 /* ToggleModel.swift */; };
@ -490,6 +497,10 @@
525019DC2406430800EED91C /* ListProgressBarData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListProgressBarData.swift; sourceTree = "<group>"; };
525019E42406852100EED91C /* ListFourColumnDataUsageDividerModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListFourColumnDataUsageDividerModel.swift; sourceTree = "<group>"; };
525019E62406853600EED91C /* ListFourColumnDataUsageDivider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListFourColumnDataUsageDivider.swift; sourceTree = "<group>"; };
525239BF2407BCFF00454969 /* ListTwoColumnPriceDetailsModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListTwoColumnPriceDetailsModel.swift; sourceTree = "<group>"; };
525239C12407BD1000454969 /* ListTwoColumnPriceDetails.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListTwoColumnPriceDetails.swift; sourceTree = "<group>"; };
526A265B240D1FF700B0D828 /* ListTwoColumnCompareChangesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListTwoColumnCompareChangesModel.swift; sourceTree = "<group>"; };
526A265D240D200500B0D828 /* ListTwoColumnCompareChanges.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListTwoColumnCompareChanges.swift; sourceTree = "<group>"; };
52B201D024081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethod.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListLeftVariableRadioButtonAndPaymentMethod.swift; sourceTree = "<group>"; };
52B201D124081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethodModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListLeftVariableRadioButtonAndPaymentMethodModel.swift; sourceTree = "<group>"; };
8D070BAF241B56530099AC56 /* ListRightVariableTotalDataCaretModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListRightVariableTotalDataCaretModel.swift; sourceTree = "<group>"; };
@ -566,6 +577,9 @@
D22D1F45220496A30077CEC0 /* MVMCoreUISwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUISwitch.m; sourceTree = "<group>"; };
D22D1F542204CE5D0077CEC0 /* MVMCoreUIStackableViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIStackableViewController.h; sourceTree = "<group>"; };
D22D1F552204CE5D0077CEC0 /* MVMCoreUIStackableViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUIStackableViewController.m; sourceTree = "<group>"; };
D22D8394241FB41200D3DF69 /* UIStackView+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIStackView+Extension.swift"; sourceTree = "<group>"; };
D236E5B2241FEB1000C38625 /* ListTwoColumnPriceDescription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListTwoColumnPriceDescription.swift; sourceTree = "<group>"; };
D236E5B3241FEB1000C38625 /* ListTwoColumnPriceDescriptionModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListTwoColumnPriceDescriptionModel.swift; sourceTree = "<group>"; };
D243859823A16B1800332775 /* Container.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Container.swift; sourceTree = "<group>"; };
D256E9922412880000360572 /* Header.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Header.swift; sourceTree = "<group>"; };
D260105223CEA61600764D80 /* ToggleModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToggleModel.swift; sourceTree = "<group>"; };
@ -898,6 +912,13 @@
path = LockUps;
sourceTree = "<group>";
};
526A265A240D1FCE00B0D828 /* TwoColumn */ = {
isa = PBXGroup;
children = (
);
path = TwoColumn;
sourceTree = "<group>";
};
94C2D9822386F3E30006CF46 /* Label */ = {
isa = PBXGroup;
children = (
@ -1116,6 +1137,7 @@
D22B38EA23F4E08B00490EF6 /* List */ = {
isa = PBXGroup;
children = (
D22D8396241FDE4700D3DF69 /* TwoColumn */,
52267A0523FFE0A900906CBA /* OneColumn */,
AA4FC2A323F4F69600E251DB /* RightVariable */,
D22B38EB23F4E0AE00490EF6 /* LeftVariable */,
@ -1139,6 +1161,7 @@
D22B38EC23F4E10700490EF6 /* SectionDividers */ = {
isa = PBXGroup;
children = (
526A265A240D1FCE00B0D828 /* TwoColumn */,
525019E3240684E500EED91C /* FourColumn */,
D22B38ED23F4E11100490EF6 /* ThreeColumn */,
);
@ -1163,6 +1186,19 @@
path = Legacy;
sourceTree = "<group>";
};
D22D8396241FDE4700D3DF69 /* TwoColumn */ = {
isa = PBXGroup;
children = (
D236E5B3241FEB1000C38625 /* ListTwoColumnPriceDescriptionModel.swift */,
D236E5B2241FEB1000C38625 /* ListTwoColumnPriceDescription.swift */,
526A265B240D1FF700B0D828 /* ListTwoColumnCompareChangesModel.swift */,
526A265D240D200500B0D828 /* ListTwoColumnCompareChanges.swift */,
525239BF2407BCFF00454969 /* ListTwoColumnPriceDetailsModel.swift */,
525239C12407BD1000454969 /* ListTwoColumnPriceDetails.swift */,
);
path = TwoColumn;
sourceTree = "<group>";
};
D260105723CF9CC500764D80 /* Doughnut */ = {
isa = PBXGroup;
children = (
@ -1317,6 +1353,7 @@
D29DF11421E6805F003B2FB9 /* NSLayoutConstraint+MFConvenience.m */,
D22479932316AE5E003FCCF9 /* NSLayoutConstraintExtension.swift */,
0AA33B33239813C50067DD0F /* UIColor+Extension.swift */,
D22D8394241FB41200D3DF69 /* UIStackView+Extension.swift */,
);
path = Categories;
sourceTree = "<group>";
@ -1810,6 +1847,7 @@
D29DF11721E6805F003B2FB9 /* UIColor+MFConvenience.m in Sources */,
D2B18B7F2360913400A9AEDC /* Control.swift in Sources */,
011D95A924057AC7000E3791 /* FormActionFieldProtocol.swift in Sources */,
D236E5B4241FEB1000C38625 /* ListTwoColumnPriceDescription.swift in Sources */,
0AA33B3A2398524F0067DD0F /* Toggle.swift in Sources */,
D29DF12F21E6851E003B2FB9 /* MVMCoreUITopAlertMainView.m in Sources */,
942C378C2412F4FA0066E45E /* ModalMoleculeListTemplate.swift in Sources */,
@ -1855,7 +1893,9 @@
012A88C4238D86E600FE3DA1 /* CarouselItemModelProtocol.swift in Sources */,
D2E2A9A123E095AB000B42E6 /* ButtonModelProtocol.swift in Sources */,
94C2D9AB23872EB50006CF46 /* LabelAttributeActionModel.swift in Sources */,
D22D8395241FB41200D3DF69 /* UIStackView+Extension.swift in Sources */,
52B201D324081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethodModel.swift in Sources */,
525239C02407BCFF00454969 /* ListTwoColumnPriceDetailsModel.swift in Sources */,
D2E2A99A23D8D6B4000B42E6 /* HeadlineBodyButtonModel.swift in Sources */,
8D084AD22410BF7600951227 /* ListOneColumnFullWidthTextBodyText.swift in Sources */,
014AA73123C5059B006F3E93 /* ListPageTemplateModel.swift in Sources */,
@ -1888,6 +1928,7 @@
D2D6CD4022E78C1A00D701B8 /* Scroller.swift in Sources */,
0A7EF85F23D8ABC500B2AAD1 /* MdnEntryFieldModel.swift in Sources */,
011D959B240451E3000E3791 /* RuleRequiredModel.swift in Sources */,
526A265C240D1FF700B0D828 /* ListTwoColumnCompareChangesModel.swift in Sources */,
01509D952327ED1900EF99AA /* HeadlineBodyLinkToggle.swift in Sources */,
31BE15CB23D8924D00452370 /* CheckboxLabelModel.swift in Sources */,
D260105523CEA7DC00764D80 /* MVMCoreUISwitch+Model.swift in Sources */,
@ -1950,6 +1991,7 @@
94AF4A3F23E9D13900676048 /* MFCaretButton.m in Sources */,
D29DF27A21E7A533003B2FB9 /* MVMCoreUISession.m in Sources */,
D2A5146B2214905000345BFB /* ThreeLayerViewController.swift in Sources */,
526A265E240D200500B0D828 /* ListTwoColumnCompareChanges.swift in Sources */,
8D24041523E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift in Sources */,
D28A838F23CCDEDE00DFE4FC /* TwoButtonViewModel.swift in Sources */,
D2D90B42240463E100DD6EC9 /* MoleculeHeaderModel.swift in Sources */,
@ -2018,6 +2060,7 @@
011D95892404249B000E3791 /* FormProtocol.swift in Sources */,
948DB67E2326DCD90011F916 /* MultiProgress.swift in Sources */,
013F801923FB4A8E00AD8013 /* UIContentMode+Extension.swift in Sources */,
525239C22407BD1000454969 /* ListTwoColumnPriceDetails.swift in Sources */,
D2A5146122121FBF00345BFB /* MoleculeStackTemplate.swift in Sources */,
D2E2A9A323E096B1000B42E6 /* DisableableModelProtocol.swift in Sources */,
D29DF11821E6805F003B2FB9 /* NSLayoutConstraint+MFConvenience.m in Sources */,
@ -2039,6 +2082,7 @@
D29DF29C21E7ADB9003B2FB9 /* MFProgrammaticTableViewController.m in Sources */,
0A7EF86323D8AFA000B2AAD1 /* BaseDropdownEntryFieldModel.swift in Sources */,
0A1214A022C11A18007C7030 /* ActionDetailWithImage.swift in Sources */,
D236E5B5241FEB1000C38625 /* ListTwoColumnPriceDescriptionModel.swift in Sources */,
D2B18B922361E65A00A9AEDC /* CoreUIObject.swift in Sources */,
D29DF2BE21E7BEA4003B2FB9 /* TopTabbar.m in Sources */,
014AA72E23C5059B006F3E93 /* StackCenteredPageTemplateModel.swift in Sources */,

View File

@ -32,7 +32,7 @@ import Foundation
var location: Int
var length: Int
init(_ location: Int, _ length: Int) {
public init(_ location: Int, _ length: Int) {
self.location = location
self.length = length
}

View File

@ -19,4 +19,8 @@ import UIKit
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
public override init(_ location: Int, _ length: Int) {
super.init(location, length)
}
}

View File

@ -181,7 +181,7 @@ import UIKit
let widthWillChange = !MVMCoreGetterUtility.cgfequal(widthConstraint?.constant ?? 0, width ?? 0)
let heightWillChange = !MVMCoreGetterUtility.cgfequal(heightConstraint?.constant ?? 0, height ?? 0)
let sizeWillChange = (width == nil || height == nil) && !(size?.equalTo(imageView.image?.size ?? CGSize.zero) ?? false)
let heightChangeFromSpinner = ((height ?? size?.height) ?? 0) < loadingSpinnerHeightConstraint?.constant ?? CGFloat.leastNormalMagnitude
let heightChangeFromSpinner = (heightConstraint?.isActive ?? false) ? false : ((height ?? size?.height) ?? 0) < loadingSpinnerHeightConstraint?.constant ?? CGFloat.leastNormalMagnitude
return widthWillChange || heightWillChange || sizeWillChange || heightChangeFromSpinner
}

View File

@ -17,7 +17,7 @@ open class ThreeLayerTableViewController: MFProgrammaticTableViewController {
private var footerView: UIView?
private var safeAreaView: UIView?
var useMargins: Bool = true
var bottomViewOutsideOfScrollArea: Bool = false
public var bottomViewOutsideOfScrollArea: Bool = false
private var topViewBottomConstraint: NSLayoutConstraint?
private var bottomViewTopConstraint: NSLayoutConstraint?

View File

@ -0,0 +1,23 @@
//
// UIStackView+Extension.swift
// MVMCoreUI
//
// Created by Scott Pfeil on 3/16/20.
// Copyright © 2020 Verizon Wireless. All rights reserved.
//
import Foundation
extension UIStackView: MVMCoreUIMoleculeViewProtocol {
public func updateView(_ size: CGFloat) {
for view in arrangedSubviews {
(view as? MVMCoreViewProtocol)?.updateView(size)
}
}
public func reset() {
for view in arrangedSubviews {
(view as? MVMCoreUIMoleculeViewProtocol)?.reset?()
}
}
}

View File

@ -311,7 +311,7 @@ static CGFloat const IndicatorRectangleHeight = 4;
self.currentPage = page;
}
#pragma mark - MoleculeViewProtocol
#pragma mark - MVMCoreUIMoleculeViewProtocol
- (void)setWithJSON:(NSDictionary *)json delegateObject:(MVMCoreUIDelegateObject *)delegateObject additionalData:(NSDictionary *)additionalData {
NSString *colorString = [json string:KeyBackgroundColor];

View File

@ -0,0 +1,113 @@
//
// ListTwoColumnCompareChanges.swift
// MVMCoreUI
//
// Created by Lekshmi S on 24/02/20.
// Copyright © 2020 Verizon Wireless. All rights reserved.
//
import Foundation
@objcMembers open class ListTwoColumnCompareChanges: TableViewCell {
//-------------------------------------------------------
// MARK: - Outlets
//-------------------------------------------------------
let leftHeadline1 = Label.commonLabelB1(true)
let leftHeadline2 = Label.commonLabelB1(true)
let leftHeadline3 = Label.commonLabelB1(true)
let leftBody = Label.commonLabelB2(true)
let leftLink = Link()
let rightHeadline1 = Label.commonLabelB1(true)
let rightHeadline2 = Label.commonLabelB1(true)
let rightHeadline3 = Label.commonLabelB1(true)
let rightBody = Label.commonLabelB2(true)
let rightLink = Link()
let containingStack: Stack<StackModel>
//------------------------------------------------------
// MARK: - Initializers
//------------------------------------------------------
public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
let stackHeadline1 = Stack<StackModel>.createStack(with: [(view: leftHeadline1, model: StackItemModel(percent: 50, verticalAlignment: .leading)),
(view: rightHeadline1, model: StackItemModel(percent: 50, verticalAlignment: .leading))],
axis: .horizontal)
let stackHeadline2 = Stack<StackModel>.createStack(with: [(view: leftHeadline2, model: StackItemModel(percent: 50, verticalAlignment: .leading)),
(view: rightHeadline2, model: StackItemModel(percent: 50, verticalAlignment: .leading))],
axis: .horizontal)
let stackHeadline3 = Stack<StackModel>.createStack(with: [(view: leftHeadline3, model: StackItemModel(percent: 50, verticalAlignment: .leading)),
(view: rightHeadline3, model: StackItemModel(percent: 50, verticalAlignment: .leading))],
axis: .horizontal)
let stackBody = Stack<StackModel>.createStack(with: [(view: leftBody, model: StackItemModel(percent: 50, verticalAlignment: .leading)),
(view: rightBody, model: StackItemModel(percent: 50, verticalAlignment: .leading))],
axis: .horizontal)
let stackLink = Stack<StackModel>.createStack(with: [(view: leftLink, model: StackItemModel(percent: 50, verticalAlignment: .leading)),
(view: rightLink, model: StackItemModel(percent: 50, verticalAlignment: .leading))],
axis: .horizontal)
containingStack = Stack<StackModel>.createStack(with: [stackHeadline1,
stackHeadline2,
stackHeadline3,
stackBody,
stackLink],
spacing: 0)
containingStack.stackModel?.molecules[1].spacing = 5
containingStack.stackModel?.molecules[2].spacing = 5
containingStack.stackModel?.molecules[4].spacing = 5
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
public required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
//------------------------------------------------------
// MARK: - Properties
//------------------------------------------------------
let stackSpacing: CGFloat = 5.0
//-------------------------------------------------------
// MARK: - View Lifecycle
//-------------------------------------------------------
open override func setupView() {
super.setupView()
addMolecule(containingStack)
for molecule in containingStack.stackItems {
((molecule as? StackItem)?.view as? Stack<StackModel>)?.restack()
}
containingStack.restack()
}
//------------------------------------------------------
// MARK: - Molecule
//------------------------------------------------------
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
super.set(with: model, delegateObject, additionalData)
guard let model = model as? ListTwoColumnCompareChangesModel else { return }
leftHeadline1.set(with: model.leftHeadline1, delegateObject, additionalData)
leftHeadline2.set(with: model.leftHeadline2, delegateObject, additionalData)
leftHeadline3.set(with: model.leftHeadline3, delegateObject, additionalData)
leftBody.set(with: model.leftBody, delegateObject, additionalData)
leftLink.set(with: model.leftLink, delegateObject, additionalData)
rightHeadline1.set(with: model.rightHeadline1, delegateObject, additionalData)
rightHeadline2.set(with: model.rightHeadline2, delegateObject, additionalData)
rightHeadline3.set(with: model.rightHeadline3, delegateObject, additionalData)
rightBody.set(with: model.rightBody, delegateObject, additionalData)
rightLink.set(with: model.rightLink, delegateObject, additionalData)
}
open override func reset() {
super.reset()
leftHeadline1.styleB1(true)
leftHeadline2.styleB1(true)
leftHeadline3.styleB1(true)
leftBody.styleB2(true)
rightHeadline1.styleB1(true)
rightHeadline2.styleB1(true)
rightHeadline3.styleB1(true)
rightBody.styleB2(true)
}
public override class func estimatedHeight(with molecule: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {
return 121
}
}

View File

@ -0,0 +1,83 @@
//
// ListTwoColumnCompareChangesModel.swift
// MVMCoreUI
//
// Created by Lekshmi S on 24/02/20.
// Copyright © 2020 Verizon Wireless. All rights reserved.
//
import Foundation
public class ListTwoColumnCompareChangesModel: ListItemModel, MoleculeModelProtocol {
public static var identifier: String = "list2CCmpr1"
public var leftHeadline1: LabelModel
public var leftHeadline2: LabelModel
public var leftHeadline3: LabelModel
public var leftBody: LabelModel
public var leftLink: LinkModel
public var rightHeadline1: LabelModel
public var rightHeadline2: LabelModel
public var rightHeadline3: LabelModel
public var rightBody: LabelModel
public var rightLink: LinkModel
public init(leftHeadline1: LabelModel, leftHeadline2: LabelModel, leftHeadline3: LabelModel, leftBody: LabelModel, leftLink: LinkModel, rightHeadline1: LabelModel, rightHeadline2: LabelModel, rightHeadline3: LabelModel, rightBody: LabelModel, rightLink: LinkModel) {
self.leftHeadline1 = leftHeadline1
self.leftHeadline2 = leftHeadline2
self.leftHeadline3 = leftHeadline3
self.leftBody = leftBody
self.leftLink = leftLink
self.rightHeadline1 = rightHeadline1
self.rightHeadline2 = rightHeadline2
self.rightHeadline3 = rightHeadline3
self.rightBody = rightBody
self.rightLink = rightLink
super.init()
}
private enum CodingKeys: String, CodingKey {
case moleculeName
case leftHeadline1
case leftHeadline2
case leftHeadline3
case leftBody
case leftLink
case rightHeadline1
case rightHeadline2
case rightHeadline3
case rightBody
case rightLink
}
required public init(from decoder: Decoder) throws {
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
leftHeadline1 = try typeContainer.decode(LabelModel.self, forKey: .leftHeadline1)
leftHeadline2 = try typeContainer.decode(LabelModel.self, forKey: .leftHeadline2)
leftHeadline3 = try typeContainer.decode(LabelModel.self, forKey: .leftHeadline3)
leftBody = try typeContainer.decode(LabelModel.self, forKey: .leftBody)
leftLink = try typeContainer.decode(LinkModel.self, forKey: .leftLink)
rightHeadline1 = try typeContainer.decode(LabelModel.self, forKey: .rightHeadline1)
rightHeadline2 = try typeContainer.decode(LabelModel.self, forKey: .rightHeadline2)
rightHeadline3 = try typeContainer.decode(LabelModel.self, forKey: .rightHeadline3)
rightBody = try typeContainer.decode(LabelModel.self, forKey: .rightBody)
rightLink = try typeContainer.decode(LinkModel.self, forKey: .rightLink)
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(moleculeName, forKey: .moleculeName)
try container.encode(leftHeadline1, forKey: .leftHeadline1)
try container.encode(leftHeadline2, forKey: .leftHeadline2)
try container.encode(leftHeadline3, forKey: .leftHeadline3)
try container.encode(leftBody, forKey: .leftBody)
try container.encode(leftLink, forKey: .leftLink)
try container.encode(rightHeadline1, forKey: .rightHeadline1)
try container.encode(rightHeadline2, forKey: .rightHeadline2)
try container.encode(rightHeadline3, forKey: .rightHeadline3)
try container.encode(rightBody, forKey: .rightBody)
try container.encode(rightLink, forKey: .rightLink)
}
}

View File

@ -0,0 +1,94 @@
//
// ListTwoColumnPriceDescription.swift
// MVMCoreUI
//
// Created by Kruthika KP on 24/02/20.
// Copyright © 2020 Verizon Wireless. All rights reserved.
//
import Foundation
@objcMembers open class ListTwoColumnPriceDescription: TableViewCell {
//-----------------------------------------------------
// MARK: - Outlets
//-------------------------------------------------------
public let leftHeadline = Label.commonLabelB1(true)
public let leftBody = Label.commonLabelB2(true)
public let rightLabel = Label.commonLabelB2(true)
public let rightSubLabel = Label.commonLabelB2(true)
public let view = MVMCoreUICommonViewsUtility.commonView()
public let leftVerticalStack: UIStackView
public let rightVerticalStack: UIStackView
//------------------------------------------------------
// MARK: - Initializers
//------------------------------------------------------
public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
leftVerticalStack = UIStackView(arrangedSubviews: [leftHeadline, leftBody])
leftVerticalStack.axis = .vertical
leftVerticalStack.alignment = .leading
rightVerticalStack = UIStackView(arrangedSubviews: [rightLabel, rightSubLabel])
rightVerticalStack.axis = .vertical
rightVerticalStack.alignment = .trailing
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
public required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
//-----------------------------------------------------
// MARK: - View Lifecycle
//-------------------------------------------------------
open override func updateView(_ size: CGFloat) {
super.updateView(size)
leftVerticalStack.updateView(size)
rightVerticalStack.updateView(size)
}
override open func setupView() {
super.setupView()
contentView.addSubview(view)
containerHelper.constrainView(view)
leftVerticalStack.translatesAutoresizingMaskIntoConstraints = false
rightVerticalStack.translatesAutoresizingMaskIntoConstraints = false
rightLabel.setContentHuggingPriority(.defaultHigh, for: .vertical)
rightSubLabel.setContentHuggingPriority(.defaultHigh, for: .vertical)
view.addSubview(leftVerticalStack)
view.addSubview(rightVerticalStack)
NSLayoutConstraint.pinViews(leftView: leftVerticalStack, rightView: rightVerticalStack, alignTop: true)
leftHeadline.numberOfLines = 1
rightLabel.numberOfLines = 1
rightSubLabel.numberOfLines = 1
}
//----------------------------------------------------
// MARK: - Molecule
//------------------------------------------------------
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
super.set(with: model, delegateObject, additionalData)
guard let model = model as? ListTwoColumnPriceDescriptionModel else { return }
leftHeadline.set(with: model.leftHeadline, delegateObject, additionalData)
leftBody.set(with: model.leftBody, delegateObject, additionalData)
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
rightSubLabel.set(with: model.rightSubLabel, delegateObject, additionalData)
}
open override class func estimatedHeight(with molecule: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
return 80
}
override open func reset() {
super.reset()
leftVerticalStack.reset()
rightVerticalStack.reset()
leftHeadline.styleB1(true)
leftBody.styleB2(true)
rightLabel.styleB2(true)
rightSubLabel.styleB2(true)
}
}

View File

@ -0,0 +1,66 @@
//
// ListTwoColumnPriceDescriptionModel.swift
// MVMCoreUI
//
// Created by Kruthika KP on 26/02/20.
// Copyright © 2020 Verizon Wireless. All rights reserved.
//
import Foundation
public class ListTwoColumnPriceDescriptionModel: ListItemModel, MoleculeModelProtocol {
public static var identifier: String = "list2CTxtPrc1"
public var leftHeadline: LabelModel
public var leftBody: LabelModel
public var rightLabel: LabelModel
public var rightSubLabel: LabelModel
override public func setDefaults() {
super.setDefaults()
rightLabel.hero = 0
if rightSubLabel.textColor == nil {
rightSubLabel.textColor = Color(uiColor: .mvmCoolGray6)
}
if rightSubLabel.attributes == nil {
rightSubLabel.attributes = [LabelAttributeStrikeThroughModel(0, rightSubLabel.text.count)]
}
}
public init(leftHeadline: LabelModel,leftBody: LabelModel, rightLabel: LabelModel, rightSubLabel: LabelModel) {
self.leftHeadline = leftHeadline
self.leftBody = leftBody
self.rightLabel = rightLabel
self.rightSubLabel = rightSubLabel
super.init()
}
private enum CodingKeys: String, CodingKey {
case moleculeName
case leftHeadline
case leftBody
case rightLabel
case rightSubLabel
}
required public init(from decoder: Decoder) throws {
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
leftHeadline = try typeContainer.decode(LabelModel.self, forKey: .leftHeadline)
leftBody = try typeContainer.decode(LabelModel.self, forKey: .leftBody)
rightLabel = try typeContainer.decode(LabelModel.self, forKey: .rightLabel)
rightSubLabel = try typeContainer.decode(LabelModel.self, forKey: .rightSubLabel)
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(moleculeName, forKey: .moleculeName)
try container.encode(leftHeadline, forKey: .leftHeadline)
try container.encode(leftBody, forKey: .leftBody)
try container.encode(rightLabel, forKey: .rightLabel)
try container.encode(rightSubLabel, forKey: .rightSubLabel)
}
}

View File

@ -0,0 +1,54 @@
//
// ListTwoColumnPriceDetails.swift
// MVMCoreUI
//
// Created by Lekshmi S on 19/02/20.
// Copyright © 2020 Verizon Wireless. All rights reserved.
//
import UIKit
@objcMembers open class ListTwoColumnPriceDetails: TableViewCell {
let leftLabel = Label.commonLabelB2(true)
let rightLabel = Label.commonLabelB2(true)
let view = MVMCoreUICommonViewsUtility.commonView()
// MARK: - MFViewProtocol
open override func setupView() {
super.setupView()
view.addSubview(leftLabel)
view.addSubview(rightLabel)
NSLayoutConstraint.pinViews(leftView: leftLabel, rightView: rightLabel, alignTop: true)
contentView.addSubview(view)
containerHelper.constrainView(view)
rightLabel.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 900), for: .horizontal)
rightLabel.setContentHuggingPriority(.defaultHigh, for: .vertical)
}
open override func updateView(_ size: CGFloat) {
super.updateView(size)
leftLabel.updateView(size)
rightLabel.updateView(size)
}
// MARK: - MVMCoreUIMoleculeViewProtocol
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
super.set(with: model, delegateObject, additionalData)
guard let model = model as? ListTwoColumnPriceDetailsModel else { return }
leftLabel.set(with: model.leftLabel, delegateObject, additionalData)
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
}
open override func reset() {
super.reset()
leftLabel.reset()
rightLabel.reset()
leftLabel.styleB2(true)
rightLabel.styleB2(true)
}
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {
return 15
}
}

View File

@ -0,0 +1,54 @@
//
// ListTwoColumnPriceDetailsModel.swift
// MVMCoreUI
//
// Created by Lekshmi S on 19/02/20.
// Copyright © 2020 Verizon Wireless. All rights reserved.
//
import Foundation
public class ListTwoColumnPriceDetailsModel: ListItemModel, MoleculeModelProtocol {
public static var identifier: String = "list2CTxtPrc2"
public var leftLabel: LabelModel
public var rightLabel: LabelModel
public init(leftLabel: LabelModel, rightLabel:LabelModel) {
self.leftLabel = leftLabel
self.rightLabel = rightLabel
super.init()
}
/// Defaults to set
override public func setDefaults() {
super.setDefaults()
style = "none"
if leftLabel.textColor == nil {
leftLabel.textColor = Color(uiColor: .mvmCoolGray6)
}
if rightLabel.textColor == nil {
rightLabel.textColor = Color(uiColor: .mvmCoolGray6)
}
}
private enum CodingKeys: String, CodingKey {
case moleculeName
case leftLabel
case rightLabel
}
required public init(from decoder: Decoder) throws {
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
leftLabel = try typeContainer.decode(LabelModel.self, forKey: .leftLabel)
rightLabel = try typeContainer.decode(LabelModel.self, forKey: .rightLabel)
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(moleculeName, forKey: .moleculeName)
try container.encode(leftLabel, forKey: .leftLabel)
try container.encode(rightLabel, forKey: .rightLabel)
}
}

View File

@ -152,7 +152,7 @@ import UIKit
styleDefault()
spaceAboveMolecule = 6.0
spaceBelowMolecule = 6.0
(middleView as? MoleculeViewProtocol)?.reset?()
(middleView as? MVMCoreUIMoleculeViewProtocol)?.reset?()
}
func styleDefault() {

View File

@ -73,7 +73,7 @@ open class StringAndMoleculeView: View {
override open func reset() {
super.reset()
label.reset()
(molecule as? MoleculeViewProtocol)?.reset?()
(molecule as? MVMCoreUIMoleculeViewProtocol)?.reset?()
}
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {

View File

@ -135,7 +135,7 @@ open class Stack<T>: Container where T: (StackModelProtocol & MoleculeModelProto
super.reset()
backgroundColor = .clear
for item in stackItems {
(item as? MoleculeViewProtocol)?.reset?()
(item as? MVMCoreUIMoleculeViewProtocol)?.reset?()
}
}

View File

@ -112,7 +112,10 @@ import Foundation
// Designed Section Dividers
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListFourColumnDataUsageDivider.self, viewModelClass: ListFourColumnDataUsageDividerModel.self)
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListThreeColumnPlanDataDivider.self, viewModelClass: ListThreeColumnPlanDataDividerModel.self)
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListTwoColumnCompareChanges.self, viewModelClass: ListTwoColumnCompareChangesModel.self)
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListTwoColumnPriceDetails.self, viewModelClass: ListTwoColumnPriceDetailsModel.self)
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListTwoColumnPriceDescription.self, viewModelClass: ListTwoColumnPriceDescriptionModel.self)
// TODO: Need model
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(DigitEntryField.self, forKey: "digitTextField" as NSString)
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(DateDropdownEntryField.self, forKey: "dateDropdownEntryField" as NSString)

View File

@ -137,12 +137,12 @@ open class MoleculeListTemplate: ThreeLayerTableViewController, TemplateProtocol
(moleculeCell as? ModelMoleculeViewProtocol)?.set(with: moleculeInfo.molecule, delegate, nil)
moleculeCell?.updateView(tableView.bounds.width)
// Neded to fix an apple defect where the cell is not the correct size on certain devices for certain cells
cell.layoutIfNeeded()
return cell
}
open override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if let protocolCell = cell as? MoleculeListCellProtocol {
protocolCell.willDisplay()
}