merge
This commit is contained in:
commit
4c25b8a160
@ -12,9 +12,10 @@
|
|||||||
0105618D224BBE7700E1557D /* FormValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618A224BBE7700E1557D /* FormValidator.swift */; };
|
0105618D224BBE7700E1557D /* FormValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618A224BBE7700E1557D /* FormValidator.swift */; };
|
||||||
0105618E224BBE7700E1557D /* FormValidator+TextFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618B224BBE7700E1557D /* FormValidator+TextFields.swift */; };
|
0105618E224BBE7700E1557D /* FormValidator+TextFields.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618B224BBE7700E1557D /* FormValidator+TextFields.swift */; };
|
||||||
0105618F224BBE7700E1557D /* FormValidator+FormParams.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618C224BBE7700E1557D /* FormValidator+FormParams.swift */; };
|
0105618F224BBE7700E1557D /* FormValidator+FormParams.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0105618C224BBE7700E1557D /* FormValidator+FormParams.swift */; };
|
||||||
0116A4E5228B19640094F3ED /* RadioButtonModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0116A4E4228B19640094F3ED /* RadioButtonModel.swift */; };
|
0116A4E5228B19640094F3ED /* RadioButtonSelectionHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0116A4E4228B19640094F3ED /* RadioButtonSelectionHelper.swift */; };
|
||||||
011B58F023A2AA980085F53C /* ListItemModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011B58EF23A2AA980085F53C /* ListItemModelProtocol.swift */; };
|
011B58F023A2AA980085F53C /* ListItemModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011B58EF23A2AA980085F53C /* ListItemModelProtocol.swift */; };
|
||||||
011B58F223A2AE2C0085F53C /* DropDownListItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011B58F123A2AE2C0085F53C /* DropDownListItemModel.swift */; };
|
011B58F223A2AE2C0085F53C /* DropDownListItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011B58F123A2AE2C0085F53C /* DropDownListItemModel.swift */; };
|
||||||
|
011D95AF2407266E000E3791 /* RadioButtonModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011D95AE2407266E000E3791 /* RadioButtonModel.swift */; };
|
||||||
012A889C23889E8400FE3DA1 /* TemplateModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 012A889B23889E8400FE3DA1 /* TemplateModelProtocol.swift */; };
|
012A889C23889E8400FE3DA1 /* TemplateModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 012A889B23889E8400FE3DA1 /* TemplateModelProtocol.swift */; };
|
||||||
012A88AD238C418100FE3DA1 /* TemplateProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 012A88AC238C418100FE3DA1 /* TemplateProtocol.swift */; };
|
012A88AD238C418100FE3DA1 /* TemplateProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 012A88AC238C418100FE3DA1 /* TemplateProtocol.swift */; };
|
||||||
012A88B1238C880100FE3DA1 /* CarouselPagingModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 012A88B0238C880100FE3DA1 /* CarouselPagingModelProtocol.swift */; };
|
012A88B1238C880100FE3DA1 /* CarouselPagingModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 012A88B0238C880100FE3DA1 /* CarouselPagingModelProtocol.swift */; };
|
||||||
@ -94,6 +95,10 @@
|
|||||||
0ABD136D237CAD1E0081388D /* DateDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */; };
|
0ABD136D237CAD1E0081388D /* DateDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */; };
|
||||||
0ABD1371237DB0450081388D /* ItemDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD1370237DB0450081388D /* ItemDropdownEntryField.swift */; };
|
0ABD1371237DB0450081388D /* ItemDropdownEntryField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD1370237DB0450081388D /* ItemDropdownEntryField.swift */; };
|
||||||
0AE14F64238315D2005417F8 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE14F63238315D2005417F8 /* TextField.swift */; };
|
0AE14F64238315D2005417F8 /* TextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE14F63238315D2005417F8 /* TextField.swift */; };
|
||||||
|
0AE98BAF23FEF956004C5109 /* ExternalLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE98BAE23FEF956004C5109 /* ExternalLink.swift */; };
|
||||||
|
0AE98BB323FF0934004C5109 /* ExternalLinkModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE98BB223FF0934004C5109 /* ExternalLinkModel.swift */; };
|
||||||
|
0AE98BB523FF18D2004C5109 /* Arrow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE98BB423FF18D2004C5109 /* Arrow.swift */; };
|
||||||
|
0AE98BB723FF18E9004C5109 /* ArrowModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AE98BB623FF18E9004C5109 /* ArrowModel.swift */; };
|
||||||
31BE15CB23D8924D00452370 /* CheckboxLabelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */; };
|
31BE15CB23D8924D00452370 /* CheckboxLabelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */; };
|
||||||
31BE15CC23D8924D00452370 /* CheckboxModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BE15CA23D8924C00452370 /* CheckboxModel.swift */; };
|
31BE15CC23D8924D00452370 /* CheckboxModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31BE15CA23D8924C00452370 /* CheckboxModel.swift */; };
|
||||||
522679C123FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522679BF23FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift */; };
|
522679C123FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522679BF23FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift */; };
|
||||||
@ -103,6 +108,8 @@
|
|||||||
5248BFED23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5248BFEB23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift */; };
|
5248BFED23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5248BFEB23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift */; };
|
||||||
525019E52406852100EED91C /* ListFourColumnDataUsageDividerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525019E42406852100EED91C /* ListFourColumnDataUsageDividerModel.swift */; };
|
525019E52406852100EED91C /* ListFourColumnDataUsageDividerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525019E42406852100EED91C /* ListFourColumnDataUsageDividerModel.swift */; };
|
||||||
525019E72406853600EED91C /* ListFourColumnDataUsageDivider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525019E62406853600EED91C /* ListFourColumnDataUsageDivider.swift */; };
|
525019E72406853600EED91C /* ListFourColumnDataUsageDivider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525019E62406853600EED91C /* ListFourColumnDataUsageDivider.swift */; };
|
||||||
|
52B201D224081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B201D024081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethod.swift */; };
|
||||||
|
52B201D324081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethodModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B201D124081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethodModel.swift */; };
|
||||||
8D24041123E7FB9E009E23BE /* ListLeftVariableIconWithRightCaret.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D24041023E7FB9E009E23BE /* ListLeftVariableIconWithRightCaret.swift */; };
|
8D24041123E7FB9E009E23BE /* ListLeftVariableIconWithRightCaret.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D24041023E7FB9E009E23BE /* ListLeftVariableIconWithRightCaret.swift */; };
|
||||||
8D24041523E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D24041423E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift */; };
|
8D24041523E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D24041423E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift */; };
|
||||||
8D448E5524050A46006211BB /* ListOneColumnFullWidthTextAllTextAndLinksModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D448E5424050A46006211BB /* ListOneColumnFullWidthTextAllTextAndLinksModel.swift */; };
|
8D448E5524050A46006211BB /* ListOneColumnFullWidthTextAllTextAndLinksModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D448E5424050A46006211BB /* ListOneColumnFullWidthTextAllTextAndLinksModel.swift */; };
|
||||||
@ -115,6 +122,8 @@
|
|||||||
944589212385D6E900DE9FD4 /* DashLineModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944589202385D6E900DE9FD4 /* DashLineModel.swift */; };
|
944589212385D6E900DE9FD4 /* DashLineModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944589202385D6E900DE9FD4 /* DashLineModel.swift */; };
|
||||||
944589232385DA9600DE9FD4 /* ImageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944589222385DA9500DE9FD4 /* ImageViewModel.swift */; };
|
944589232385DA9600DE9FD4 /* ImageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944589222385DA9500DE9FD4 /* ImageViewModel.swift */; };
|
||||||
9455B19C234F8A0400A574DB /* MVMAnimationFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9455B19B234F8A0400A574DB /* MVMAnimationFramework.framework */; };
|
9455B19C234F8A0400A574DB /* MVMAnimationFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9455B19B234F8A0400A574DB /* MVMAnimationFramework.framework */; };
|
||||||
|
9458C3172406C8FD00930963 /* UIFont+FontWrapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 9458C3152406C8FD00930963 /* UIFont+FontWrapping.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
|
9458C3182406C8FD00930963 /* UIFont+FontWrapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9458C3162406C8FD00930963 /* UIFont+FontWrapping.m */; };
|
||||||
946EE1BA237B66D80036751F /* MoleculeModelHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 946EE1B9237B66D80036751F /* MoleculeModelHelper.swift */; };
|
946EE1BA237B66D80036751F /* MoleculeModelHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 946EE1B9237B66D80036751F /* MoleculeModelHelper.swift */; };
|
||||||
948DB67E2326DCD90011F916 /* MultiProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 948DB67D2326DCD90011F916 /* MultiProgress.swift */; };
|
948DB67E2326DCD90011F916 /* MultiProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 948DB67D2326DCD90011F916 /* MultiProgress.swift */; };
|
||||||
94AF4A3E23E9D13900676048 /* MFCaretButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 94AF4A3C23E9D13900676048 /* MFCaretButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
94AF4A3E23E9D13900676048 /* MFCaretButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 94AF4A3C23E9D13900676048 /* MFCaretButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
@ -130,6 +139,10 @@
|
|||||||
94C2D9AB23872EB50006CF46 /* LabelAttributeActionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C2D9AA23872EB50006CF46 /* LabelAttributeActionModel.swift */; };
|
94C2D9AB23872EB50006CF46 /* LabelAttributeActionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C2D9AA23872EB50006CF46 /* LabelAttributeActionModel.swift */; };
|
||||||
94C661D923CCF4B400D9FE5B /* LeftRightLabelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9402C34F23A2CEA3004B974C /* LeftRightLabelModel.swift */; };
|
94C661D923CCF4B400D9FE5B /* LeftRightLabelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9402C34F23A2CEA3004B974C /* LeftRightLabelModel.swift */; };
|
||||||
94C661DA23CCF4FB00D9FE5B /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AA33B33239813C50067DD0F /* UIColor+Extension.swift */; };
|
94C661DA23CCF4FB00D9FE5B /* UIColor+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AA33B33239813C50067DD0F /* UIColor+Extension.swift */; };
|
||||||
|
94CA227C24058534002D6750 /* VerizonNHGeTX-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 94CA227824058533002D6750 /* VerizonNHGeTX-Bold.otf */; };
|
||||||
|
94CA227D24058534002D6750 /* VerizonNHGeDS-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 94CA227924058533002D6750 /* VerizonNHGeDS-Regular.otf */; };
|
||||||
|
94CA227E24058534002D6750 /* VerizonNHGeDS-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 94CA227A24058533002D6750 /* VerizonNHGeDS-Bold.otf */; };
|
||||||
|
94CA227F24058534002D6750 /* VerizonNHGeTX-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 94CA227B24058533002D6750 /* VerizonNHGeTX-Regular.otf */; };
|
||||||
94F217B623E0BF6100A47C06 /* PrimaryButtonView.h in Headers */ = {isa = PBXBuildFile; fileRef = 94F217B423E0BF6100A47C06 /* PrimaryButtonView.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
94F217B623E0BF6100A47C06 /* PrimaryButtonView.h in Headers */ = {isa = PBXBuildFile; fileRef = 94F217B423E0BF6100A47C06 /* PrimaryButtonView.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
94F217B723E0BF6100A47C06 /* PrimaryButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 94F217B523E0BF6100A47C06 /* PrimaryButtonView.m */; };
|
94F217B723E0BF6100A47C06 /* PrimaryButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = 94F217B523E0BF6100A47C06 /* PrimaryButtonView.m */; };
|
||||||
94FB966223D797DA003D482B /* MFTextButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 94FB966023D797DA003D482B /* MFTextButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
94FB966223D797DA003D482B /* MFTextButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 94FB966023D797DA003D482B /* MFTextButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
@ -292,10 +305,7 @@
|
|||||||
D29DF2E121E9240B003B2FB9 /* MVMCoreUIPanelProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF2E021E9240B003B2FB9 /* MVMCoreUIPanelProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
D29DF2E121E9240B003B2FB9 /* MVMCoreUIPanelProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF2E021E9240B003B2FB9 /* MVMCoreUIPanelProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
D29DF2EE21ECEADF003B2FB9 /* MFFonts.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF14D21E693AD003B2FB9 /* MFFonts.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
D29DF2EE21ECEADF003B2FB9 /* MFFonts.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF14D21E693AD003B2FB9 /* MFFonts.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
D29DF2EF21ECEAE1003B2FB9 /* MFFonts.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF14C21E693AD003B2FB9 /* MFFonts.m */; };
|
D29DF2EF21ECEAE1003B2FB9 /* MFFonts.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF14C21E693AD003B2FB9 /* MFFonts.m */; };
|
||||||
D29DF31A21ECECC0003B2FB9 /* NHaasGroteskDSStd-45Lt.otf in Resources */ = {isa = PBXBuildFile; fileRef = D29DF31621ECECC0003B2FB9 /* NHaasGroteskDSStd-45Lt.otf */; };
|
|
||||||
D29DF31B21ECECC0003B2FB9 /* OCRAExtended.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D29DF31721ECECC0003B2FB9 /* OCRAExtended.ttf */; };
|
D29DF31B21ECECC0003B2FB9 /* OCRAExtended.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D29DF31721ECECC0003B2FB9 /* OCRAExtended.ttf */; };
|
||||||
D29DF31C21ECECC0003B2FB9 /* NHaasGroteskDSStd-75Bd.otf in Resources */ = {isa = PBXBuildFile; fileRef = D29DF31821ECECC0003B2FB9 /* NHaasGroteskDSStd-75Bd.otf */; };
|
|
||||||
D29DF31D21ECECC0003B2FB9 /* NHaasGroteskDSStd-55Rg.otf in Resources */ = {isa = PBXBuildFile; fileRef = D29DF31921ECECC0003B2FB9 /* NHaasGroteskDSStd-55Rg.otf */; };
|
|
||||||
D29DF32021ED0CBA003B2FB9 /* LabelView.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF31E21ED0CBA003B2FB9 /* LabelView.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
D29DF32021ED0CBA003B2FB9 /* LabelView.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF31E21ED0CBA003B2FB9 /* LabelView.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
D29DF32121ED0CBA003B2FB9 /* LabelView.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF31F21ED0CBA003B2FB9 /* LabelView.m */; };
|
D29DF32121ED0CBA003B2FB9 /* LabelView.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF31F21ED0CBA003B2FB9 /* LabelView.m */; };
|
||||||
D29DF32421ED0DA2003B2FB9 /* TextButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF32221ED0DA2003B2FB9 /* TextButtonView.m */; };
|
D29DF32421ED0DA2003B2FB9 /* TextButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF32221ED0DA2003B2FB9 /* TextButtonView.m */; };
|
||||||
@ -357,9 +367,10 @@
|
|||||||
0105618A224BBE7700E1557D /* FormValidator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormValidator.swift; sourceTree = "<group>"; };
|
0105618A224BBE7700E1557D /* FormValidator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormValidator.swift; sourceTree = "<group>"; };
|
||||||
0105618B224BBE7700E1557D /* FormValidator+TextFields.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FormValidator+TextFields.swift"; sourceTree = "<group>"; };
|
0105618B224BBE7700E1557D /* FormValidator+TextFields.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FormValidator+TextFields.swift"; sourceTree = "<group>"; };
|
||||||
0105618C224BBE7700E1557D /* FormValidator+FormParams.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FormValidator+FormParams.swift"; sourceTree = "<group>"; };
|
0105618C224BBE7700E1557D /* FormValidator+FormParams.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FormValidator+FormParams.swift"; sourceTree = "<group>"; };
|
||||||
0116A4E4228B19640094F3ED /* RadioButtonModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButtonModel.swift; sourceTree = "<group>"; };
|
0116A4E4228B19640094F3ED /* RadioButtonSelectionHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButtonSelectionHelper.swift; sourceTree = "<group>"; };
|
||||||
011B58EF23A2AA980085F53C /* ListItemModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListItemModelProtocol.swift; sourceTree = "<group>"; };
|
011B58EF23A2AA980085F53C /* ListItemModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListItemModelProtocol.swift; sourceTree = "<group>"; };
|
||||||
011B58F123A2AE2C0085F53C /* DropDownListItemModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropDownListItemModel.swift; sourceTree = "<group>"; };
|
011B58F123A2AE2C0085F53C /* DropDownListItemModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropDownListItemModel.swift; sourceTree = "<group>"; };
|
||||||
|
011D95AE2407266E000E3791 /* RadioButtonModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioButtonModel.swift; sourceTree = "<group>"; };
|
||||||
012A889B23889E8400FE3DA1 /* TemplateModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateModelProtocol.swift; sourceTree = "<group>"; };
|
012A889B23889E8400FE3DA1 /* TemplateModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateModelProtocol.swift; sourceTree = "<group>"; };
|
||||||
012A88AC238C418100FE3DA1 /* TemplateProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateProtocol.swift; sourceTree = "<group>"; };
|
012A88AC238C418100FE3DA1 /* TemplateProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateProtocol.swift; sourceTree = "<group>"; };
|
||||||
012A88AE238C626E00FE3DA1 /* CarouselModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselModel.swift; sourceTree = "<group>"; };
|
012A88AE238C626E00FE3DA1 /* CarouselModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselModel.swift; sourceTree = "<group>"; };
|
||||||
@ -430,6 +441,10 @@
|
|||||||
0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateDropdownEntryField.swift; sourceTree = "<group>"; };
|
0ABD136C237CAD1E0081388D /* DateDropdownEntryField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DateDropdownEntryField.swift; sourceTree = "<group>"; };
|
||||||
0ABD1370237DB0450081388D /* ItemDropdownEntryField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDropdownEntryField.swift; sourceTree = "<group>"; };
|
0ABD1370237DB0450081388D /* ItemDropdownEntryField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemDropdownEntryField.swift; sourceTree = "<group>"; };
|
||||||
0AE14F63238315D2005417F8 /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = "<group>"; };
|
0AE14F63238315D2005417F8 /* TextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextField.swift; sourceTree = "<group>"; };
|
||||||
|
0AE98BAE23FEF956004C5109 /* ExternalLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalLink.swift; sourceTree = "<group>"; };
|
||||||
|
0AE98BB223FF0934004C5109 /* ExternalLinkModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalLinkModel.swift; sourceTree = "<group>"; };
|
||||||
|
0AE98BB423FF18D2004C5109 /* Arrow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Arrow.swift; sourceTree = "<group>"; };
|
||||||
|
0AE98BB623FF18E9004C5109 /* ArrowModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArrowModel.swift; sourceTree = "<group>"; };
|
||||||
31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxLabelModel.swift; sourceTree = "<group>"; };
|
31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxLabelModel.swift; sourceTree = "<group>"; };
|
||||||
31BE15CA23D8924C00452370 /* CheckboxModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxModel.swift; sourceTree = "<group>"; };
|
31BE15CA23D8924C00452370 /* CheckboxModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheckboxModel.swift; sourceTree = "<group>"; };
|
||||||
522679BF23FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListLeftVariableCheckboxAllTextAndLinks.swift; sourceTree = "<group>"; };
|
522679BF23FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListLeftVariableCheckboxAllTextAndLinks.swift; sourceTree = "<group>"; };
|
||||||
@ -439,6 +454,8 @@
|
|||||||
5248BFEB23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListThreeColumnPlanDataDividerModel.swift; sourceTree = "<group>"; };
|
5248BFEB23F12E350059236A /* ListThreeColumnPlanDataDividerModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListThreeColumnPlanDataDividerModel.swift; sourceTree = "<group>"; };
|
||||||
525019E42406852100EED91C /* ListFourColumnDataUsageDividerModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListFourColumnDataUsageDividerModel.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>"; };
|
525019E62406853600EED91C /* ListFourColumnDataUsageDivider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListFourColumnDataUsageDivider.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>"; };
|
||||||
8D24041023E7FB9E009E23BE /* ListLeftVariableIconWithRightCaret.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListLeftVariableIconWithRightCaret.swift; sourceTree = "<group>"; };
|
8D24041023E7FB9E009E23BE /* ListLeftVariableIconWithRightCaret.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListLeftVariableIconWithRightCaret.swift; sourceTree = "<group>"; };
|
||||||
8D24041423E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListLeftVariableIconWithRightCaretModel.swift; sourceTree = "<group>"; };
|
8D24041423E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListLeftVariableIconWithRightCaretModel.swift; sourceTree = "<group>"; };
|
||||||
8D448E5424050A46006211BB /* ListOneColumnFullWidthTextAllTextAndLinksModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListOneColumnFullWidthTextAllTextAndLinksModel.swift; sourceTree = "<group>"; };
|
8D448E5424050A46006211BB /* ListOneColumnFullWidthTextAllTextAndLinksModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListOneColumnFullWidthTextAllTextAndLinksModel.swift; sourceTree = "<group>"; };
|
||||||
@ -452,6 +469,8 @@
|
|||||||
944589202385D6E900DE9FD4 /* DashLineModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashLineModel.swift; sourceTree = "<group>"; };
|
944589202385D6E900DE9FD4 /* DashLineModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashLineModel.swift; sourceTree = "<group>"; };
|
||||||
944589222385DA9500DE9FD4 /* ImageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageViewModel.swift; sourceTree = "<group>"; };
|
944589222385DA9500DE9FD4 /* ImageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageViewModel.swift; sourceTree = "<group>"; };
|
||||||
9455B19B234F8A0400A574DB /* MVMAnimationFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MVMAnimationFramework.framework; path = ../SharedFrameworks/MVMAnimationFramework.framework; sourceTree = "<group>"; };
|
9455B19B234F8A0400A574DB /* MVMAnimationFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MVMAnimationFramework.framework; path = ../SharedFrameworks/MVMAnimationFramework.framework; sourceTree = "<group>"; };
|
||||||
|
9458C3152406C8FD00930963 /* UIFont+FontWrapping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIFont+FontWrapping.h"; sourceTree = "<group>"; };
|
||||||
|
9458C3162406C8FD00930963 /* UIFont+FontWrapping.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIFont+FontWrapping.m"; sourceTree = "<group>"; };
|
||||||
946EE1B9237B66D80036751F /* MoleculeModelHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoleculeModelHelper.swift; sourceTree = "<group>"; };
|
946EE1B9237B66D80036751F /* MoleculeModelHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoleculeModelHelper.swift; sourceTree = "<group>"; };
|
||||||
948DB67D2326DCD90011F916 /* MultiProgress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiProgress.swift; sourceTree = "<group>"; };
|
948DB67D2326DCD90011F916 /* MultiProgress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiProgress.swift; sourceTree = "<group>"; };
|
||||||
94AF4A3C23E9D13900676048 /* MFCaretButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MFCaretButton.h; sourceTree = "<group>"; };
|
94AF4A3C23E9D13900676048 /* MFCaretButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MFCaretButton.h; sourceTree = "<group>"; };
|
||||||
@ -465,6 +484,10 @@
|
|||||||
94C2D9A623872DA90006CF46 /* LabelAttributeColorModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeColorModel.swift; sourceTree = "<group>"; };
|
94C2D9A623872DA90006CF46 /* LabelAttributeColorModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeColorModel.swift; sourceTree = "<group>"; };
|
||||||
94C2D9A823872E5E0006CF46 /* LabelAttributeImageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeImageModel.swift; sourceTree = "<group>"; };
|
94C2D9A823872E5E0006CF46 /* LabelAttributeImageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeImageModel.swift; sourceTree = "<group>"; };
|
||||||
94C2D9AA23872EB50006CF46 /* LabelAttributeActionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeActionModel.swift; sourceTree = "<group>"; };
|
94C2D9AA23872EB50006CF46 /* LabelAttributeActionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeActionModel.swift; sourceTree = "<group>"; };
|
||||||
|
94CA227824058533002D6750 /* VerizonNHGeTX-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "VerizonNHGeTX-Bold.otf"; sourceTree = "<group>"; };
|
||||||
|
94CA227924058533002D6750 /* VerizonNHGeDS-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "VerizonNHGeDS-Regular.otf"; sourceTree = "<group>"; };
|
||||||
|
94CA227A24058533002D6750 /* VerizonNHGeDS-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "VerizonNHGeDS-Bold.otf"; sourceTree = "<group>"; };
|
||||||
|
94CA227B24058533002D6750 /* VerizonNHGeTX-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "VerizonNHGeTX-Regular.otf"; sourceTree = "<group>"; };
|
||||||
94F217B423E0BF6100A47C06 /* PrimaryButtonView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PrimaryButtonView.h; sourceTree = "<group>"; };
|
94F217B423E0BF6100A47C06 /* PrimaryButtonView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PrimaryButtonView.h; sourceTree = "<group>"; };
|
||||||
94F217B523E0BF6100A47C06 /* PrimaryButtonView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PrimaryButtonView.m; sourceTree = "<group>"; };
|
94F217B523E0BF6100A47C06 /* PrimaryButtonView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PrimaryButtonView.m; sourceTree = "<group>"; };
|
||||||
94FB966023D797DA003D482B /* MFTextButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFTextButton.h; sourceTree = "<group>"; };
|
94FB966023D797DA003D482B /* MFTextButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFTextButton.h; sourceTree = "<group>"; };
|
||||||
@ -639,10 +662,7 @@
|
|||||||
D29DF2CC21E7C104003B2FB9 /* MFLoadingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFLoadingViewController.h; sourceTree = "<group>"; };
|
D29DF2CC21E7C104003B2FB9 /* MFLoadingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFLoadingViewController.h; sourceTree = "<group>"; };
|
||||||
D29DF2CD21E7C104003B2FB9 /* MFLoadingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFLoadingViewController.m; sourceTree = "<group>"; };
|
D29DF2CD21E7C104003B2FB9 /* MFLoadingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFLoadingViewController.m; sourceTree = "<group>"; };
|
||||||
D29DF2E021E9240B003B2FB9 /* MVMCoreUIPanelProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIPanelProtocol.h; sourceTree = "<group>"; };
|
D29DF2E021E9240B003B2FB9 /* MVMCoreUIPanelProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIPanelProtocol.h; sourceTree = "<group>"; };
|
||||||
D29DF31621ECECC0003B2FB9 /* NHaasGroteskDSStd-45Lt.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NHaasGroteskDSStd-45Lt.otf"; sourceTree = "<group>"; };
|
|
||||||
D29DF31721ECECC0003B2FB9 /* OCRAExtended.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = OCRAExtended.ttf; sourceTree = "<group>"; };
|
D29DF31721ECECC0003B2FB9 /* OCRAExtended.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = OCRAExtended.ttf; sourceTree = "<group>"; };
|
||||||
D29DF31821ECECC0003B2FB9 /* NHaasGroteskDSStd-75Bd.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NHaasGroteskDSStd-75Bd.otf"; sourceTree = "<group>"; };
|
|
||||||
D29DF31921ECECC0003B2FB9 /* NHaasGroteskDSStd-55Rg.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "NHaasGroteskDSStd-55Rg.otf"; sourceTree = "<group>"; };
|
|
||||||
D29DF31E21ED0CBA003B2FB9 /* LabelView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelView.h; sourceTree = "<group>"; };
|
D29DF31E21ED0CBA003B2FB9 /* LabelView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelView.h; sourceTree = "<group>"; };
|
||||||
D29DF31F21ED0CBA003B2FB9 /* LabelView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelView.m; sourceTree = "<group>"; };
|
D29DF31F21ED0CBA003B2FB9 /* LabelView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelView.m; sourceTree = "<group>"; };
|
||||||
D29DF32221ED0DA2003B2FB9 /* TextButtonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TextButtonView.m; sourceTree = "<group>"; };
|
D29DF32221ED0DA2003B2FB9 /* TextButtonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TextButtonView.m; sourceTree = "<group>"; };
|
||||||
@ -776,6 +796,17 @@
|
|||||||
path = Views;
|
path = Views;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
0AE98BAD23FEF92B004C5109 /* Link */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
D28A838823CCCFCB00DFE4FC /* LinkModel.swift */,
|
||||||
|
C07065C32395677300FBF997 /* Link.swift */,
|
||||||
|
0AE98BB223FF0934004C5109 /* ExternalLinkModel.swift */,
|
||||||
|
0AE98BAE23FEF956004C5109 /* ExternalLink.swift */,
|
||||||
|
);
|
||||||
|
path = Link;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
52267A0523FFE0A900906CBA /* OneColumn */ = {
|
52267A0523FFE0A900906CBA /* OneColumn */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -1017,6 +1048,7 @@
|
|||||||
D22B38EA23F4E08B00490EF6 /* List */ = {
|
D22B38EA23F4E08B00490EF6 /* List */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
52267A0523FFE0A900906CBA /* OneColumn */,
|
||||||
AA4FC2A323F4F69600E251DB /* RightVariable */,
|
AA4FC2A323F4F69600E251DB /* RightVariable */,
|
||||||
D22B38EB23F4E0AE00490EF6 /* LeftVariable */,
|
D22B38EB23F4E0AE00490EF6 /* LeftVariable */,
|
||||||
);
|
);
|
||||||
@ -1026,6 +1058,8 @@
|
|||||||
D22B38EB23F4E0AE00490EF6 /* LeftVariable */ = {
|
D22B38EB23F4E0AE00490EF6 /* LeftVariable */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
52B201D124081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethodModel.swift */,
|
||||||
|
52B201D024081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethod.swift */,
|
||||||
522679C023FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinksModel.swift */,
|
522679C023FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinksModel.swift */,
|
||||||
522679BF23FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift */,
|
522679BF23FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift */,
|
||||||
8D24041423E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift */,
|
8D24041423E7FC0B009E23BE /* ListLeftVariableIconWithRightCaretModel.swift */,
|
||||||
@ -1165,7 +1199,7 @@
|
|||||||
D2A514662213885800345BFB /* MoleculeHeaderView.swift */,
|
D2A514662213885800345BFB /* MoleculeHeaderView.swift */,
|
||||||
012A88EB238F084D00FE3DA1 /* FooterModel.swift */,
|
012A88EB238F084D00FE3DA1 /* FooterModel.swift */,
|
||||||
D274CA322236A78900B01B62 /* FooterView.swift */,
|
D274CA322236A78900B01B62 /* FooterView.swift */,
|
||||||
0116A4E4228B19640094F3ED /* RadioButtonModel.swift */,
|
0116A4E4228B19640094F3ED /* RadioButtonSelectionHelper.swift */,
|
||||||
012A88C5238DA34000FE3DA1 /* ModuleMoleculeModel.swift */,
|
012A88C5238DA34000FE3DA1 /* ModuleMoleculeModel.swift */,
|
||||||
D29B770F22C281F400D6ACE0 /* ModuleMolecule.swift */,
|
D29B770F22C281F400D6ACE0 /* ModuleMolecule.swift */,
|
||||||
D28A838423CCCA8900DFE4FC /* ScrollerModel.swift */,
|
D28A838423CCCA8900DFE4FC /* ScrollerModel.swift */,
|
||||||
@ -1260,6 +1294,8 @@
|
|||||||
D29DF28121E7AB23003B2FB9 /* MVMCoreUICommonViewsUtility.m */,
|
D29DF28121E7AB23003B2FB9 /* MVMCoreUICommonViewsUtility.m */,
|
||||||
D29DF14D21E693AD003B2FB9 /* MFFonts.h */,
|
D29DF14D21E693AD003B2FB9 /* MFFonts.h */,
|
||||||
D29DF14C21E693AD003B2FB9 /* MFFonts.m */,
|
D29DF14C21E693AD003B2FB9 /* MFFonts.m */,
|
||||||
|
9458C3152406C8FD00930963 /* UIFont+FontWrapping.h */,
|
||||||
|
9458C3162406C8FD00930963 /* UIFont+FontWrapping.m */,
|
||||||
D29DF29F21E7AF4E003B2FB9 /* MVMCoreUIUtility.h */,
|
D29DF29F21E7AF4E003B2FB9 /* MVMCoreUIUtility.h */,
|
||||||
D29DF2A021E7AF4E003B2FB9 /* MVMCoreUIUtility.m */,
|
D29DF2A021E7AF4E003B2FB9 /* MVMCoreUIUtility.m */,
|
||||||
D29DF2A721E7B2F9003B2FB9 /* MVMCoreUIConstants.h */,
|
D29DF2A721E7B2F9003B2FB9 /* MVMCoreUIConstants.h */,
|
||||||
@ -1285,12 +1321,11 @@
|
|||||||
D29DF16821E69E1F003B2FB9 /* Buttons */ = {
|
D29DF16821E69E1F003B2FB9 /* Buttons */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
0AE98BAD23FEF92B004C5109 /* Link */,
|
||||||
01F2A03123A4498200D954D8 /* CaretLinkModel.swift */,
|
01F2A03123A4498200D954D8 /* CaretLinkModel.swift */,
|
||||||
DBC4391A224421A0001AB423 /* CaretLink.swift */,
|
DBC4391A224421A0001AB423 /* CaretLink.swift */,
|
||||||
D28A838A23CCDA6B00DFE4FC /* ButtonModel.swift */,
|
D28A838A23CCDA6B00DFE4FC /* ButtonModel.swift */,
|
||||||
D2E2A99E23E07F8A000B42E6 /* PillButton.swift */,
|
D2E2A99E23E07F8A000B42E6 /* PillButton.swift */,
|
||||||
D28A838823CCCFCB00DFE4FC /* LinkModel.swift */,
|
|
||||||
C07065C32395677300FBF997 /* Link.swift */,
|
|
||||||
D28A838C23CCDCC200DFE4FC /* PrimaryButton+MoleculeProtocolExtension.swift */,
|
D28A838C23CCDCC200DFE4FC /* PrimaryButton+MoleculeProtocolExtension.swift */,
|
||||||
D28A837623C79FC600DFE4FC /* MFCustomButton+ActionModel.swift */,
|
D28A837623C79FC600DFE4FC /* MFCustomButton+ActionModel.swift */,
|
||||||
);
|
);
|
||||||
@ -1321,6 +1356,7 @@
|
|||||||
0A7BAFA0232BE61800FB8E22 /* Checkbox.swift */,
|
0A7BAFA0232BE61800FB8E22 /* Checkbox.swift */,
|
||||||
31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */,
|
31BE15C923D8924C00452370 /* CheckboxLabelModel.swift */,
|
||||||
0A7BAFA2232BE63400FB8E22 /* CheckboxLabel.swift */,
|
0A7BAFA2232BE63400FB8E22 /* CheckboxLabel.swift */,
|
||||||
|
011D95AE2407266E000E3791 /* RadioButtonModel.swift */,
|
||||||
01004F2F22721C3800991ECC /* RadioButton.swift */,
|
01004F2F22721C3800991ECC /* RadioButton.swift */,
|
||||||
D28A838223CCBD3F00DFE4FC /* CircleProgressModel.swift */,
|
D28A838223CCBD3F00DFE4FC /* CircleProgressModel.swift */,
|
||||||
943784F3236B77BB006A1E82 /* GraphView.swift */,
|
943784F3236B77BB006A1E82 /* GraphView.swift */,
|
||||||
@ -1329,6 +1365,8 @@
|
|||||||
0AA33B392398524F0067DD0F /* Toggle.swift */,
|
0AA33B392398524F0067DD0F /* Toggle.swift */,
|
||||||
D260105423CEA7DC00764D80 /* MVMCoreUISwitch+Model.swift */,
|
D260105423CEA7DC00764D80 /* MVMCoreUISwitch+Model.swift */,
|
||||||
012CA99D2385A2D3003F810F /* MFView+ModelExtension.swift */,
|
012CA99D2385A2D3003F810F /* MFView+ModelExtension.swift */,
|
||||||
|
0AE98BB623FF18E9004C5109 /* ArrowModel.swift */,
|
||||||
|
0AE98BB423FF18D2004C5109 /* Arrow.swift */,
|
||||||
);
|
);
|
||||||
path = Views;
|
path = Views;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -1438,10 +1476,11 @@
|
|||||||
D29DF31521ECECC0003B2FB9 /* Fonts */ = {
|
D29DF31521ECECC0003B2FB9 /* Fonts */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
D29DF31621ECECC0003B2FB9 /* NHaasGroteskDSStd-45Lt.otf */,
|
94CA227A24058533002D6750 /* VerizonNHGeDS-Bold.otf */,
|
||||||
|
94CA227924058533002D6750 /* VerizonNHGeDS-Regular.otf */,
|
||||||
|
94CA227824058533002D6750 /* VerizonNHGeTX-Bold.otf */,
|
||||||
|
94CA227B24058533002D6750 /* VerizonNHGeTX-Regular.otf */,
|
||||||
D29DF31721ECECC0003B2FB9 /* OCRAExtended.ttf */,
|
D29DF31721ECECC0003B2FB9 /* OCRAExtended.ttf */,
|
||||||
D29DF31821ECECC0003B2FB9 /* NHaasGroteskDSStd-75Bd.otf */,
|
|
||||||
D29DF31921ECECC0003B2FB9 /* NHaasGroteskDSStd-55Rg.otf */,
|
|
||||||
);
|
);
|
||||||
path = Fonts;
|
path = Fonts;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -1522,6 +1561,7 @@
|
|||||||
D29770F421F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsViewController.h in Headers */,
|
D29770F421F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsViewController.h in Headers */,
|
||||||
D29DF15421E69760003B2FB9 /* MVMCoreUIPanelButtonProtocol.h in Headers */,
|
D29DF15421E69760003B2FB9 /* MVMCoreUIPanelButtonProtocol.h in Headers */,
|
||||||
D2A514582211C53C00345BFB /* MVMCoreUIMoleculeMappingObject.h in Headers */,
|
D2A514582211C53C00345BFB /* MVMCoreUIMoleculeMappingObject.h in Headers */,
|
||||||
|
9458C3172406C8FD00930963 /* UIFont+FontWrapping.h in Headers */,
|
||||||
D29DF0D121E404D4003B2FB9 /* MVMCoreUI.h in Headers */,
|
D29DF0D121E404D4003B2FB9 /* MVMCoreUI.h in Headers */,
|
||||||
D29DF29A21E7ADB8003B2FB9 /* MFProgrammaticTableViewController.h in Headers */,
|
D29DF29A21E7ADB8003B2FB9 /* MFProgrammaticTableViewController.h in Headers */,
|
||||||
D29DF11521E6805F003B2FB9 /* UIColor+MFConvenience.h in Headers */,
|
D29DF11521E6805F003B2FB9 /* UIColor+MFConvenience.h in Headers */,
|
||||||
@ -1641,14 +1681,15 @@
|
|||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
94CA227F24058534002D6750 /* VerizonNHGeTX-Regular.otf in Resources */,
|
||||||
D29DF2AF21E7B3A4003B2FB9 /* MFTextView.xib in Resources */,
|
D29DF2AF21E7B3A4003B2FB9 /* MFTextView.xib in Resources */,
|
||||||
D29DF31C21ECECC0003B2FB9 /* NHaasGroteskDSStd-75Bd.otf in Resources */,
|
|
||||||
D29DF31D21ECECC0003B2FB9 /* NHaasGroteskDSStd-55Rg.otf in Resources */,
|
|
||||||
0A21DB8E235E06EF00C160A2 /* MFDigitTextField.xib in Resources */,
|
0A21DB8E235E06EF00C160A2 /* MFDigitTextField.xib in Resources */,
|
||||||
|
94CA227C24058534002D6750 /* VerizonNHGeTX-Bold.otf in Resources */,
|
||||||
D29DF32C21EE8736003B2FB9 /* Localizable.strings in Resources */,
|
D29DF32C21EE8736003B2FB9 /* Localizable.strings in Resources */,
|
||||||
0A21DB86235E06EF00C160A2 /* MFTextField.xib in Resources */,
|
0A21DB86235E06EF00C160A2 /* MFTextField.xib in Resources */,
|
||||||
D29DF31A21ECECC0003B2FB9 /* NHaasGroteskDSStd-45Lt.otf in Resources */,
|
94CA227D24058534002D6750 /* VerizonNHGeDS-Regular.otf in Resources */,
|
||||||
D29DF32E21EE8C3D003B2FB9 /* Media.xcassets in Resources */,
|
D29DF32E21EE8C3D003B2FB9 /* Media.xcassets in Resources */,
|
||||||
|
94CA227E24058534002D6750 /* VerizonNHGeDS-Bold.otf in Resources */,
|
||||||
D29DF31B21ECECC0003B2FB9 /* OCRAExtended.ttf in Resources */,
|
D29DF31B21ECECC0003B2FB9 /* OCRAExtended.ttf in Resources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -1678,7 +1719,7 @@
|
|||||||
D2FB151D23A40F1500C20E10 /* MoleculeStackItem.swift in Sources */,
|
D2FB151D23A40F1500C20E10 /* MoleculeStackItem.swift in Sources */,
|
||||||
AA11A41F23F15D3100D7962F /* ListRightVariablePayments.swift in Sources */,
|
AA11A41F23F15D3100D7962F /* ListRightVariablePayments.swift in Sources */,
|
||||||
D29DF29621E7ADB8003B2FB9 /* StackableViewController.m in Sources */,
|
D29DF29621E7ADB8003B2FB9 /* StackableViewController.m in Sources */,
|
||||||
0116A4E5228B19640094F3ED /* RadioButtonModel.swift in Sources */,
|
0116A4E5228B19640094F3ED /* RadioButtonSelectionHelper.swift in Sources */,
|
||||||
017BEB48236230DB0024EF95 /* MoleculeViewProtocol.swift in Sources */,
|
017BEB48236230DB0024EF95 /* MoleculeViewProtocol.swift in Sources */,
|
||||||
D2E1FADB2260D3D200AEFD8C /* MVMCoreUIDelegateObject.swift in Sources */,
|
D2E1FADB2260D3D200AEFD8C /* MVMCoreUIDelegateObject.swift in Sources */,
|
||||||
D27CD40E2322EEAF00C1DC07 /* TabsTableViewCell.swift in Sources */,
|
D27CD40E2322EEAF00C1DC07 /* TabsTableViewCell.swift in Sources */,
|
||||||
@ -1698,6 +1739,7 @@
|
|||||||
DBC4392122491730001AB423 /* LabelWithInternalButton.swift in Sources */,
|
DBC4392122491730001AB423 /* LabelWithInternalButton.swift in Sources */,
|
||||||
D224798C231450C8003FCCF9 /* HeadlineBodyToggle.swift in Sources */,
|
D224798C231450C8003FCCF9 /* HeadlineBodyToggle.swift in Sources */,
|
||||||
017BEB442362192F0024EF95 /* MVMCoreUIMoleculeMappingObject+ModelExtension.swift in Sources */,
|
017BEB442362192F0024EF95 /* MVMCoreUIMoleculeMappingObject+ModelExtension.swift in Sources */,
|
||||||
|
9458C3182406C8FD00930963 /* UIFont+FontWrapping.m in Sources */,
|
||||||
522679C123FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift in Sources */,
|
522679C123FE886900906CBA /* ListLeftVariableCheckboxAllTextAndLinks.swift in Sources */,
|
||||||
9445890C2385BCE300DE9FD4 /* ProgressBarModel.swift in Sources */,
|
9445890C2385BCE300DE9FD4 /* ProgressBarModel.swift in Sources */,
|
||||||
9445891F2385D2E900DE9FD4 /* CaretViewModel.swift in Sources */,
|
9445891F2385D2E900DE9FD4 /* CaretViewModel.swift in Sources */,
|
||||||
@ -1727,9 +1769,11 @@
|
|||||||
C695A69623C990BC00BFB94E /* DoughnutChart.swift in Sources */,
|
C695A69623C990BC00BFB94E /* DoughnutChart.swift in Sources */,
|
||||||
014AA72D23C5059B006F3E93 /* StackPageTemplateModel.swift in Sources */,
|
014AA72D23C5059B006F3E93 /* StackPageTemplateModel.swift in Sources */,
|
||||||
D260106123D0C02A00764D80 /* StackItemModelProtocol.swift in Sources */,
|
D260106123D0C02A00764D80 /* StackItemModelProtocol.swift in Sources */,
|
||||||
|
0AE98BAF23FEF956004C5109 /* ExternalLink.swift in Sources */,
|
||||||
012A88C4238D86E600FE3DA1 /* CarouselItemModelProtocol.swift in Sources */,
|
012A88C4238D86E600FE3DA1 /* CarouselItemModelProtocol.swift in Sources */,
|
||||||
D2E2A9A123E095AB000B42E6 /* ButtonModelProtocol.swift in Sources */,
|
D2E2A9A123E095AB000B42E6 /* ButtonModelProtocol.swift in Sources */,
|
||||||
94C2D9AB23872EB50006CF46 /* LabelAttributeActionModel.swift in Sources */,
|
94C2D9AB23872EB50006CF46 /* LabelAttributeActionModel.swift in Sources */,
|
||||||
|
52B201D324081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethodModel.swift in Sources */,
|
||||||
D2E2A99A23D8D6B4000B42E6 /* HeadlineBodyButtonModel.swift in Sources */,
|
D2E2A99A23D8D6B4000B42E6 /* HeadlineBodyButtonModel.swift in Sources */,
|
||||||
014AA73123C5059B006F3E93 /* ListPageTemplateModel.swift in Sources */,
|
014AA73123C5059B006F3E93 /* ListPageTemplateModel.swift in Sources */,
|
||||||
017BEB4023620A230024EF95 /* TextFieldModel.swift in Sources */,
|
017BEB4023620A230024EF95 /* TextFieldModel.swift in Sources */,
|
||||||
@ -1801,6 +1845,7 @@
|
|||||||
D29DF17A21E69E1F003B2FB9 /* MFCustomButton.m in Sources */,
|
D29DF17A21E69E1F003B2FB9 /* MFCustomButton.m in Sources */,
|
||||||
017BEB7B236763000024EF95 /* LineModel.swift in Sources */,
|
017BEB7B236763000024EF95 /* LineModel.swift in Sources */,
|
||||||
94C2D9A523872C350006CF46 /* LabelAttributeFontModel.swift in Sources */,
|
94C2D9A523872C350006CF46 /* LabelAttributeFontModel.swift in Sources */,
|
||||||
|
011D95AF2407266E000E3791 /* RadioButtonModel.swift in Sources */,
|
||||||
017BEB7F23676E870024EF95 /* MoleculeObjectMapping.swift in Sources */,
|
017BEB7F23676E870024EF95 /* MoleculeObjectMapping.swift in Sources */,
|
||||||
D274CA332236A78900B01B62 /* FooterView.swift in Sources */,
|
D274CA332236A78900B01B62 /* FooterView.swift in Sources */,
|
||||||
D29DF2BF21E7BEA4003B2FB9 /* MVMCoreUITabBarPageControlViewController.m in Sources */,
|
D29DF2BF21E7BEA4003B2FB9 /* MVMCoreUITabBarPageControlViewController.m in Sources */,
|
||||||
@ -1834,11 +1879,13 @@
|
|||||||
8D24041123E7FB9E009E23BE /* ListLeftVariableIconWithRightCaret.swift in Sources */,
|
8D24041123E7FB9E009E23BE /* ListLeftVariableIconWithRightCaret.swift in Sources */,
|
||||||
D2E1FAE12268E81D00AEFD8C /* MoleculeListTemplate.swift in Sources */,
|
D2E1FAE12268E81D00AEFD8C /* MoleculeListTemplate.swift in Sources */,
|
||||||
525019E72406853600EED91C /* ListFourColumnDataUsageDivider.swift in Sources */,
|
525019E72406853600EED91C /* ListFourColumnDataUsageDivider.swift in Sources */,
|
||||||
|
0AE98BB323FF0934004C5109 /* ExternalLinkModel.swift in Sources */,
|
||||||
DB06250B2293456500B72DD3 /* LeftRightLabelView.swift in Sources */,
|
DB06250B2293456500B72DD3 /* LeftRightLabelView.swift in Sources */,
|
||||||
0A21DB89235E06EF00C160A2 /* MFMdnTextField.m in Sources */,
|
0A21DB89235E06EF00C160A2 /* MFMdnTextField.m in Sources */,
|
||||||
D224798A2314445E003FCCF9 /* LabelToggle.swift in Sources */,
|
D224798A2314445E003FCCF9 /* LabelToggle.swift in Sources */,
|
||||||
D22D1F47220496A30077CEC0 /* MVMCoreUISwitch.m in Sources */,
|
D22D1F47220496A30077CEC0 /* MVMCoreUISwitch.m in Sources */,
|
||||||
C695A67F23C9830600BFB94E /* UnOrderedListModel.swift in Sources */,
|
C695A67F23C9830600BFB94E /* UnOrderedListModel.swift in Sources */,
|
||||||
|
0AE98BB523FF18D2004C5109 /* Arrow.swift in Sources */,
|
||||||
017BEB4223620AD20024EF95 /* FormModelProtocol.swift in Sources */,
|
017BEB4223620AD20024EF95 /* FormModelProtocol.swift in Sources */,
|
||||||
D2D90B442404789000DD6EC9 /* MoleculeContainerProtocol.swift in Sources */,
|
D2D90B442404789000DD6EC9 /* MoleculeContainerProtocol.swift in Sources */,
|
||||||
012A88DB238ED45900FE3DA1 /* CarouselModel.swift in Sources */,
|
012A88DB238ED45900FE3DA1 /* CarouselModel.swift in Sources */,
|
||||||
@ -1863,12 +1910,14 @@
|
|||||||
01EB369323609801006832FA /* HeaderModel.swift in Sources */,
|
01EB369323609801006832FA /* HeaderModel.swift in Sources */,
|
||||||
D2E1FADF2268B8E700AEFD8C /* ThreeLayerTableViewController.swift in Sources */,
|
D2E1FADF2268B8E700AEFD8C /* ThreeLayerTableViewController.swift in Sources */,
|
||||||
0A21DB83235DFBC500C160A2 /* MdnEntryField.swift in Sources */,
|
0A21DB83235DFBC500C160A2 /* MdnEntryField.swift in Sources */,
|
||||||
|
0AE98BB723FF18E9004C5109 /* ArrowModel.swift in Sources */,
|
||||||
D28A837D23CCA86A00DFE4FC /* TabsListItemModel.swift in Sources */,
|
D28A837D23CCA86A00DFE4FC /* TabsListItemModel.swift in Sources */,
|
||||||
012A88C6238DA34000FE3DA1 /* ModuleMoleculeModel.swift in Sources */,
|
012A88C6238DA34000FE3DA1 /* ModuleMoleculeModel.swift in Sources */,
|
||||||
94C2D9A123872BCC0006CF46 /* LabelAttributeUnderlineModel.swift in Sources */,
|
94C2D9A123872BCC0006CF46 /* LabelAttributeUnderlineModel.swift in Sources */,
|
||||||
D20A9A5E2243D3E300ADE781 /* TwoButtonView.swift in Sources */,
|
D20A9A5E2243D3E300ADE781 /* TwoButtonView.swift in Sources */,
|
||||||
D2B1E3E522F37D6A0065F95C /* ImageHeadlineBody.swift in Sources */,
|
D2B1E3E522F37D6A0065F95C /* ImageHeadlineBody.swift in Sources */,
|
||||||
0A21DB94235E24ED00C160A2 /* DigitEntryField.swift in Sources */,
|
0A21DB94235E24ED00C160A2 /* DigitEntryField.swift in Sources */,
|
||||||
|
52B201D224081CFB00D2011E /* ListLeftVariableRadioButtonAndPaymentMethod.swift in Sources */,
|
||||||
D26C5A6B23F4A40D007AEECE /* ListItemModel.swift in Sources */,
|
D26C5A6B23F4A40D007AEECE /* ListItemModel.swift in Sources */,
|
||||||
0A21DB8D235E06EF00C160A2 /* MFDigitTextField.m in Sources */,
|
0A21DB8D235E06EF00C160A2 /* MFDigitTextField.m in Sources */,
|
||||||
94AF4A4323E9D19E00676048 /* MFCaretView.m in Sources */,
|
94AF4A4323E9D19E00676048 /* MFCaretView.m in Sources */,
|
||||||
|
|||||||
@ -125,7 +125,7 @@ open class CaretLink: Button, MVMCoreUIViewConstrainingProtocol {
|
|||||||
setTitleColor(disabledColor, for: .disabled)
|
setTitleColor(disabledColor, for: .disabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
guard let caretLinkModel = model as? CaretLinkModel else { return }
|
guard let caretLinkModel = model as? CaretLinkModel else { return }
|
||||||
if let color = caretLinkModel.backgroundColor {
|
if let color = caretLinkModel.backgroundColor {
|
||||||
backgroundColor = color.uiColor
|
backgroundColor = color.uiColor
|
||||||
@ -147,7 +147,7 @@ open class CaretLink: Button, MVMCoreUIViewConstrainingProtocol {
|
|||||||
return .leading
|
return .leading
|
||||||
}
|
}
|
||||||
|
|
||||||
open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 10.5
|
return 10.5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
57
MVMCoreUI/Atoms/Buttons/Link/ExternalLink.swift
Normal file
57
MVMCoreUI/Atoms/Buttons/Link/ExternalLink.swift
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
//
|
||||||
|
// ExternalLink.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Kevin Christiano on 2/20/20.
|
||||||
|
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
|
||||||
|
open class ExternalLink: Link {
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Properties
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
public var exportImageView: UIImageView?
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - ModelMoleculeViewProtocol
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
|
guard let model = model as? ExternalLinkModel else { return }
|
||||||
|
|
||||||
|
exportImageView?.tintColor = model.textColor.uiColor
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - MVMCoreViewProtocol
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
open override func setupView() {
|
||||||
|
super.setupView()
|
||||||
|
|
||||||
|
let image = MVMCoreUIUtility.imageNamed("externalLink")
|
||||||
|
exportImageView = UIImageView(image: image?.withRenderingMode(.alwaysTemplate))
|
||||||
|
|
||||||
|
guard let exportIcon = exportImageView else { return }
|
||||||
|
|
||||||
|
exportIcon.contentMode = .scaleAspectFit
|
||||||
|
exportIcon.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
|
||||||
|
addSubview(exportIcon)
|
||||||
|
trailingAnchor.constraint(greaterThanOrEqualTo: exportIcon.trailingAnchor).isActive = true
|
||||||
|
|
||||||
|
if let titleLabel = titleLabel {
|
||||||
|
let dimension = round(0.6 * titleLabel.font.pointSize)
|
||||||
|
exportIcon.heightAnchor.constraint(equalToConstant: dimension).isActive = true
|
||||||
|
exportIcon.widthAnchor.constraint(equalToConstant: dimension).isActive = true
|
||||||
|
exportIcon.leadingAnchor.constraint(equalTo: titleLabel.trailingAnchor, constant: PaddingOne).isActive = true
|
||||||
|
exportIcon.bottomAnchor.constraint(equalTo: titleLabel.lastBaselineAnchor).isActive = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
16
MVMCoreUI/Atoms/Buttons/Link/ExternalLinkModel.swift
Normal file
16
MVMCoreUI/Atoms/Buttons/Link/ExternalLinkModel.swift
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// ExternalLinkModel.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Kevin Christiano on 2/20/20.
|
||||||
|
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
open class ExternalLinkModel: LinkModel {
|
||||||
|
|
||||||
|
override open class var identifier: String {
|
||||||
|
return "externalLink"
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -40,9 +40,10 @@ import UIKit
|
|||||||
// MARK: - ModelMoleculeViewProtocol
|
// MARK: - ModelMoleculeViewProtocol
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? LinkModel else { return }
|
guard let model = model as? LinkModel else { return }
|
||||||
|
|
||||||
setTitle(model.title, for: .normal)
|
setTitle(model.title, for: .normal)
|
||||||
setTitleColor(model.textColor.uiColor, for: .normal)
|
setTitleColor(model.textColor.uiColor, for: .normal)
|
||||||
setTitleColor(model.disabledColor.uiColor, for: .disabled)
|
setTitleColor(model.disabledColor.uiColor, for: .disabled)
|
||||||
@ -50,7 +51,7 @@ import UIKit
|
|||||||
set(with: model.action, delegateObject: delegateObject, additionalData: additionalData)
|
set(with: model.action, delegateObject: delegateObject, additionalData: additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 31.0
|
return 31.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,7 +59,7 @@ import UIKit
|
|||||||
// MARK: - MVMCoreViewProtocol
|
// MARK: - MVMCoreViewProtocol
|
||||||
extension Link {
|
extension Link {
|
||||||
|
|
||||||
public override func updateView(_ size: CGFloat) {
|
open override func updateView(_ size: CGFloat) {
|
||||||
super.updateView(size)
|
super.updateView(size)
|
||||||
DispatchQueue.main.async { [weak self] in
|
DispatchQueue.main.async { [weak self] in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
@ -70,7 +71,7 @@ extension Link {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setupView() {
|
open override func setupView() {
|
||||||
super.setupView()
|
super.setupView()
|
||||||
backgroundColor = .clear
|
backgroundColor = .clear
|
||||||
contentMode = .redraw
|
contentMode = .redraw
|
||||||
@ -86,7 +87,7 @@ extension Link {
|
|||||||
// MARK: - MVMCoreUIViewConstrainingProtocol
|
// MARK: - MVMCoreUIViewConstrainingProtocol
|
||||||
extension Link: MVMCoreUIViewConstrainingProtocol {
|
extension Link: MVMCoreUIViewConstrainingProtocol {
|
||||||
|
|
||||||
public func horizontalAlignment() -> UIStackView.Alignment {
|
open func horizontalAlignment() -> UIStackView.Alignment {
|
||||||
return .leading
|
return .leading
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8,12 +8,14 @@
|
|||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
public class LinkModel: ButtonModelProtocol, MoleculeModelProtocol {
|
open class LinkModel: ButtonModelProtocol, MoleculeModelProtocol {
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public static var identifier: String = "link"
|
public class var identifier: String {
|
||||||
|
return "link"
|
||||||
|
}
|
||||||
|
|
||||||
public var backgroundColor: Color?
|
public var backgroundColor: Color?
|
||||||
public var title: String
|
public var title: String
|
||||||
@ -9,7 +9,9 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public extension MFCustomButton {
|
public extension MFCustomButton {
|
||||||
|
|
||||||
func set(with action: ActionModelProtocol, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
func set(with action: ActionModelProtocol, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||||
|
|
||||||
buttonDelegate = delegateObject?.buttonDelegate
|
buttonDelegate = delegateObject?.buttonDelegate
|
||||||
add({ [weak self] sender in
|
add({ [weak self] sender in
|
||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
|
|||||||
@ -119,9 +119,9 @@ open class PillButton: Button, MVMCoreUIViewConstrainingProtocol, FormValidation
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - ModelMoleculeViewProtocol
|
// MARK: - ModelMoleculeViewProtocol
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
// The button will get styled in the enable check in super.
|
// The button will get styled in the enable check in super.
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let model = model as? ButtonModel else { return }
|
guard let model = model as? ButtonModel else { return }
|
||||||
setTitle(model.title, for: .normal)
|
setTitle(model.title, for: .normal)
|
||||||
@ -132,8 +132,8 @@ open class PillButton: Button, MVMCoreUIViewConstrainingProtocol, FormValidation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
PillButton.getHeight(for: (molecule as? ButtonModel)?.size, size: MVMCoreUIUtility.getWidth())
|
PillButton.getHeight(for: (model as? ButtonModel)?.size, size: MVMCoreUIUtility.getWidth())
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - MVMCoreViewProtocol
|
// MARK: - MVMCoreViewProtocol
|
||||||
|
|||||||
@ -10,8 +10,9 @@ import Foundation
|
|||||||
|
|
||||||
// temporary until link is finished
|
// temporary until link is finished
|
||||||
extension PrimaryButton: ModelMoleculeViewProtocol {
|
extension PrimaryButton: ModelMoleculeViewProtocol {
|
||||||
public func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
public func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
guard let model = model as? ButtonModel else { return }
|
guard let model = model as? ButtonModel else { return }
|
||||||
|
|
||||||
setTitle(model.title, for: .normal)
|
setTitle(model.title, for: .normal)
|
||||||
backgroundColor = model.backgroundColor?.uiColor
|
backgroundColor = model.backgroundColor?.uiColor
|
||||||
|
|
||||||
@ -23,7 +24,6 @@ extension PrimaryButton: ModelMoleculeViewProtocol {
|
|||||||
FormValidator.setupValidation(molecule: selfForm, delegate: delegateObject?.formValidationProtocol)
|
FormValidator.setupValidation(molecule: selfForm, delegate: delegateObject?.formValidationProtocol)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if let style = model.style {
|
if let style = model.style {
|
||||||
switch style {
|
switch style {
|
||||||
case .primary:
|
case .primary:
|
||||||
@ -32,6 +32,7 @@ extension PrimaryButton: ModelMoleculeViewProtocol {
|
|||||||
setAsSecondaryCustom()
|
setAsSecondaryCustom()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let size = model.size {
|
if let size = model.size {
|
||||||
switch size {
|
switch size {
|
||||||
case .standard:
|
case .standard:
|
||||||
|
|||||||
@ -69,12 +69,12 @@ import UIKit
|
|||||||
dropDownCaretView.centerYAnchor.constraint(equalTo: container.centerYAnchor).isActive = true
|
dropDownCaretView.centerYAnchor.constraint(equalTo: container.centerYAnchor).isActive = true
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let model = model as? BaseDropdownEntryFieldModel else { return }
|
guard let model = model as? BaseDropdownEntryFieldModel else { return }
|
||||||
|
|
||||||
dropDownCaretView.setWithModel(model.caretView, delegateObject, additionalData)
|
dropDownCaretView.setOptional(with: model.caretView, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -111,8 +111,8 @@ import UIKit
|
|||||||
setTextWith(date: datePicker?.date)
|
setTextWith(date: datePicker?.date)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let model = model as? DateDropdownEntryFieldModel else { return }
|
guard let model = model as? DateDropdownEntryFieldModel else { return }
|
||||||
|
|
||||||
|
|||||||
@ -328,7 +328,7 @@ import UIKit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
|
|
||||||
|
|
||||||
guard let model = model as? DigitEntryFieldModel else { return }
|
guard let model = model as? DigitEntryFieldModel else { return }
|
||||||
@ -341,7 +341,7 @@ import UIKit
|
|||||||
MVMCoreUICommonViewsUtility.addDismissToolbar(digitBox.digitField, delegate: delegateObject as? UITextFieldDelegate)
|
MVMCoreUICommonViewsUtility.addDismissToolbar(digitBox.digitField, delegate: delegateObject as? UITextFieldDelegate)
|
||||||
}
|
}
|
||||||
|
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -240,13 +240,13 @@ import UIKit
|
|||||||
entryFieldContainer.reset()
|
entryFieldContainer.reset()
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
self.delegateObject = delegateObject
|
self.delegateObject = delegateObject
|
||||||
|
|
||||||
guard let model = model as? EntryFieldModel else { return }
|
guard let model = model as? EntryFieldModel else { return }
|
||||||
|
|
||||||
entryFieldContainer.setWithModel(model, delegateObject, additionalData)
|
entryFieldContainer.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
title = model.title
|
title = model.title
|
||||||
feedback = model.feedback
|
feedback = model.feedback
|
||||||
|
|||||||
@ -95,8 +95,8 @@ open class ItemDropdownEntryField: BaseDropdownEntryField {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let model = model as? ItemDropdownEntryFieldModel else { return }
|
guard let model = model as? ItemDropdownEntryFieldModel else { return }
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ enum TextType: String {
|
|||||||
}
|
}
|
||||||
extension MFTextField: ModelMoleculeViewProtocol {
|
extension MFTextField: ModelMoleculeViewProtocol {
|
||||||
//
|
//
|
||||||
public func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
//TODO: Need to create setWithModel in ViewConstraining View
|
//TODO: Need to create setWithModel in ViewConstraining View
|
||||||
#warning("This below call should be repaced with super.setWithModel once we get rid of ViewConstrainingView.")
|
#warning("This below call should be repaced with super.setWithModel once we get rid of ViewConstrainingView.")
|
||||||
//TODO: This below call should be repaced with super.setWithModel once we get rid of ViewConstrainingView.
|
//TODO: This below call should be repaced with super.setWithModel once we get rid of ViewConstrainingView.
|
||||||
|
|||||||
@ -277,8 +277,8 @@ import UIKit
|
|||||||
resignFirstResponder()
|
resignFirstResponder()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let model = model as? TextEntryFieldModel else { return }
|
guard let model = model as? TextEntryFieldModel else { return }
|
||||||
|
|
||||||
|
|||||||
100
MVMCoreUI/Atoms/Views/Arrow.swift
Normal file
100
MVMCoreUI/Atoms/Views/Arrow.swift
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
//
|
||||||
|
// Arrow.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Kevin Christiano on 2/20/20.
|
||||||
|
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
open class Arrow: View {
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Properties
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
var arrowLayer = CAShapeLayer()
|
||||||
|
|
||||||
|
public var arrowModel: ArrowModel? {
|
||||||
|
return model as? ArrowModel
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Constraints
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
public var heightConstraint: NSLayoutConstraint?
|
||||||
|
public var widthConstraint: NSLayoutConstraint?
|
||||||
|
|
||||||
|
public func pinHeightAndWidth(constant: CGFloat = 12) {
|
||||||
|
|
||||||
|
heightConstraint = heightAnchor.constraint(equalToConstant: constant)
|
||||||
|
widthConstraint = widthAnchor.constraint(equalToConstant: constant)
|
||||||
|
heightConstraint?.isActive = true
|
||||||
|
widthConstraint?.isActive = true
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Lifecycle
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
open override func setupView() {
|
||||||
|
super.setupView()
|
||||||
|
|
||||||
|
drawShapeLayer()
|
||||||
|
isOpaque = false
|
||||||
|
layer.addSublayer(arrowLayer)
|
||||||
|
arrowLayer.strokeEnd = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Drawing
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
open override func draw(_ rect: CGRect) {
|
||||||
|
super.draw(rect)
|
||||||
|
|
||||||
|
arrowLayer.transform = CATransform3DIdentity
|
||||||
|
drawShapeLayer()
|
||||||
|
|
||||||
|
if let degrees = arrowModel?.degrees {
|
||||||
|
let radians = CGFloat(degrees * Float.pi / 180)
|
||||||
|
arrowLayer.transform = CATransform3DMakeRotation(-radians, 0.0, 0.0, 1.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private func drawShapeLayer() {
|
||||||
|
|
||||||
|
arrowLayer.frame = bounds
|
||||||
|
arrowLayer.strokeColor = arrowModel?.color.cgColor
|
||||||
|
arrowLayer.fillColor = UIColor.clear.cgColor
|
||||||
|
arrowLayer.path = arrowPath()
|
||||||
|
arrowLayer.lineJoin = .miter
|
||||||
|
arrowLayer.lineCap = .butt
|
||||||
|
arrowLayer.lineWidth = arrowModel?.lineWidth ?? 1
|
||||||
|
}
|
||||||
|
|
||||||
|
private func arrowPath() -> CGPath {
|
||||||
|
|
||||||
|
let length = max(bounds.size.height, bounds.size.width)
|
||||||
|
let inset = (arrowModel?.lineWidth ?? 1) / 2
|
||||||
|
let midLength = length / 2
|
||||||
|
|
||||||
|
var startPoint = CGPoint(x: midLength, y: inset)
|
||||||
|
let pivotPoint = CGPoint(x: length - inset, y: midLength)
|
||||||
|
var endPoint = CGPoint(x: midLength, y: length - inset)
|
||||||
|
|
||||||
|
let bezierPath = UIBezierPath()
|
||||||
|
bezierPath.move(to: startPoint)
|
||||||
|
bezierPath.addLine(to: pivotPoint)
|
||||||
|
bezierPath.addLine(to: endPoint)
|
||||||
|
|
||||||
|
startPoint = CGPoint(x: inset, y: midLength)
|
||||||
|
endPoint = CGPoint(x: length - inset, y: midLength)
|
||||||
|
|
||||||
|
bezierPath.move(to: startPoint)
|
||||||
|
bezierPath.addLine(to: pivotPoint)
|
||||||
|
|
||||||
|
return bezierPath.cgPath
|
||||||
|
}
|
||||||
|
}
|
||||||
80
MVMCoreUI/Atoms/Views/ArrowModel.swift
Normal file
80
MVMCoreUI/Atoms/Views/ArrowModel.swift
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
//
|
||||||
|
// ArrowModel.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Kevin Christiano on 2/20/20.
|
||||||
|
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
open class ArrowModel: MoleculeModelProtocol {
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Properties
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
public static var identifier: String = "arrow"
|
||||||
|
public var backgroundColor: Color?
|
||||||
|
|
||||||
|
public var color: Color = Color(uiColor: .mvmBlack)
|
||||||
|
public var degrees: Float = 0
|
||||||
|
public var lineWidth: CGFloat = 1
|
||||||
|
|
||||||
|
public var height: CGFloat = 12
|
||||||
|
public var width: CGFloat = 12
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Keys
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
private enum CodingKeys: String, CodingKey {
|
||||||
|
case moleculeName
|
||||||
|
case backgroundColor
|
||||||
|
case color
|
||||||
|
case degrees
|
||||||
|
case size
|
||||||
|
case lineWidth
|
||||||
|
case height
|
||||||
|
case width
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
|
// MARK: - Codec
|
||||||
|
//--------------------------------------------------
|
||||||
|
|
||||||
|
required public init(from decoder: Decoder) throws {
|
||||||
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
|
backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor)
|
||||||
|
|
||||||
|
if let color = try typeContainer.decodeIfPresent(Color.self, forKey: .color) {
|
||||||
|
self.color = color
|
||||||
|
}
|
||||||
|
|
||||||
|
if let degrees = try typeContainer.decodeIfPresent(Float.self, forKey: .degrees) {
|
||||||
|
self.degrees = degrees
|
||||||
|
}
|
||||||
|
|
||||||
|
if let lineWidth = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .lineWidth) {
|
||||||
|
self.lineWidth = lineWidth
|
||||||
|
}
|
||||||
|
|
||||||
|
if let height = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .height) {
|
||||||
|
self.lineWidth = height
|
||||||
|
}
|
||||||
|
|
||||||
|
if let width = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .width) {
|
||||||
|
self.width = width
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func encode(to encoder: Encoder) throws {
|
||||||
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
|
try container.encode(moleculeName, forKey: .moleculeName)
|
||||||
|
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
||||||
|
try container.encode(color, forKey: .color)
|
||||||
|
try container.encode(degrees, forKey: .degrees)
|
||||||
|
try container.encodeIfPresent(backgroundColor, forKey: .lineWidth)
|
||||||
|
try container.encode(width, forKey: .width)
|
||||||
|
try container.encode(height, forKey: .height)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -184,12 +184,12 @@ open class CaretView: View {
|
|||||||
|
|
||||||
public override func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
public override func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||||
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: CaretViewModel.self) else { return }
|
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: CaretViewModel.self) else { return }
|
||||||
setWithModel(model, delegateObject, additionalData)
|
set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
//MARK: - MVMCoreMoleculeViewProtocol
|
//MARK: - MVMCoreMoleculeViewProtocol
|
||||||
override public func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
override public func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let caretModel = model as? CaretViewModel else {
|
guard let caretModel = model as? CaretViewModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -395,7 +395,7 @@ import MVMCore
|
|||||||
heightConstraint?.constant = dimension
|
heightConstraint?.constant = dimension
|
||||||
}
|
}
|
||||||
|
|
||||||
layoutIfNeeded()
|
//layoutIfNeeded()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
public override func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||||
@ -456,8 +456,8 @@ import MVMCore
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let model = model as? CheckboxModel else { return }
|
guard let model = model as? CheckboxModel else { return }
|
||||||
|
|
||||||
|
|||||||
@ -115,15 +115,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
guard let checkBoxWithLabelModel = model as? CheckboxLabelModel else { return }
|
guard let checkBoxWithLabelModel = model as? CheckboxLabelModel else { return }
|
||||||
|
|
||||||
if let checkboxAlignment = checkBoxWithLabelModel.checkboxAlignment {
|
if let checkboxAlignment = checkBoxWithLabelModel.checkboxAlignment {
|
||||||
alignCheckbox(checkboxAlignment)
|
alignCheckbox(checkboxAlignment)
|
||||||
}
|
}
|
||||||
|
|
||||||
checkbox.setWithModel(checkBoxWithLabelModel.checkbox, delegateObject, additionalData)
|
checkbox.set(with: checkBoxWithLabelModel.checkbox, delegateObject, additionalData)
|
||||||
label.setWithModel(checkBoxWithLabelModel.label, delegateObject, additionalData)
|
label.set(with: checkBoxWithLabelModel.label, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -89,12 +89,12 @@ open class DashLine: View {
|
|||||||
|
|
||||||
open override func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
open override func setWithJSON(_ json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||||
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: DashLineModel.self) else { return }
|
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: DashLineModel.self) else { return }
|
||||||
setWithModel(model, delegateObject, additionalData)
|
set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
//MARK: - MVMCoreMoleculeViewProtocol
|
//MARK: - MVMCoreMoleculeViewProtocol
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let dashLineModel = dashModel else {
|
guard let dashLineModel = dashModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,8 +26,8 @@ import UIKit
|
|||||||
widthAnchor.constraint(equalTo: heightAnchor).isActive = true
|
widthAnchor.constraint(equalTo: heightAnchor).isActive = true
|
||||||
}
|
}
|
||||||
|
|
||||||
override open func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
override open func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? CircleProgressModel else { return }
|
guard let model = model as? CircleProgressModel else { return }
|
||||||
createGraphCircle(model)
|
createGraphCircle(model)
|
||||||
rotationAnimation(model)
|
rotationAnimation(model)
|
||||||
@ -35,7 +35,7 @@ import UIKit
|
|||||||
|
|
||||||
override open func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
override open func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||||
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: CircleProgressModel.self) else { return }
|
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: CircleProgressModel.self) else { return }
|
||||||
setWithModel(model, delegateObject, additionalData)
|
set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
class func getAngle(_ piValue: Double) -> Double {
|
class func getAngle(_ piValue: Double) -> Double {
|
||||||
|
|||||||
@ -132,6 +132,89 @@ public typealias ActionBlock = () -> ()
|
|||||||
// MARK: - Factory Functions
|
// MARK: - Factory Functions
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
|
|
||||||
|
/// Title 2XLarge
|
||||||
|
@objc public static func createLabelTitle2XLarge(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleTitle2XLarge(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
/// TitleXLarge
|
||||||
|
@objc public static func createLabelTitleXLarge(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleTitleXLarge(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
/// BoldTitleLarge
|
||||||
|
@objc public static func createLabelBoldTitleLarge(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleBoldTitleLarge(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
/// RegularTitleLarge
|
||||||
|
@objc public static func createLabelRegularTitleLarge(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleRegularTitleLarge(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
/// BoldTitleMedium
|
||||||
|
@objc public static func createLabelBoldTitleMedium(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleBoldTitleMedium(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
/// RegularTitleMedium
|
||||||
|
@objc public static func createLabelRegularTitleMedium(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleRegularTitleMedium(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
/// BoldBodyLarge
|
||||||
|
@objc public static func createLabelBoldBodyLarge(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleBoldBodyLarge(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
/// RegularBodyLarge
|
||||||
|
@objc public static func createLabelRegularBodyLarge(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleRegularBodyLarge(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
/// BoldBodySmall
|
||||||
|
@objc public static func createLabelBoldBodySmall(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleBoldBodySmall(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
/// RegularBodySmall
|
||||||
|
@objc public static func createLabelRegularBodySmall(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleRegularBodySmall(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
/// BoldMicro
|
||||||
|
@objc public static func createLabelBoldMicro(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleBoldMicro(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
/// RegularMicro
|
||||||
|
@objc public static func createLabelRegularMicro(_ scale: Bool) -> Label {
|
||||||
|
let label = Label.label()
|
||||||
|
label.styleRegularMicro(scale)
|
||||||
|
return label
|
||||||
|
}
|
||||||
|
|
||||||
|
//2.0 fonts init methods
|
||||||
/// H1 -> HeadlineLarge
|
/// H1 -> HeadlineLarge
|
||||||
@objc public static func commonLabelH1(_ scale: Bool) -> Label {
|
@objc public static func commonLabelH1(_ scale: Bool) -> Label {
|
||||||
let label = Label.label()
|
let label = Label.label()
|
||||||
@ -219,7 +302,7 @@ public typealias ActionBlock = () -> ()
|
|||||||
case left
|
case left
|
||||||
}
|
}
|
||||||
|
|
||||||
public func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
|
|
||||||
clauses = []
|
clauses = []
|
||||||
|
|
||||||
@ -267,16 +350,16 @@ public typealias ActionBlock = () -> ()
|
|||||||
if let fontName = labelModel.fontName {
|
if let fontName = labelModel.fontName {
|
||||||
font = MFFonts.mfFont(withName: fontName, size: fontSize ?? standardFontSize)
|
font = MFFonts.mfFont(withName: fontName, size: fontSize ?? standardFontSize)
|
||||||
} else if let fontSize = fontSize {
|
} else if let fontSize = fontSize {
|
||||||
font = font.withSize(fontSize)
|
font = font.updateSize(fontSize)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let textColorHex = labelModel.textColor, !textColorHex.isEmpty {
|
if let color = labelModel.textColor {
|
||||||
textColor = UIColor.mfGet(forHex: textColorHex)
|
textColor = color.uiColor
|
||||||
}
|
}
|
||||||
|
|
||||||
if let attributes = labelModel.attributes, let labelText = text {
|
if let attributes = labelModel.attributes, let labelText = text {
|
||||||
let attributedString = NSMutableAttributedString(string: labelText, attributes: [NSAttributedString.Key.font: font.withSize(standardFontSize), NSAttributedString.Key.foregroundColor: textColor as UIColor])
|
let attributedString = NSMutableAttributedString(string: labelText, attributes: [NSAttributedString.Key.font: font.updateSize(standardFontSize), NSAttributedString.Key.foregroundColor: textColor as UIColor])
|
||||||
|
|
||||||
for attribute in attributes {
|
for attribute in attributes {
|
||||||
let range = NSRange(location: attribute.location, length: attribute.length)
|
let range = NSRange(location: attribute.location, length: attribute.length)
|
||||||
@ -324,7 +407,7 @@ public typealias ActionBlock = () -> ()
|
|||||||
if let fontName = fontAtt.name {
|
if let fontName = fontAtt.name {
|
||||||
font = MFFonts.mfFont(withName: fontName, size: fontSize ?? self.font.pointSize)
|
font = MFFonts.mfFont(withName: fontName, size: fontSize ?? self.font.pointSize)
|
||||||
} else if let fontSize = fontSize {
|
} else if let fontSize = fontSize {
|
||||||
font = self.font.withSize(fontSize)
|
font = self.font.updateSize(fontSize)
|
||||||
}
|
}
|
||||||
if let font = font {
|
if let font = font {
|
||||||
attributedString.removeAttribute(.font, range: range)
|
attributedString.removeAttribute(.font, range: range)
|
||||||
@ -390,7 +473,7 @@ public typealias ActionBlock = () -> ()
|
|||||||
if let fontName = json?.optionalStringForKey("fontName") {
|
if let fontName = json?.optionalStringForKey("fontName") {
|
||||||
label.font = MFFonts.mfFont(withName: fontName, size: fontSize ?? mvmLabel?.standardFontSize ?? label.font.pointSize)
|
label.font = MFFonts.mfFont(withName: fontName, size: fontSize ?? mvmLabel?.standardFontSize ?? label.font.pointSize)
|
||||||
} else if let fontSize = fontSize {
|
} else if let fontSize = fontSize {
|
||||||
label.font = label.font.withSize(fontSize)
|
label.font = label.font.updateSize(fontSize)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -400,7 +483,7 @@ public typealias ActionBlock = () -> ()
|
|||||||
|
|
||||||
if let attributes = json?.optionalArrayForKey("attributes"), let labelText = label.text {
|
if let attributes = json?.optionalArrayForKey("attributes"), let labelText = label.text {
|
||||||
let attributedString = NSMutableAttributedString(string: labelText,
|
let attributedString = NSMutableAttributedString(string: labelText,
|
||||||
attributes: [NSAttributedString.Key.font: mvmLabel?.font.withSize(mvmLabel!.standardFontSize) ?? label.font as UIFont,
|
attributes: [NSAttributedString.Key.font: mvmLabel?.font.updateSize(mvmLabel!.standardFontSize) ?? label.font as UIFont,
|
||||||
NSAttributedString.Key.foregroundColor: label.textColor as UIColor])
|
NSAttributedString.Key.foregroundColor: label.textColor as UIColor])
|
||||||
for case let attribute as [String: Any] in attributes {
|
for case let attribute as [String: Any] in attributes {
|
||||||
guard let attributeType = attribute.optionalStringForKey(KeyType),
|
guard let attributeType = attribute.optionalStringForKey(KeyType),
|
||||||
@ -452,7 +535,7 @@ public typealias ActionBlock = () -> ()
|
|||||||
if let fontName = attribute.optionalStringForKey("name") {
|
if let fontName = attribute.optionalStringForKey("name") {
|
||||||
font = MFFonts.mfFont(withName: fontName, size: fontSize ?? mvmLabel?.standardFontSize ?? label.font.pointSize)
|
font = MFFonts.mfFont(withName: fontName, size: fontSize ?? mvmLabel?.standardFontSize ?? label.font.pointSize)
|
||||||
} else if let fontSize = fontSize {
|
} else if let fontSize = fontSize {
|
||||||
font = label.font.withSize(fontSize)
|
font = label.font.updateSize(fontSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
if let font = font {
|
if let font = font {
|
||||||
@ -481,6 +564,68 @@ public typealias ActionBlock = () -> ()
|
|||||||
// MARK: - Methods
|
// MARK: - Methods
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
|
|
||||||
|
//mva 3.0 font
|
||||||
|
@objc public func styleTitle2XLarge(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelTitle2XLarge(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleTitleXLarge(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelTitleXLarge(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleBoldTitleLarge(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelBoldTitleLarge(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleRegularTitleLarge(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelRegularTitleLarge(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleBoldTitleMedium(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelBoldTitleMedium(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleRegularTitleMedium(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelRegularTitleMedium(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleBoldBodyLarge(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelBoldBodyLarge(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleRegularBodyLarge(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelRegularBodyLarge(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleBoldBodySmall(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelBoldBodySmall(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleRegularBodySmall(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelRegularBodySmall(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleBoldMicro(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelBoldMicro(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc public func styleRegularMicro(_ scale: Bool) {
|
||||||
|
MFStyler.styleLabelRegularMicro(self, genericScaling: false)
|
||||||
|
setScale(scale)
|
||||||
|
}
|
||||||
|
|
||||||
|
//2.0 fonts
|
||||||
@objc public func styleH1(_ scale: Bool) {
|
@objc public func styleH1(_ scale: Bool) {
|
||||||
MFStyler.styleLabelH1(self, genericScaling: false)
|
MFStyler.styleLabelH1(self, genericScaling: false)
|
||||||
setScale(scale)
|
setScale(scale)
|
||||||
@ -532,7 +677,7 @@ public typealias ActionBlock = () -> ()
|
|||||||
originalAttributedString.enumerateAttribute(.font, in: NSRange(location: 0, length: originalAttributedString.length), options: []) { value, range, stop in
|
originalAttributedString.enumerateAttribute(.font, in: NSRange(location: 0, length: originalAttributedString.length), options: []) { value, range, stop in
|
||||||
|
|
||||||
if let fontObj = value as? UIFont, let stylerSize = MFStyler.sizeObjectGeneric(forCurrentDevice: fontObj.pointSize)?.getValueBased(onSize: size) {
|
if let fontObj = value as? UIFont, let stylerSize = MFStyler.sizeObjectGeneric(forCurrentDevice: fontObj.pointSize)?.getValueBased(onSize: size) {
|
||||||
attributedString.addAttribute(.font, value: fontObj.withSize(stylerSize) as Any, range: range)
|
attributedString.addAttribute(.font, value: fontObj.updateSize(stylerSize) as Any, range: range)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -548,7 +693,7 @@ public typealias ActionBlock = () -> ()
|
|||||||
|
|
||||||
attributedText = attributedString
|
attributedText = attributedString
|
||||||
} else if !MVMCoreGetterUtility.fequal(a: Float(standardFontSize), b: 0.0), let sizeObject = sizeObject ?? MFStyler.sizeObjectGeneric(forCurrentDevice: standardFontSize) {
|
} else if !MVMCoreGetterUtility.fequal(a: Float(standardFontSize), b: 0.0), let sizeObject = sizeObject ?? MFStyler.sizeObjectGeneric(forCurrentDevice: standardFontSize) {
|
||||||
font = font.withSize(sizeObject.getValueBased(onSize: size))
|
font = font.updateSize(sizeObject.getValueBased(onSize: size))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
@objcMembers open class LabelAttributeModel: Model {
|
@objcMembers open class LabelAttributeModel: ModelProtocol {
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|||||||
@ -18,7 +18,7 @@ import Foundation
|
|||||||
public var backgroundColor: Color?
|
public var backgroundColor: Color?
|
||||||
public var text: String
|
public var text: String
|
||||||
public var accessibilityText: String?
|
public var accessibilityText: String?
|
||||||
public var textColor: String?
|
public var textColor: Color?
|
||||||
public var fontStyle: String?
|
public var fontStyle: String?
|
||||||
public var fontName: String?
|
public var fontName: String?
|
||||||
public var fontSize: CGFloat?
|
public var fontSize: CGFloat?
|
||||||
@ -68,7 +68,7 @@ import Foundation
|
|||||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
text = try typeContainer.decode(String.self, forKey: .text)
|
text = try typeContainer.decode(String.self, forKey: .text)
|
||||||
accessibilityText = try typeContainer.decodeIfPresent(String.self, forKey: .accessibilityText)
|
accessibilityText = try typeContainer.decodeIfPresent(String.self, forKey: .accessibilityText)
|
||||||
textColor = try typeContainer.decodeIfPresent(String.self, forKey: .textColor)
|
textColor = try typeContainer.decodeIfPresent(Color.self, forKey: .textColor)
|
||||||
backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor)
|
backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor)
|
||||||
fontStyle = try typeContainer.decodeIfPresent(String.self, forKey: .fontStyle)
|
fontStyle = try typeContainer.decodeIfPresent(String.self, forKey: .fontStyle)
|
||||||
fontName = try typeContainer.decodeIfPresent(String.self, forKey: .fontName)
|
fontName = try typeContainer.decodeIfPresent(String.self, forKey: .fontName)
|
||||||
|
|||||||
@ -179,13 +179,14 @@ import Foundation
|
|||||||
|
|
||||||
//MARK: - MVMCoreMoleculeViewProtocol
|
//MARK: - MVMCoreMoleculeViewProtocol
|
||||||
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let leftRightLabelModel = model as? LeftRightLabelModel else {
|
guard let leftRightLabelModel = model as? LeftRightLabelModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
leftTextLabel.setWithModel(leftRightLabelModel.leftText, delegateObject, additionalData)
|
leftTextLabel.set(with: leftRightLabelModel.leftText, delegateObject, additionalData)
|
||||||
rightTextLabel.setWithModel(leftRightLabelModel.rightText, delegateObject, additionalData)
|
rightTextLabel.setOptional(with: leftRightLabelModel.rightText, delegateObject, additionalData)
|
||||||
|
|
||||||
if !leftTextLabel.hasText {
|
if !leftTextLabel.hasText {
|
||||||
constrainRightLabel()
|
constrainRightLabel()
|
||||||
} else if !rightTextLabel.hasText {
|
} else if !rightTextLabel.hasText {
|
||||||
|
|||||||
@ -67,11 +67,11 @@ import UIKit
|
|||||||
super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData)
|
super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
if let lineModel = model as? LineModel {
|
if let lineModel = model as? LineModel {
|
||||||
setStyle(lineModel.type ?? .standard)
|
setStyle(lineModel.type ?? .standard)
|
||||||
}
|
}
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func reset() {
|
open override func reset() {
|
||||||
|
|||||||
@ -209,7 +209,7 @@ import UIKit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
self.delegateObject = delegateObject
|
self.delegateObject = delegateObject
|
||||||
// TODO: Temporary, should be moved to init once we have type erasure ready.
|
// TODO: Temporary, should be moved to init once we have type erasure ready.
|
||||||
setAsMolecule()
|
setAsMolecule()
|
||||||
|
|||||||
@ -9,16 +9,16 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
extension MFView {
|
extension MFView {
|
||||||
public func setUpDefaultWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public func setUpDefaultWithModel(_ model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
self.model = model
|
self.model = model
|
||||||
if let backgroundColor = model?.backgroundColor {
|
if let backgroundColor = model.backgroundColor {
|
||||||
self.backgroundColor = backgroundColor.uiColor
|
self.backgroundColor = backgroundColor.uiColor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension ModelMoleculeViewProtocol where Self: MFView {
|
extension ModelMoleculeViewProtocol where Self: MFView {
|
||||||
func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
setUpDefaultWithModel(model, delegateObject, additionalData)
|
setUpDefaultWithModel(model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import Foundation
|
|||||||
|
|
||||||
// temporary until link is finished
|
// temporary until link is finished
|
||||||
extension MVMCoreUISwitch: ModelMoleculeViewProtocol {
|
extension MVMCoreUISwitch: ModelMoleculeViewProtocol {
|
||||||
public func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
public func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
guard let model = model as? ToggleModel else { return }
|
guard let model = model as? ToggleModel else { return }
|
||||||
|
|
||||||
if let castSelf = self as? FormValidationProtocol {
|
if let castSelf = self as? FormValidationProtocol {
|
||||||
|
|||||||
@ -64,8 +64,8 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
//MARK: - MVMCoreMoleculeViewProtocol
|
//MARK: - MVMCoreMoleculeViewProtocol
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let multiProgressModel = multiProgressModel else {
|
guard let multiProgressModel = multiProgressModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -83,6 +83,6 @@ import UIKit
|
|||||||
|
|
||||||
public override func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable : Any]?) {
|
public override func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable : Any]?) {
|
||||||
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: MultiProgressBarModel.self) else { return }
|
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: MultiProgressBarModel.self) else { return }
|
||||||
setWithModel(model, delegateObject, additionalData)
|
set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,7 @@ import Foundation
|
|||||||
}
|
}
|
||||||
|
|
||||||
//MARK: - MVMCoreMoleculeViewProtocol
|
//MARK: - MVMCoreMoleculeViewProtocol
|
||||||
public func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
guard let progressBarModel = model as? ProgressBarModel else {
|
guard let progressBarModel = model as? ProgressBarModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -66,7 +66,7 @@ import Foundation
|
|||||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||||
public func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
public func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||||
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: ProgressBarModel.self) else { return }
|
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: ProgressBarModel.self) else { return }
|
||||||
setWithModel(model, delegateObject, additionalData)
|
set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func reset() {
|
public func reset() {
|
||||||
|
|||||||
@ -32,7 +32,7 @@ import UIKit
|
|||||||
return json?.optionalStringForKey("radioGroupName") ?? json?.optionalStringForKey("fieldKey")
|
return json?.optionalStringForKey("radioGroupName") ?? json?.optionalStringForKey("fieldKey")
|
||||||
}()
|
}()
|
||||||
|
|
||||||
lazy var radioButtonModel: RadioButtonModel? = {
|
lazy var radioButtonModel: RadioButtonSelectionHelper? = {
|
||||||
[unowned self] in
|
[unowned self] in
|
||||||
if let radioGroupName = radioGroupName,
|
if let radioGroupName = radioGroupName,
|
||||||
let radioButtonModel = delegateObject?.formValidationProtocol?.formValidatorModel?()?.radioButtonsModelByGroup[radioGroupName] {
|
let radioButtonModel = delegateObject?.formValidationProtocol?.formValidatorModel?()?.radioButtonsModelByGroup[radioGroupName] {
|
||||||
@ -98,6 +98,14 @@ import UIKit
|
|||||||
accessibilityTraits = .button
|
accessibilityTraits = .button
|
||||||
accessibilityHint = MVMCoreUIUtility.hardcodedString(withKey: "radio_action_hint")
|
accessibilityHint = MVMCoreUIUtility.hardcodedString(withKey: "radio_action_hint")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
guard let model = model as? RadioButtonModel else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
setWithJSON(model.toJSON(), delegateObject: delegateObject, additionalData: additionalData)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - MVMCoreUIViewConstrainingProtocol
|
// MARK: - MVMCoreUIViewConstrainingProtocol
|
||||||
@ -123,11 +131,11 @@ extension RadioButton {
|
|||||||
isRequired = jsonDictionary.boolForKey("required")
|
isRequired = jsonDictionary.boolForKey("required")
|
||||||
self.delegateObject = delegateObject
|
self.delegateObject = delegateObject
|
||||||
|
|
||||||
let radioButtonModel = RadioButtonModel.setupForRadioButtonGroup(radioButton: self,
|
let radioButtonModel = RadioButtonSelectionHelper.setupForRadioButtonGroup(radioButton: self,
|
||||||
formValidator: delegateObject?.formValidationProtocol?.formValidatorModel?())
|
formValidator: delegateObject?.formValidationProtocol?.formValidatorModel?())
|
||||||
FormValidator.setupValidation(molecule: radioButtonModel, delegate: delegateObject?.formValidationProtocol)
|
FormValidator.setupValidation(molecule: radioButtonModel, delegate: delegateObject?.formValidationProtocol)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func reset() {
|
public override func reset() {
|
||||||
super.reset()
|
super.reset()
|
||||||
backgroundColor = .white
|
backgroundColor = .white
|
||||||
|
|||||||
17
MVMCoreUI/Atoms/Views/RadioButtonModel.swift
Normal file
17
MVMCoreUI/Atoms/Views/RadioButtonModel.swift
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
//
|
||||||
|
// RadioButtonModel.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Suresh, Kamlesh on 2/26/20.
|
||||||
|
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
|
||||||
|
public class RadioButtonModel: MoleculeModelProtocol {
|
||||||
|
public static var identifier: String = "radioButton"
|
||||||
|
public var backgroundColor: Color?
|
||||||
|
public var state: Bool = false
|
||||||
|
public var fieldKey: String?
|
||||||
|
}
|
||||||
@ -334,7 +334,7 @@ public typealias ActionBlockConfirmation = () -> (Bool)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
guard let toggleModel = model as? ToggleModel else {
|
guard let toggleModel = model as? ToggleModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -343,7 +343,7 @@ public typealias ActionBlockConfirmation = () -> (Bool)
|
|||||||
setWithJSON(toggleModelJSON, delegateObject: delegateObject, additionalData: additionalData)
|
setWithJSON(toggleModelJSON, delegateObject: delegateObject, additionalData: additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return Self.getContainerHeight()
|
return Self.getContainerHeight()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -87,10 +87,10 @@ public typealias ButtonAction = (Button) -> ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
open func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
self.model = model
|
self.model = model
|
||||||
|
|
||||||
if let backgroundColor = model?.backgroundColor {
|
if let backgroundColor = model.backgroundColor {
|
||||||
self.backgroundColor = backgroundColor.uiColor
|
self.backgroundColor = backgroundColor.uiColor
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,15 +100,15 @@ public typealias ButtonAction = (Button) -> ()
|
|||||||
set(with: model.action, delegateObject: delegateObject, additionalData: additionalData)
|
set(with: model.action, delegateObject: delegateObject, additionalData: additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
open class func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
open class func nameForReuse(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||||
return model?.moleculeName
|
return model.moleculeName
|
||||||
}
|
}
|
||||||
|
|
||||||
open class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
open class func requiredModules(_ molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
open class func requiredModules(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,22 +48,22 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
open func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
self.model = model
|
self.model = model
|
||||||
if let backgroundColor = model?.backgroundColor {
|
if let backgroundColor = model.backgroundColor {
|
||||||
self.backgroundColor = backgroundColor.uiColor
|
self.backgroundColor = backgroundColor.uiColor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
open class func nameForReuse(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||||
return model?.moleculeName
|
return model.moleculeName
|
||||||
}
|
}
|
||||||
|
|
||||||
open class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
open class func requiredModules(_ molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
open class func requiredModules(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -150,8 +150,8 @@ import UIKit
|
|||||||
contentView.preservesSuperviewLayoutMargins = false
|
contentView.preservesSuperviewLayoutMargins = false
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: Model, Change to model
|
//TODO: ModelProtocol, Change to model
|
||||||
public func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
guard let model = model as? ListItemModelProtocol else { return }
|
guard let model = model as? ListItemModelProtocol else { return }
|
||||||
|
|
||||||
self.listItemModel = model
|
self.listItemModel = model
|
||||||
@ -169,7 +169,7 @@ import UIKit
|
|||||||
// override the separator
|
// override the separator
|
||||||
if let separator = model.line {
|
if let separator = model.line {
|
||||||
addSeparatorsIfNeeded()
|
addSeparatorsIfNeeded()
|
||||||
bottomSeparatorView?.setWithModel(separator, nil, nil)
|
bottomSeparatorView?.set(with: separator, nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
if let moleculeModel = model as? MoleculeModelProtocol,
|
if let moleculeModel = model as? MoleculeModelProtocol,
|
||||||
@ -183,11 +183,11 @@ import UIKit
|
|||||||
backgroundColor = .white
|
backgroundColor = .white
|
||||||
}
|
}
|
||||||
|
|
||||||
public class func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
public class func nameForReuse(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||||
return model?.moleculeName
|
return model.moleculeName
|
||||||
}
|
}
|
||||||
|
|
||||||
public class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,8 +246,8 @@ import UIKit
|
|||||||
public func setLines(with model: LineModel?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable : Any]?, indexPath: IndexPath) {
|
public func setLines(with model: LineModel?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable : Any]?, indexPath: IndexPath) {
|
||||||
addSeparatorsIfNeeded()
|
addSeparatorsIfNeeded()
|
||||||
if let model = model {
|
if let model = model {
|
||||||
topSeparatorView?.setWithModel(model, delegateObject, additionalData)
|
topSeparatorView?.set(with: model, delegateObject, additionalData)
|
||||||
bottomSeparatorView?.setWithModel(model, delegateObject, additionalData)
|
bottomSeparatorView?.set(with: model, delegateObject, additionalData)
|
||||||
} else {
|
} else {
|
||||||
topSeparatorView?.setStyle(.standard)
|
topSeparatorView?.setStyle(.standard)
|
||||||
bottomSeparatorView?.setStyle(.standard)
|
bottomSeparatorView?.setStyle(.standard)
|
||||||
|
|||||||
@ -40,22 +40,22 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
open func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
self.model = model
|
self.model = model
|
||||||
if let backgroundColor = model?.backgroundColor {
|
if let backgroundColor = model.backgroundColor {
|
||||||
self.backgroundColor = backgroundColor.uiColor
|
self.backgroundColor = backgroundColor.uiColor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open class func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
open class func nameForReuse(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||||
return model?.moleculeName
|
return model.moleculeName
|
||||||
}
|
}
|
||||||
|
|
||||||
open class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
open class func requiredModules(_ molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
open class func requiredModules(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,9 +20,7 @@ import UIKit
|
|||||||
navigationBar.shadowImage = UIImage()
|
navigationBar.shadowImage = UIImage()
|
||||||
navigationBar.isOpaque = true
|
navigationBar.isOpaque = true
|
||||||
navigationBar.tintColor = .black
|
navigationBar.tintColor = .black
|
||||||
if let font = MFFonts.mfFont75Bd(MFSizeObject(standardSize: 14, standardiPadPortraitSize: 16, iPadProLandscapeSize: 18)?.getValueBasedOnScreenSize() ?? 14) {
|
navigationBar.titleTextAttributes = [NSAttributedString.Key.font: MFStyler.fontBoldBodySmall(false)];
|
||||||
navigationBar.titleTextAttributes = [NSAttributedString.Key.font: font];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static func setupNavigationController() -> Self? {
|
public static func setupNavigationController() -> Self? {
|
||||||
|
|||||||
@ -338,7 +338,7 @@ static NSString * const COLLECTION_CELL_ID = @"cell";
|
|||||||
|
|
||||||
#pragma mark - helper
|
#pragma mark - helper
|
||||||
|
|
||||||
- (void)pinHeight:(CGFloat)height; {
|
- (void)pinHeight:(CGFloat)height {
|
||||||
self.heightConstraint.constant = height;
|
self.heightConstraint.constant = height;
|
||||||
[self setNeedsLayout];
|
[self setNeedsLayout];
|
||||||
[self layoutIfNeeded];
|
[self layoutIfNeeded];
|
||||||
|
|||||||
@ -16,8 +16,8 @@ open class Container: View, ContainerProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
override open func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
override open func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let containerModel = model as? ContainerModelProtocol else { return }
|
guard let containerModel = model as? ContainerModelProtocol else { return }
|
||||||
containerHelper.set(with: containerModel, for: view as? MVMCoreUIViewConstrainingProtocol)
|
containerHelper.set(with: containerModel, for: view as? MVMCoreUIViewConstrainingProtocol)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -276,8 +276,8 @@ import UIKit
|
|||||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
self.delegateObject = delegateObject
|
self.delegateObject = delegateObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,40 +30,40 @@ open class MoleculeContainer: Container {
|
|||||||
super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData)
|
super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
if let casteModel = model as? MoleculeContainerModelProtocol {
|
if let casteModel = model as? MoleculeContainerModelProtocol {
|
||||||
if view != nil {
|
if view != nil {
|
||||||
(view as? ModelMoleculeViewProtocol)?.setWithModel(casteModel.molecule, delegateObject, additionalData)
|
(view as? ModelMoleculeViewProtocol)?.set(with: casteModel.molecule, delegateObject, additionalData)
|
||||||
} else {
|
} else {
|
||||||
if let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(casteModel.molecule, delegateObject) {
|
if let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(casteModel.molecule, delegateObject) {
|
||||||
addMolecule(molecule)
|
addMolecule(molecule)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override static func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
public override static func nameForReuse(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||||
guard let containerModel = model as? MoleculeContainerModelProtocol,
|
guard let containerModel = model as? MoleculeContainerModelProtocol,
|
||||||
let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(containerModel.molecule) as? ModelMoleculeViewProtocol.Type,
|
let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(containerModel.molecule) as? ModelMoleculeViewProtocol.Type,
|
||||||
let moleculeName = moleculeClass.nameForReuse(containerModel.molecule, delegateObject) else {
|
let moleculeName = moleculeClass.nameForReuse(with: containerModel.molecule, delegateObject) else {
|
||||||
return "\(model?.moleculeName ?? "moleculeContainer")<>"
|
return "\(model.moleculeName ?? "moleculeContainer")<>"
|
||||||
}
|
}
|
||||||
return "\(model?.moleculeName ?? "moleculeContainer")<\(moleculeName)>"
|
return "\(model.moleculeName ?? "moleculeContainer")<\(moleculeName)>"
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
guard let containerModel = molecule as? MoleculeContainerModelProtocol else { return 0 }
|
guard let containerModel = model as? MoleculeContainerModelProtocol else { return 0 }
|
||||||
guard let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(containerModel.molecule) as? ModelMoleculeViewProtocol.Type,
|
guard let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(containerModel.molecule) as? ModelMoleculeViewProtocol.Type,
|
||||||
let moleculeHeight = moleculeClass.estimatedHeight(forRow: containerModel.molecule, delegateObject: delegateObject) else {
|
let moleculeHeight = moleculeClass.estimatedHeight(with: containerModel.molecule, delegateObject) else {
|
||||||
return (containerModel.topMarginPadding ?? 0) + (containerModel.bottomMarginPadding ?? 0)
|
return (containerModel.topMarginPadding ?? 0) + (containerModel.bottomMarginPadding ?? 0)
|
||||||
}
|
}
|
||||||
return moleculeHeight + (containerModel.topMarginPadding ?? 0) + (containerModel.bottomMarginPadding ?? 0)
|
return moleculeHeight + (containerModel.topMarginPadding ?? 0) + (containerModel.bottomMarginPadding ?? 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func requiredModules(_ molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
public override class func requiredModules(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
||||||
guard let containerModel = molecule as? MoleculeContainerModelProtocol,
|
guard let containerModel = model as? MoleculeContainerModelProtocol,
|
||||||
let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(containerModel.molecule) as? ModelMoleculeViewProtocol.Type else { return nil }
|
let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(containerModel.molecule) as? ModelMoleculeViewProtocol.Type else { return nil }
|
||||||
return moleculeClass.requiredModules(containerModel.molecule, delegateObject: delegateObject, error: error)
|
return moleculeClass.requiredModules(with: containerModel.molecule, delegateObject, error: error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import MVMCore
|
|||||||
weak var delegate: FormValidationProtocol?
|
weak var delegate: FormValidationProtocol?
|
||||||
var fieldMolecules: [FormValidationFormFieldProtocol] = []
|
var fieldMolecules: [FormValidationFormFieldProtocol] = []
|
||||||
var enableDisableMolecules: [FormValidationEnableDisableProtocol] = []
|
var enableDisableMolecules: [FormValidationEnableDisableProtocol] = []
|
||||||
var radioButtonsModelByGroup: [String: RadioButtonModel] = [:]
|
var radioButtonsModelByGroup: [String: RadioButtonSelectionHelper] = [:]
|
||||||
|
|
||||||
public func insertMolecule(_ molecule: FormValidationProtocol) {
|
public func insertMolecule(_ molecule: FormValidationProtocol) {
|
||||||
if let molecule = molecule as? FormValidationFormFieldProtocol {
|
if let molecule = molecule as? FormValidationFormFieldProtocol {
|
||||||
|
|||||||
@ -32,6 +32,7 @@ FOUNDATION_EXPORT const unsigned char MVMCoreUIVersionString[];
|
|||||||
#pragma mark - Categories
|
#pragma mark - Categories
|
||||||
#import <MVMCoreUI/NSLayoutConstraint+MFConvenience.h>
|
#import <MVMCoreUI/NSLayoutConstraint+MFConvenience.h>
|
||||||
#import <MVMCoreUI/UIColor+MFConvenience.h>
|
#import <MVMCoreUI/UIColor+MFConvenience.h>
|
||||||
|
#import <MVMCoreUI/UIFont+FontWrapping.h>
|
||||||
|
|
||||||
#pragma mark - Styles
|
#pragma mark - Styles
|
||||||
#import <MVMCoreUI/MFStyler.h>
|
#import <MVMCoreUI/MFStyler.h>
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
|
|
||||||
public protocol FormModelProtocol: Model {
|
public protocol FormModelProtocol: ModelProtocol {
|
||||||
var required: Bool? { get }
|
var required: Bool? { get }
|
||||||
var fieldKey: String? { get }
|
var fieldKey: String? { get }
|
||||||
var groupName: String? { get }
|
var groupName: String? { get }
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
|
|
||||||
public protocol MoleculeModelProtocol: Model {
|
public protocol MoleculeModelProtocol: ModelProtocol {
|
||||||
var moleculeName: String? { get }
|
var moleculeName: String? { get }
|
||||||
var backgroundColor: Color? { get set }
|
var backgroundColor: Color? { get set }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
|
|
||||||
public protocol TemplateModelProtocol: PageModelProtocol, Model {
|
public protocol TemplateModelProtocol: PageModelProtocol, ModelProtocol {
|
||||||
var template: String { get }
|
var template: String { get }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -11,30 +11,36 @@ import Foundation
|
|||||||
@objcMembers open class ListLeftVariableCheckboxAllTextAndLinks: TableViewCell {
|
@objcMembers open class ListLeftVariableCheckboxAllTextAndLinks: TableViewCell {
|
||||||
public let checkbox = Checkbox(frame: .zero)
|
public let checkbox = Checkbox(frame: .zero)
|
||||||
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink(frame: .zero)
|
public let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink(frame: .zero)
|
||||||
public let stack = Stack<StackModel>(frame: .zero)
|
public var stack: Stack<StackModel>
|
||||||
|
|
||||||
|
// MARK: - Initializers
|
||||||
|
public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
|
stack = Stack<StackModel>.createStack(with: [(view: checkbox, model: StackItemModel(horizontalAlignment: .fill)),
|
||||||
|
(view: eyebrowHeadlineBodyLink, model: StackItemModel(horizontalAlignment: .leading))],
|
||||||
|
axis: .horizontal)
|
||||||
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
|
}
|
||||||
|
|
||||||
|
public required init?(coder aDecoder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - View Lifecycle
|
// MARK: - View Lifecycle
|
||||||
override open func setupView() {
|
override open func setupView() {
|
||||||
super.setupView()
|
super.setupView()
|
||||||
stack.stackItems = [StackItem(andContain: checkbox),StackItem(andContain: eyebrowHeadlineBodyLink)]
|
|
||||||
addMolecule(stack)
|
addMolecule(stack)
|
||||||
}
|
|
||||||
|
|
||||||
// MARK:- MVMCoreUIMoleculeViewProtocol
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
|
||||||
guard let model = model as? ListLeftVariableCheckboxAllTextAndLinksModel else { return}
|
|
||||||
checkbox.setWithModel(model.checkbox, delegateObject, additionalData)
|
|
||||||
eyebrowHeadlineBodyLink.setWithModel(model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
|
||||||
|
|
||||||
let stackModel = StackModel(molecules: [StackItemModel(horizontalAlignment: .fill),
|
|
||||||
StackItemModel(horizontalAlignment: .leading)],
|
|
||||||
axis: .horizontal)
|
|
||||||
stack.model = stackModel
|
|
||||||
stack.restack()
|
stack.restack()
|
||||||
}
|
}
|
||||||
|
|
||||||
open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
// 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? ListLeftVariableCheckboxAllTextAndLinksModel else { return}
|
||||||
|
checkbox.set(with: model.checkbox, delegateObject, additionalData)
|
||||||
|
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
||||||
|
}
|
||||||
|
|
||||||
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 140
|
return 140
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,39 +17,46 @@ import UIKit
|
|||||||
let leftImage = MFLoadImageView(pinnedEdges: .all)
|
let leftImage = MFLoadImageView(pinnedEdges: .all)
|
||||||
let leftLabel = Label.commonLabelB2(true)
|
let leftLabel = Label.commonLabelB2(true)
|
||||||
let rightLabel = Label.commonLabelB2(true)
|
let rightLabel = Label.commonLabelB2(true)
|
||||||
let stack = Stack<StackModel>(frame: .zero)
|
var stack: Stack<StackModel>
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// MARK: - Initializers
|
||||||
|
//-----------------------------------------------------
|
||||||
|
public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
|
stack = Stack<StackModel>.createStack(with: [(view: leftImage, model: StackItemModel(horizontalAlignment: .fill)),
|
||||||
|
(view: leftLabel, model: StackItemModel(horizontalAlignment: .fill)),
|
||||||
|
(view: rightLabel, model: StackItemModel(spacing: 4, horizontalAlignment: .trailing))],
|
||||||
|
axis: .horizontal)
|
||||||
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
|
}
|
||||||
|
|
||||||
|
public required init?(coder aDecoder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// MARK: - View Lifecycle
|
// MARK: - View Lifecycle
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
|
|
||||||
override open func setupView() {
|
override open func setupView() {
|
||||||
super.setupView()
|
super.setupView()
|
||||||
stack.stackItems = [StackItem(andContain: leftImage),StackItem(andContain: leftLabel),StackItem(andContain: rightLabel)]
|
|
||||||
addMolecule(stack)
|
|
||||||
leftLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 901), for: .horizontal)
|
leftLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 901), for: .horizontal)
|
||||||
rightLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 902), for: .horizontal)
|
rightLabel.setContentHuggingPriority(UILayoutPriority(rawValue: 902), for: .horizontal)
|
||||||
|
addMolecule(stack)
|
||||||
|
stack.restack()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
// MARK: - Molecule
|
// MARK: - Molecule
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? ListLeftVariableIconWithRightCaretModel else { return}
|
guard let model = model as? ListLeftVariableIconWithRightCaretModel else { return}
|
||||||
leftImage.setWithModel(model.image, delegateObject, additionalData)
|
leftImage.set(with: model.image, delegateObject, additionalData)
|
||||||
leftLabel.setWithModel(model.leftLabel, delegateObject, additionalData)
|
leftLabel.set(with: model.leftLabel, delegateObject, additionalData)
|
||||||
rightLabel.setWithModel(model.rightLabel, delegateObject, additionalData)
|
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
|
||||||
|
|
||||||
let stackModel = StackModel(molecules: [StackItemModel(horizontalAlignment: .fill),
|
|
||||||
StackItemModel(horizontalAlignment: .fill),
|
|
||||||
StackItemModel(horizontalAlignment: .trailing)],
|
|
||||||
axis: .horizontal)
|
|
||||||
stack.model = stackModel
|
|
||||||
stack.restack()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 90
|
return 90
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,67 @@
|
|||||||
|
//
|
||||||
|
// ListLeftVariableRadioButtonAndPaymentMethod.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Kruthika KP on 27/02/20.
|
||||||
|
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
@objcMembers open class ListLeftVariableRadioButtonAndPaymentMethod: TableViewCell {
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// MARK: - Outlets
|
||||||
|
//-----------------------------------------------------
|
||||||
|
let radioButton = RadioButton(frame: .zero)
|
||||||
|
let leftImage = MFLoadImageView(pinnedEdges: .all)
|
||||||
|
let eyebrowHeadlineBodyLink = EyebrowHeadlineBodyLink()
|
||||||
|
var stack: Stack<StackModel>
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// MARK: - Initializers
|
||||||
|
//-----------------------------------------------------
|
||||||
|
public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
|
stack = Stack<StackModel>.createStack(with: [(view: radioButton, model: StackItemModel(horizontalAlignment: .fill)),
|
||||||
|
(view: leftImage, model: StackItemModel(horizontalAlignment: .fill)),
|
||||||
|
(view: eyebrowHeadlineBodyLink, model: StackItemModel(horizontalAlignment: .leading))],
|
||||||
|
axis: .horizontal)
|
||||||
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
|
}
|
||||||
|
|
||||||
|
public required init?(coder aDecoder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// MARK: - View Lifecycle
|
||||||
|
//-----------------------------------------------------
|
||||||
|
override open func setupView() {
|
||||||
|
super.setupView()
|
||||||
|
addMolecule(stack)
|
||||||
|
stack.restack()
|
||||||
|
eyebrowHeadlineBodyLink.body.textColor = .mvmOrangeAA
|
||||||
|
eyebrowHeadlineBodyLink.headline.styleBoldBodySmall(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
open override func reset() {
|
||||||
|
super.reset()
|
||||||
|
eyebrowHeadlineBodyLink.body.textColor = .mvmOrangeAA
|
||||||
|
eyebrowHeadlineBodyLink.headline.styleBoldBodySmall(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------
|
||||||
|
// 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? ListLeftVariableRadioButtonAndPaymentMethodModel else { return}
|
||||||
|
radioButton.set(with: model.radioButton, delegateObject, additionalData)
|
||||||
|
leftImage.set(with: model.image, delegateObject, additionalData)
|
||||||
|
eyebrowHeadlineBodyLink.set(with: model.eyebrowHeadlineBodyLink, delegateObject, additionalData)
|
||||||
|
}
|
||||||
|
|
||||||
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
|
return 90
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
//
|
||||||
|
// ListLeftVariableRadioButtonAndPaymentMethodModel.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Kruthika KP on 27/02/20.
|
||||||
|
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public class ListLeftVariableRadioButtonAndPaymentMethodModel: ListItemModel, MoleculeModelProtocol {
|
||||||
|
public static var identifier: String = "listLVRBImg"
|
||||||
|
public var radioButton: RadioButtonModel
|
||||||
|
public var image: ImageViewModel
|
||||||
|
public var eyebrowHeadlineBodyLink: EyebrowHeadlineBodyLinkModel
|
||||||
|
|
||||||
|
public init(radioButton: RadioButtonModel, image: ImageViewModel, eyebrowHeadlineBodyLink:EyebrowHeadlineBodyLinkModel) {
|
||||||
|
self.radioButton = radioButton
|
||||||
|
self.image = image
|
||||||
|
self.eyebrowHeadlineBodyLink = eyebrowHeadlineBodyLink
|
||||||
|
super.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
public override func setDefaults() {
|
||||||
|
super.setDefaults()
|
||||||
|
if image.width == nil, image.height == nil {
|
||||||
|
image.width = 32
|
||||||
|
image.height = 32
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum CodingKeys: String, CodingKey {
|
||||||
|
case moleculeName
|
||||||
|
case radioButton
|
||||||
|
case image
|
||||||
|
case eyebrowHeadlineBodyLink
|
||||||
|
}
|
||||||
|
|
||||||
|
required public init(from decoder: Decoder) throws {
|
||||||
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
|
radioButton = try typeContainer.decode(RadioButtonModel.self, forKey: .radioButton)
|
||||||
|
image = try typeContainer.decode(ImageViewModel.self, forKey: .image)
|
||||||
|
eyebrowHeadlineBodyLink = try typeContainer.decode(EyebrowHeadlineBodyLinkModel.self, forKey: .eyebrowHeadlineBodyLink)
|
||||||
|
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(radioButton, forKey: .radioButton)
|
||||||
|
try container.encode(image, forKey: .image)
|
||||||
|
try container.encode(eyebrowHeadlineBodyLink, forKey: .eyebrowHeadlineBodyLink)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,74 @@
|
|||||||
|
//
|
||||||
|
// ListOneColumnFullWidthTextAllTextAndLinks.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Kruthika KP on 14/02/20.
|
||||||
|
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
@objcMembers public class ListOneColumnFullWidthTextAllTextAndLinks: TableViewCell {
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// MARK: - Outlets
|
||||||
|
//-----------------------------------------------------
|
||||||
|
var stack: Stack<StackModel>
|
||||||
|
let eyebrow = Label.commonLabelB3(true)
|
||||||
|
let headline = Label.commonLabelH3(true)
|
||||||
|
let subHeadline = Label.commonLabelB1(true)
|
||||||
|
let body = Label.commonLabelB2(true)
|
||||||
|
let link = Link()
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// MARK: - Initializers
|
||||||
|
//-----------------------------------------------------
|
||||||
|
public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
|
stack = Stack<StackModel>.createStack(with: [eyebrow, headline, subHeadline, body, link])
|
||||||
|
stack.stackModel?.spacing = 0
|
||||||
|
stack.stackModel?.molecules[4].spacing = 2
|
||||||
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
|
}
|
||||||
|
|
||||||
|
public required init?(coder aDecoder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// MARK: - View Lifecycle
|
||||||
|
//-----------------------------------------------------
|
||||||
|
override open func setupView() {
|
||||||
|
super.setupView()
|
||||||
|
addMolecule(stack)
|
||||||
|
}
|
||||||
|
|
||||||
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?){
|
||||||
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
guard let model = model as? ListOneColumnFullWidthTextAllTextAndLinksModel else { return }
|
||||||
|
eyebrow.setOptional(with: model.eyebrow, delegateObject, additionalData)
|
||||||
|
headline.setOptional(with: model.headline, delegateObject, additionalData)
|
||||||
|
subHeadline.setOptional(with: model.subHeadline, delegateObject, additionalData)
|
||||||
|
body.setOptional(with: model.body, delegateObject, additionalData)
|
||||||
|
link.setOptional(with: model.link, delegateObject, additionalData)
|
||||||
|
|
||||||
|
// Hide labels if neeeded.
|
||||||
|
stack.stackModel?.molecules[0].gone = !eyebrow.hasText
|
||||||
|
stack.stackModel?.molecules[1].gone = !headline.hasText
|
||||||
|
stack.stackModel?.molecules[2].gone = !subHeadline.hasText
|
||||||
|
stack.stackModel?.molecules[3].gone = !body.hasText
|
||||||
|
stack.stackModel?.molecules[4].gone = (link.titleLabel?.text?.count ?? 0) == 0
|
||||||
|
stack.restack()
|
||||||
|
}
|
||||||
|
|
||||||
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
|
return 90
|
||||||
|
}
|
||||||
|
|
||||||
|
open override func reset() {
|
||||||
|
super.reset()
|
||||||
|
eyebrow.styleB3(true)
|
||||||
|
headline.styleH3(true)
|
||||||
|
subHeadline.styleB1(true)
|
||||||
|
body.styleB2(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -11,7 +11,22 @@ import Foundation
|
|||||||
let wheel = GraphView(frame: .zero)
|
let wheel = GraphView(frame: .zero)
|
||||||
let leftLabel = Label.commonLabelB1(true)
|
let leftLabel = Label.commonLabelB1(true)
|
||||||
let rightLabel = Label.commonLabelB2(true)
|
let rightLabel = Label.commonLabelB2(true)
|
||||||
let stack = Stack<StackModel>(frame: .zero)
|
var stack: Stack<StackModel>
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// MARK: - Initializers
|
||||||
|
//-----------------------------------------------------
|
||||||
|
public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
|
stack = Stack<StackModel>.createStack(with: [(view: leftLabel, model: StackItemModel(horizontalAlignment: .leading)),
|
||||||
|
(view: wheel, model: StackItemModel(horizontalAlignment: .fill)),
|
||||||
|
(view: rightLabel, model: StackItemModel(spacing: 4, horizontalAlignment: .fill))],
|
||||||
|
axis: .horizontal)
|
||||||
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
|
}
|
||||||
|
|
||||||
|
public required init?(coder aDecoder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// MARK: - Setup
|
// MARK: - Setup
|
||||||
@ -19,26 +34,19 @@ import Foundation
|
|||||||
open override func setupView() {
|
open override func setupView() {
|
||||||
super.setupView()
|
super.setupView()
|
||||||
rightLabel.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 900), for: .horizontal)
|
rightLabel.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 900), for: .horizontal)
|
||||||
stack.stackItems = [StackItem(andContain: leftLabel),StackItem(andContain: wheel),StackItem(andContain: rightLabel)]
|
|
||||||
addMolecule(stack)
|
addMolecule(stack)
|
||||||
|
stack.restack()
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// MARK: - ModelMoleculeViewProtocol
|
// MARK: - ModelMoleculeViewProtocol
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? ListRVWheelModel else { return }
|
guard let model = model as? ListRVWheelModel else { return }
|
||||||
leftLabel.setWithModel(model.leftLabel, delegateObject, additionalData)
|
leftLabel.set(with: model.leftLabel, delegateObject, additionalData)
|
||||||
rightLabel.setWithModel(model.rightLabel, delegateObject, additionalData)
|
rightLabel.set(with: model.rightLabel, delegateObject, additionalData)
|
||||||
wheel.setWithModel(model.wheel, delegateObject, additionalData)
|
wheel.set(with: model.wheel, delegateObject, additionalData)
|
||||||
|
|
||||||
let stackModel = StackModel(molecules: [StackItemModel(horizontalAlignment: .leading),
|
|
||||||
StackItemModel(horizontalAlignment: .fill),
|
|
||||||
StackItemModel(spacing: 4, horizontalAlignment: .fill)],
|
|
||||||
axis: .horizontal)
|
|
||||||
stack.model = stackModel
|
|
||||||
stack.restack()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
@ -50,7 +58,7 @@ import Foundation
|
|||||||
rightLabel.styleB2(true)
|
rightLabel.styleB2(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 70
|
return 70
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,34 +15,42 @@ import Foundation
|
|||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
let leftLabel = Label.commonLabelB1(true)
|
let leftLabel = Label.commonLabelB1(true)
|
||||||
let rightImage = MFLoadImageView(pinnedEdges: .all)
|
let rightImage = MFLoadImageView(pinnedEdges: .all)
|
||||||
let stack = Stack<StackModel>(frame: .zero)
|
var stack: Stack<StackModel>
|
||||||
|
|
||||||
|
//-----------------------------------------------------
|
||||||
|
// MARK: - Initializers
|
||||||
|
//-----------------------------------------------------
|
||||||
|
public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
|
stack = Stack<StackModel>.createStack(with: [(view: leftLabel, model: StackItemModel(horizontalAlignment: .leading)),
|
||||||
|
(view: rightImage, model: StackItemModel(horizontalAlignment: .fill))],
|
||||||
|
axis: .horizontal)
|
||||||
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
|
}
|
||||||
|
|
||||||
|
public required init?(coder aDecoder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------
|
//-----------------------------------------------------
|
||||||
// MARK: - View Lifecycle
|
// MARK: - View Lifecycle
|
||||||
//-------------------------------------------------------
|
//-------------------------------------------------------
|
||||||
override open func setupView() {
|
override open func setupView() {
|
||||||
super.setupView()
|
super.setupView()
|
||||||
stack.stackItems = [StackItem(andContain: leftLabel),StackItem(andContain: rightImage)]
|
|
||||||
addMolecule(stack)
|
addMolecule(stack)
|
||||||
|
stack.restack()
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
// MARK: - Molecule
|
// MARK: - Molecule
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? ListRightVariablePaymentsModel else { return }
|
guard let model = model as? ListRightVariablePaymentsModel else { return }
|
||||||
leftLabel.setWithModel(model.leftLabel, delegateObject, additionalData)
|
leftLabel.set(with: model.leftLabel, delegateObject, additionalData)
|
||||||
rightImage.setWithModel(model.image, delegateObject, additionalData)
|
rightImage.set(with: model.image, delegateObject, additionalData)
|
||||||
|
|
||||||
let stackModel = StackModel(molecules: [StackItemModel(horizontalAlignment: .leading),
|
|
||||||
StackItemModel(horizontalAlignment: .fill)],
|
|
||||||
axis: .horizontal)
|
|
||||||
stack.model = stackModel
|
|
||||||
stack.restack()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 65
|
return 65
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,65 +0,0 @@
|
|||||||
//
|
|
||||||
// ListOneColumnFullWidthTextAllTextAndLinks.swift
|
|
||||||
// MVMCoreUI
|
|
||||||
//
|
|
||||||
// Created by Kruthika KP on 14/02/20.
|
|
||||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Foundation
|
|
||||||
|
|
||||||
@objcMembers public class ListOneColumnFullWidthTextAllTextAndLinks: TableViewCell {
|
|
||||||
|
|
||||||
//-----------------------------------------------------
|
|
||||||
// MARK: - Outlets
|
|
||||||
//-----------------------------------------------------
|
|
||||||
|
|
||||||
let stack = Stack<StackModel>(frame: .zero)
|
|
||||||
let eyebrow = Label.commonLabelB3(true)
|
|
||||||
let headline = Label.commonLabelH3(true)
|
|
||||||
let subHeadline = Label.commonLabelB1(true)
|
|
||||||
let body = Label.commonLabelB2(true)
|
|
||||||
let link = Link()
|
|
||||||
|
|
||||||
//-----------------------------------------------------
|
|
||||||
// MARK: - View Lifecycle
|
|
||||||
//-------------------------------------------------------
|
|
||||||
override open func setupView() {
|
|
||||||
super.setupView()
|
|
||||||
stack.stackItems = [StackItem(andContain: eyebrow),
|
|
||||||
StackItem(andContain: headline),
|
|
||||||
StackItem(andContain: subHeadline),
|
|
||||||
StackItem(andContain: body),
|
|
||||||
StackItem(andContain: link)]
|
|
||||||
addMolecule(stack)
|
|
||||||
}
|
|
||||||
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?){
|
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
|
||||||
guard let model = model as? ListOneColumnFullWidthTextAllTextAndLinksModel else { return}
|
|
||||||
eyebrow.setWithModel(model.eyebrow, delegateObject, additionalData)
|
|
||||||
headline.setWithModel(model.headline, delegateObject, additionalData)
|
|
||||||
subHeadline.setWithModel(model.subHeadline, delegateObject, additionalData)
|
|
||||||
body.setWithModel(model.body, delegateObject, additionalData)
|
|
||||||
link.setWithModel(model.link, delegateObject, additionalData)
|
|
||||||
let stackModel = StackModel(molecules: [StackItemModel(spacing: 2, gone: !eyebrow.hasText),
|
|
||||||
StackItemModel(spacing: 2, gone: !headline.hasText),
|
|
||||||
StackItemModel(spacing: 2, gone: !subHeadline.hasText),
|
|
||||||
StackItemModel(spacing: 2, gone: !body.hasText),
|
|
||||||
StackItemModel(spacing: 2, gone: (link.titleLabel?.text?.count ?? 0) == 0)])
|
|
||||||
stack.model = stackModel
|
|
||||||
stack.restack()
|
|
||||||
}
|
|
||||||
|
|
||||||
open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat?{
|
|
||||||
return 90
|
|
||||||
}
|
|
||||||
|
|
||||||
open override func reset() {
|
|
||||||
super.reset()
|
|
||||||
eyebrow.styleB3(true)
|
|
||||||
headline.styleH3(true)
|
|
||||||
subHeadline.styleB1(true)
|
|
||||||
body.styleB2(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -13,35 +13,38 @@ import Foundation
|
|||||||
let leftHeadlineBody = HeadlineBody(frame: .zero)
|
let leftHeadlineBody = HeadlineBody(frame: .zero)
|
||||||
let centerHeadLineBody = HeadlineBody(frame: .zero)
|
let centerHeadLineBody = HeadlineBody(frame: .zero)
|
||||||
let rightHeadLineBody = HeadlineBody(frame: .zero)
|
let rightHeadLineBody = HeadlineBody(frame: .zero)
|
||||||
let stack = Stack<StackModel>(frame: .zero)
|
var stack: Stack<StackModel>
|
||||||
|
|
||||||
|
// MARK: - Initializers
|
||||||
|
public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||||
|
stack = Stack<StackModel>.createStack(with: [(view: leftHeadlineBody, model: StackItemModel(percent: 33, horizontalAlignment: .leading)),
|
||||||
|
(view: centerHeadLineBody, model: StackItemModel(percent: 34, horizontalAlignment: .center)),
|
||||||
|
(view: rightHeadLineBody, model: StackItemModel(percent: 33, horizontalAlignment: .trailing))],
|
||||||
|
axis: .horizontal)
|
||||||
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||||
|
}
|
||||||
|
|
||||||
|
public required init?(coder aDecoder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - MFViewProtocol
|
// MARK: - MFViewProtocol
|
||||||
open override func setupView() {
|
open override func setupView() {
|
||||||
super.setupView()
|
super.setupView()
|
||||||
|
|
||||||
//using stackItems to align the three headlineBody
|
|
||||||
stack.stackItems = [StackItem(andContain: leftHeadlineBody),StackItem(andContain: centerHeadLineBody),StackItem(andContain: rightHeadLineBody)]
|
|
||||||
addMolecule(stack)
|
addMolecule(stack)
|
||||||
|
stack.restack()
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? ListThreeColumnPlanDataDividerModel else { return }
|
guard let model = model as? ListThreeColumnPlanDataDividerModel else { return }
|
||||||
leftHeadlineBody.setWithModel(model.leftHeadlineBody, delegateObject, additionalData)
|
leftHeadlineBody.set(with: model.leftHeadlineBody, delegateObject, additionalData)
|
||||||
centerHeadLineBody.setWithModel(model.centerHeadlineBody, delegateObject, additionalData)
|
centerHeadLineBody.set(with: model.centerHeadlineBody, delegateObject, additionalData)
|
||||||
rightHeadLineBody.setWithModel(model.rightHeadlineBody, delegateObject, additionalData)
|
rightHeadLineBody.set(with: model.rightHeadlineBody, delegateObject, additionalData)
|
||||||
|
|
||||||
// Create a stack model to use for the internal stack and set the alignment of models
|
|
||||||
let stackModel = StackModel(molecules: [StackItemModel(percent: 33, horizontalAlignment: .leading),
|
|
||||||
StackItemModel(percent: 34, horizontalAlignment: .center),
|
|
||||||
StackItemModel(percent: 33, horizontalAlignment: .trailing)],
|
|
||||||
axis: .horizontal)
|
|
||||||
stack.model = stackModel
|
|
||||||
stack.restack()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {
|
||||||
return 121
|
return 121
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -94,14 +94,14 @@ open class DoughnutChart: View {
|
|||||||
doughnutLayer.transform = CATransform3DMakeRotation(1 * .pi, 0.0, 0.0, 1.0)
|
doughnutLayer.transform = CATransform3DMakeRotation(1 * .pi, 0.0, 0.0, 1.0)
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
clearLayers()
|
clearLayers()
|
||||||
guard let doughnutChartModel = doughnutChartModel else {
|
guard let doughnutChartModel = doughnutChartModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
titleLabel.setWithModel(doughnutChartModel.title, delegateObject, additionalData)
|
titleLabel.setOptional(with: doughnutChartModel.title, delegateObject, additionalData)
|
||||||
subTitleLabel.setWithModel(doughnutChartModel.subtitle, delegateObject, additionalData)
|
subTitleLabel.setOptional(with: doughnutChartModel.subtitle, delegateObject, additionalData)
|
||||||
titleLabel.textAlignment = .center
|
titleLabel.textAlignment = .center
|
||||||
subTitleLabel.textAlignment = .center
|
subTitleLabel.textAlignment = .center
|
||||||
updateLabelContainer()
|
updateLabelContainer()
|
||||||
|
|||||||
@ -65,11 +65,11 @@ import Foundation
|
|||||||
colorLablesStack.reset()
|
colorLablesStack.reset()
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let model = doughnutChartModel else { return }
|
guard let model = doughnutChartModel else { return }
|
||||||
doughnutChart.setWithModel(model, delegateObject, additionalData)
|
doughnutChart.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
// Create the stack model
|
// Create the stack model
|
||||||
var stackItems: [MoleculeStackItemModel] = []
|
var stackItems: [MoleculeStackItemModel] = []
|
||||||
@ -78,12 +78,12 @@ import Foundation
|
|||||||
}
|
}
|
||||||
let stack = MoleculeStackModel(molecules: stackItems)
|
let stack = MoleculeStackModel(molecules: stackItems)
|
||||||
stack.verticalAlignment = .fill
|
stack.verticalAlignment = .fill
|
||||||
colorLablesStack.setWithModel(stack, delegateObject, additionalData)
|
colorLablesStack.set(with: stack, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable : Any]?) {
|
open override func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable : Any]?) {
|
||||||
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: DoughnutChartModel.self) else { return }
|
guard let json = json, let model = try? Self.decodeJSONToModel(json: json, type: DoughnutChartModel.self) else { return }
|
||||||
setWithModel(model, delegateObject, additionalData)
|
set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,12 +94,12 @@ extension DoughnutChartView: MVMCoreUIViewConstrainingProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ColorViewLabelsStack: MoleculeStackView {
|
class ColorViewLabelsStack: MoleculeStackView {
|
||||||
override func createStackItemsFromModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
override func createStackItemsFromModel(_ model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
guard let stackItemModels = stackModel?.molecules else { return }
|
guard let stackItemModels = stackModel?.molecules else { return }
|
||||||
for model in stackItemModels {
|
for model in stackItemModels {
|
||||||
let view = ColorViewWithLabel()
|
let view = ColorViewWithLabel()
|
||||||
let stackItem = MoleculeStackItem(andContain: view)
|
let stackItem = MoleculeStackItem(andContain: view)
|
||||||
stackItem.setWithModel(model, delegateObject, additionalData)
|
stackItem.set(with: model, delegateObject, additionalData)
|
||||||
stackItems.append(stackItem)
|
stackItems.append(stackItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -149,12 +149,12 @@ class ColorViewWithLabel: View {
|
|||||||
label.setAsMolecule()
|
label.setAsMolecule()
|
||||||
}
|
}
|
||||||
|
|
||||||
override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let chartItemModel = model as? DoughnutChartItemModel else {
|
guard let chartItemModel = model as? DoughnutChartItemModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
label.setWithModel(chartItemModel.label, delegateObject, additionalData)
|
label.set(with: chartItemModel.label, delegateObject, additionalData)
|
||||||
colorView.backgroundColor = chartItemModel.color.uiColor
|
colorView.backgroundColor = chartItemModel.color.uiColor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,14 +51,14 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 95
|
return 95
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? ImageHeadlineBodyModel else { return }
|
guard let model = model as? ImageHeadlineBodyModel else { return }
|
||||||
headlineBody.setWithModel(model.headlineBody, delegateObject, additionalData)
|
headlineBody.set(with: model.headlineBody, delegateObject, additionalData)
|
||||||
imageView.setWithModel(model.image, delegateObject, additionalData)
|
imageView.set(with: model.image, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -101,23 +101,24 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - ModelMoleculeViewProtocol
|
// MARK: - ModelMoleculeViewProtocol
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
guard let model = molecule as? TwoButtonViewModel else { return 0 }
|
guard let model = model as? TwoButtonViewModel,
|
||||||
return PillButton.estimatedHeight(forRow: model.primaryButton ?? model.secondaryButton, delegateObject: delegateObject)
|
let buttonModel = model.primaryButton ?? model.secondaryButton else { return 0 }
|
||||||
|
return PillButton.estimatedHeight(with: buttonModel, delegateObject)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? TwoButtonViewModel else { return }
|
guard let model = model as? TwoButtonViewModel else { return }
|
||||||
if let secondaryModel = model.secondaryButton {
|
if let secondaryModel = model.secondaryButton {
|
||||||
showSecondaryButton()
|
showSecondaryButton()
|
||||||
secondaryButton.setWithModel(secondaryModel, delegateObject, additionalData)
|
secondaryButton.set(with: secondaryModel, delegateObject, additionalData)
|
||||||
} else {
|
} else {
|
||||||
hideSecondaryButton()
|
hideSecondaryButton()
|
||||||
}
|
}
|
||||||
if let primaryModel = model.primaryButton {
|
if let primaryModel = model.primaryButton {
|
||||||
showPrimaryButton()
|
showPrimaryButton()
|
||||||
primaryButton.setWithModel(primaryModel, delegateObject, additionalData)
|
primaryButton.set(with: primaryModel, delegateObject, additionalData)
|
||||||
} else {
|
} else {
|
||||||
hidePrimaryButton()
|
hidePrimaryButton()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,12 +44,12 @@ import UIKit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
dropDownListItemModel = model as? DropDownListItemModel
|
|
||||||
self.delegateObject = delegateObject
|
self.delegateObject = delegateObject
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
if let dropDownListItemModel = model as? DropDownListItemModel {
|
||||||
dropDown.setWithModel(dropDownListItemModel?.dropDown, delegateObject, additionalData)
|
dropDown.set(with: dropDownListItemModel.dropDown, delegateObject, additionalData)
|
||||||
|
}
|
||||||
dropDown.observingTextFieldDelegate = delegateObject?.uiTextFieldDelegate as? ObservingTextFieldDelegate
|
dropDown.observingTextFieldDelegate = delegateObject?.uiTextFieldDelegate as? ObservingTextFieldDelegate
|
||||||
dropDown.uiTextFieldDelegate = delegateObject?.uiTextFieldDelegate
|
dropDown.uiTextFieldDelegate = delegateObject?.uiTextFieldDelegate
|
||||||
}
|
}
|
||||||
@ -59,7 +59,7 @@ import UIKit
|
|||||||
bottomSeparatorView?.setStyle(.none)
|
bottomSeparatorView?.setStyle(.none)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 80
|
return 80
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -68,7 +68,7 @@ open class MoleculeCollectionViewCell: UICollectionViewCell, MVMCoreUIMoleculeVi
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
guard let collectionModel = model as? CarouselItemModel else {
|
guard let collectionModel = model as? CarouselItemModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -98,7 +98,7 @@ open class MoleculeCollectionViewCell: UICollectionViewCell, MVMCoreUIMoleculeVi
|
|||||||
molecule = moleculeView
|
molecule = moleculeView
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
(molecule as? ModelMoleculeViewProtocol)?.setWithModel(collectionModel.molecule, delegateObject, additionalData)
|
(molecule as? ModelMoleculeViewProtocol)?.set(with: collectionModel.molecule, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let molecule = molecule else { return }
|
guard let molecule = molecule else { return }
|
||||||
@ -114,10 +114,10 @@ open class MoleculeCollectionViewCell: UICollectionViewCell, MVMCoreUIMoleculeVi
|
|||||||
backgroundColor = .white
|
backgroundColor = .white
|
||||||
}
|
}
|
||||||
|
|
||||||
public class func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
public class func nameForReuse(_ model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||||
guard let molecule = (model as? CarouselItemModel)?.molecule,
|
guard let molecule = (model as? CarouselItemModel)?.molecule,
|
||||||
let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(molecule) as? ModelMoleculeViewProtocol.Type,
|
let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(molecule) as? ModelMoleculeViewProtocol.Type,
|
||||||
let name = moleculeClass.nameForReuse(molecule, delegateObject) ?? molecule.moleculeName else {
|
let name = moleculeClass.nameForReuse(with: molecule, delegateObject) ?? molecule.moleculeName else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return name
|
return name
|
||||||
|
|||||||
@ -13,13 +13,13 @@ import UIKit
|
|||||||
|
|
||||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let model = model as? MoleculeListItemModel else { return }
|
guard let model = model as? MoleculeListItemModel else { return }
|
||||||
|
|
||||||
if molecule != nil {
|
if molecule != nil {
|
||||||
(molecule as? ModelMoleculeViewProtocol)?.setWithModel(model.molecule, delegateObject, additionalData)
|
(molecule as? ModelMoleculeViewProtocol)?.set(with: model.molecule, delegateObject, additionalData)
|
||||||
|
|
||||||
} else if let moleculeView = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(model.molecule, delegateObject, false) {
|
} else if let moleculeView = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(model.molecule, delegateObject, false) {
|
||||||
addMolecule(moleculeView)
|
addMolecule(moleculeView)
|
||||||
@ -28,11 +28,11 @@ import UIKit
|
|||||||
containerHelper.set(with: model, for: molecule as? MVMCoreUIViewConstrainingProtocol)
|
containerHelper.set(with: model, for: molecule as? MVMCoreUIViewConstrainingProtocol)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
public override class func nameForReuse(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||||
guard let moleculeModel = (model as? MoleculeListItemModel)?.molecule else { return "\(self)<>" }
|
guard let moleculeModel = (model as? MoleculeListItemModel)?.molecule else { return "\(self)<>" }
|
||||||
|
|
||||||
let className = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(moleculeModel) as? ModelMoleculeViewProtocol.Type
|
let className = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(moleculeModel) as? ModelMoleculeViewProtocol.Type
|
||||||
let moleculeName = className?.nameForReuse(moleculeModel, delegateObject) ?? moleculeModel.moleculeName ?? ""
|
let moleculeName = className?.nameForReuse(with: moleculeModel, delegateObject) ?? moleculeModel.moleculeName ?? ""
|
||||||
|
|
||||||
return "\(self)<\(moleculeName)>"
|
return "\(self)<\(moleculeName)>"
|
||||||
}
|
}
|
||||||
@ -45,10 +45,10 @@ import UIKit
|
|||||||
return theClass.requiredModules?(moleculeJSON, delegateObject: delegateObject, error: error)
|
return theClass.requiredModules?(moleculeJSON, delegateObject: delegateObject, error: error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {
|
||||||
guard let moleculeModel = (molecule as? MoleculeContainerModel)?.molecule,
|
guard let moleculeModel = (model as? MoleculeContainerModel)?.molecule,
|
||||||
let classType = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(moleculeModel) as? ModelMoleculeViewProtocol.Type,
|
let classType = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(moleculeModel) as? ModelMoleculeViewProtocol.Type,
|
||||||
let height = classType.estimatedHeight(forRow: moleculeModel, delegateObject: delegateObject)
|
let height = classType.estimatedHeight(with: moleculeModel, delegateObject)
|
||||||
else { return 80 }
|
else { return 80 }
|
||||||
|
|
||||||
return max(2 * PaddingDefaultVerticalSpacing3, height)
|
return max(2 * PaddingDefaultVerticalSpacing3, height)
|
||||||
|
|||||||
@ -36,8 +36,8 @@ import UIKit
|
|||||||
|
|
||||||
// MARK: - MoleculeDelegateProtocol
|
// MARK: - MoleculeDelegateProtocol
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
self.delegateObject = delegateObject
|
self.delegateObject = delegateObject
|
||||||
tabs.reloadData()
|
tabs.reloadData()
|
||||||
}
|
}
|
||||||
@ -47,7 +47,7 @@ import UIKit
|
|||||||
tabs.reset()
|
tabs.reset()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 46
|
return 46
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -114,14 +114,14 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 197
|
return 197
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? ActionDetailWithImageModel else { return }
|
guard let model = model as? ActionDetailWithImageModel else { return }
|
||||||
headlineBodyButton.setWithModel(model.headlineBodyButton, delegateObject, additionalData)
|
headlineBodyButton.set(with: model.headlineBodyButton, delegateObject, additionalData)
|
||||||
imageLoader.setWithModel(model.image, delegateObject, additionalData)
|
imageLoader.set(with: model.image, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -166,19 +166,19 @@ import UIKit
|
|||||||
return 34
|
return 34
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? CornerLabelsModel else { return }
|
guard let model = model as? CornerLabelsModel else { return }
|
||||||
if middleView != nil {
|
if middleView != nil {
|
||||||
(middleView as? ModelMoleculeViewProtocol)?.setWithModel(model, delegateObject, additionalData)
|
(middleView as? ModelMoleculeViewProtocol)?.set(with: model, delegateObject, additionalData)
|
||||||
} else if let moleculeModel = model.molecule, let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(moleculeModel, delegateObject) {
|
} else if let moleculeModel = model.molecule, let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(moleculeModel, delegateObject) {
|
||||||
addMiddleView(molecule)
|
addMiddleView(molecule)
|
||||||
}
|
}
|
||||||
|
|
||||||
topLeftLabel.setWithModel(model.topLeftLabel, delegateObject, additionalData)
|
topLeftLabel.setOptional(with: model.topLeftLabel, delegateObject, additionalData)
|
||||||
topRightLabel.setWithModel(model.topRightLabel, delegateObject, additionalData)
|
topRightLabel.setOptional(with: model.topRightLabel, delegateObject, additionalData)
|
||||||
bottomLeftLabel.setWithModel(model.bottomLeftLabel, delegateObject, additionalData)
|
bottomLeftLabel.setOptional(with: model.bottomLeftLabel, delegateObject, additionalData)
|
||||||
bottomRightLabel.setWithModel(model.bottomRightLabel, delegateObject, additionalData)
|
bottomRightLabel.setOptional(with: model.bottomRightLabel, delegateObject, additionalData)
|
||||||
|
|
||||||
topLabelToMoleculeConstraint?.constant = (middleView != nil && (topLeftLabel.hasText || topRightLabel.hasText)) ? spaceAboveMolecule : 0
|
topLabelToMoleculeConstraint?.constant = (middleView != nil && (topLeftLabel.hasText || topRightLabel.hasText)) ? spaceAboveMolecule : 0
|
||||||
bottomLabelToMoleculeConstraint?.constant = (middleView != nil && (bottomLeftLabel.hasText || bottomRightLabel.hasText)) ? spaceBelowMolecule : 0
|
bottomLabelToMoleculeConstraint?.constant = (middleView != nil && (bottomLeftLabel.hasText || bottomRightLabel.hasText)) ? spaceBelowMolecule : 0
|
||||||
|
|||||||
@ -38,15 +38,16 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? HeadlineBodyLinkToggleModel else { return }
|
guard let model = model as? HeadlineBodyLinkToggleModel else { return }
|
||||||
headlineBodyLink.setWithModel(model.headlineBodyLink, delegateObject, additionalData)
|
headlineBodyLink.set(with: model.headlineBodyLink, delegateObject, additionalData)
|
||||||
toggle.setWithModel(model.toggle, delegateObject, additionalData)
|
toggle.set(with: model.toggle, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return HeadlineBodyLink.estimatedHeight(forRow: (molecule as? HeadlineBodyLinkToggleModel)?.headlineBodyLink, delegateObject: delegateObject)
|
guard let model = model as? HeadlineBodyLinkToggleModel else { return nil }
|
||||||
|
return HeadlineBodyLink.estimatedHeight(with: model.headlineBodyLink, delegateObject)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,18 +35,18 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let headlineBodyToggleModel = model as? HeadlineBodyToggleModel else {
|
guard let headlineBodyToggleModel = model as? HeadlineBodyToggleModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
setWithJSON(headlineBodyToggleModel.toJSON(), delegateObject: delegateObject, additionalData: additionalData)
|
setWithJSON(headlineBodyToggleModel.toJSON(), delegateObject: delegateObject, additionalData: additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
open class override func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open class override func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
guard let model = molecule as? HeadlineBodyToggleModel,
|
guard let model = model as? HeadlineBodyToggleModel,
|
||||||
let toggleHeight = Toggle.estimatedHeight(forRow: model.toggle, delegateObject: delegateObject),
|
let toggleHeight = Toggle.estimatedHeight(with: model.toggle, delegateObject),
|
||||||
let headlineBody = HeadlineBody.estimatedHeight(forRow: model.headlineBody, delegateObject: delegateObject) else { return nil }
|
let headlineBody = HeadlineBody.estimatedHeight(with: model.headlineBody, delegateObject) else { return nil }
|
||||||
return max(toggleHeight, headlineBody)
|
return max(toggleHeight, headlineBody)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -32,19 +32,19 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
open override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
guard let model = molecule as? LabelToggleModel,
|
guard let model = model as? LabelToggleModel,
|
||||||
let toggleHeight = Toggle.estimatedHeight(forRow: model.toggle, delegateObject: delegateObject),
|
let toggleHeight = Toggle.estimatedHeight(with: model.toggle, delegateObject),
|
||||||
let labelHeight = Label.estimatedHeight(forRow: model.label, delegateObject: delegateObject) else { return nil }
|
let labelHeight = Label.estimatedHeight(with: model.label, delegateObject) else { return nil }
|
||||||
return max(toggleHeight, labelHeight)
|
return max(toggleHeight, labelHeight)
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
guard let labelToggleModel = model as? LabelToggleModel else {
|
guard let labelToggleModel = model as? LabelToggleModel else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
label.setWithModel(labelToggleModel.label, delegateObject, additionalData)
|
label.set(with: labelToggleModel.label, delegateObject, additionalData)
|
||||||
toggle.setWithModel(labelToggleModel.toggle, delegateObject, additionalData)
|
toggle.set(with: labelToggleModel.toggle, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||||
|
|||||||
@ -9,20 +9,20 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public protocol ModelMoleculeViewProtocol {
|
public protocol ModelMoleculeViewProtocol {
|
||||||
func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?)
|
func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?)
|
||||||
static func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String?
|
static func nameForReuse(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String?
|
||||||
static func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat?
|
static func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat?
|
||||||
static func requiredModules(_ molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]?
|
static func requiredModules(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]?
|
||||||
}
|
}
|
||||||
|
|
||||||
extension ModelMoleculeViewProtocol {
|
extension ModelMoleculeViewProtocol {
|
||||||
public static func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
public static func nameForReuse(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||||
return model?.moleculeName
|
return model.moleculeName
|
||||||
}
|
}
|
||||||
public static func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public static func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
public static func requiredModules(_ molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
public static func requiredModules(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
// Temporary
|
// Temporary
|
||||||
@ -31,4 +31,10 @@ extension ModelMoleculeViewProtocol {
|
|||||||
let decoder = JSONDecoder()
|
let decoder = JSONDecoder()
|
||||||
return try decoder.decode(type, from: data)
|
return try decoder.decode(type, from: data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func setOptional<T: MoleculeModelProtocol>(with model: T?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
|
if let model = model {
|
||||||
|
set(with: model, delegateObject, additionalData)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,8 +19,8 @@ open class ModuleMolecule: Container {
|
|||||||
super.setupView()
|
super.setupView()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let moduleMoleculeModel = model as? ModuleMoleculeModel,
|
guard let moduleMoleculeModel = model as? ModuleMoleculeModel,
|
||||||
let moduleModel = delegateObject?.moleculeDelegate?.getModuleWithName(moduleMoleculeModel.moduleName) else {
|
let moduleModel = delegateObject?.moleculeDelegate?.getModuleWithName(moduleMoleculeModel.moduleName) else {
|
||||||
@ -42,36 +42,36 @@ open class ModuleMolecule: Container {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
moduleMolecule?.setWithModel(model, delegateObject, additionalData)
|
moduleMolecule?.set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
|
|
||||||
guard let moduleMolecule = molecule as? ModuleMoleculeModel,
|
guard let moduleMolecule = model as? ModuleMoleculeModel,
|
||||||
let moduleModel = delegateObject?.moleculeDelegate?.getModuleWithName(moduleMolecule.moduleName),
|
let moduleModel = delegateObject?.moleculeDelegate?.getModuleWithName(moduleMolecule.moduleName),
|
||||||
let classType = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(moduleModel) as? ModelMoleculeViewProtocol.Type,
|
let classType = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(moduleModel) as? ModelMoleculeViewProtocol.Type,
|
||||||
let height = classType.estimatedHeight(forRow: moduleModel, delegateObject: delegateObject)else {
|
let height = classType.estimatedHeight(with: moduleModel, delegateObject) else {
|
||||||
// Critical error
|
// Critical error
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return height
|
return height
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
public override class func nameForReuse(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||||
guard let moduleMolecule = model as? ModuleMoleculeModel,
|
guard let moduleMolecule = model as? ModuleMoleculeModel,
|
||||||
let moduleModel = delegateObject?.moleculeDelegate?.getModuleWithName(moduleMolecule.moduleName),
|
let moduleModel = delegateObject?.moleculeDelegate?.getModuleWithName(moduleMolecule.moduleName),
|
||||||
let classType = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(moduleModel) as? ModelMoleculeViewProtocol.Type,
|
let classType = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(moduleModel) as? ModelMoleculeViewProtocol.Type,
|
||||||
let name = classType.nameForReuse(moduleModel, delegateObject) else {
|
let name = classType.nameForReuse(with: moduleModel, delegateObject) else {
|
||||||
// Critical error
|
// Critical error
|
||||||
return "moduleMolecule<>"
|
return "moduleMolecule<>"
|
||||||
}
|
}
|
||||||
return name
|
return name
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func requiredModules(_ molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
public override class func requiredModules(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
||||||
|
|
||||||
guard let moduleName = (molecule as? ModuleMoleculeModel)?.moduleName,
|
guard let moduleName = (model as? ModuleMoleculeModel)?.moduleName,
|
||||||
let _ = delegateObject?.moleculeDelegate?.getModuleWithName(moduleName) else {
|
let _ = delegateObject?.moleculeDelegate?.getModuleWithName(moduleName) else {
|
||||||
if let errorObject = MVMCoreErrorObject(title: nil, message: MVMCoreGetterUtility.hardcodedString(withKey: HardcodedErrorUnableToProcess), code: CoreUIErrorCode.ErrorCodeModuleMolecule.rawValue, domain: ErrorDomainNative, location: String(describing: self)) {
|
if let errorObject = MVMCoreErrorObject(title: nil, message: MVMCoreGetterUtility.hardcodedString(withKey: HardcodedErrorUnableToProcess), code: CoreUIErrorCode.ErrorCodeModuleMolecule.rawValue, domain: ErrorDomainNative, location: String(describing: self)) {
|
||||||
error?.pointee = errorObject
|
error?.pointee = errorObject
|
||||||
|
|||||||
@ -37,11 +37,11 @@ public class MoleculeHeaderView: MoleculeContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - ModelMoleculeViewProtocol
|
// MARK: - ModelMoleculeViewProtocol
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let headerModel = headerModel else { return }
|
guard let headerModel = headerModel else { return }
|
||||||
if let lineModel = headerModel.line {
|
if let lineModel = headerModel.line {
|
||||||
line.setWithModel(lineModel, delegateObject, additionalData)
|
line.set(with: lineModel, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,18 +9,18 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
@objcMembers public class RadioButtonModel: NSObject {
|
@objcMembers public class RadioButtonSelectionHelper: NSObject {
|
||||||
|
|
||||||
private var selectedRadioButton: RadioButton?
|
private var selectedRadioButton: RadioButton?
|
||||||
private var fieldGroupName: String?
|
private var fieldGroupName: String?
|
||||||
|
|
||||||
public static func setupForRadioButtonGroup(radioButton: RadioButton, formValidator: FormValidator?) -> RadioButtonModel {
|
public static func setupForRadioButtonGroup(radioButton: RadioButton, formValidator: FormValidator?) -> RadioButtonSelectionHelper {
|
||||||
guard let groupName = radioButton.radioGroupName,
|
guard let groupName = radioButton.radioGroupName,
|
||||||
let formValidator = formValidator else {
|
let formValidator = formValidator else {
|
||||||
return RadioButtonModel()
|
return RadioButtonSelectionHelper()
|
||||||
}
|
}
|
||||||
|
|
||||||
let radioButtonModel = formValidator.radioButtonsModelByGroup[groupName] ?? RadioButtonModel()
|
let radioButtonModel = formValidator.radioButtonsModelByGroup[groupName] ?? RadioButtonSelectionHelper()
|
||||||
radioButtonModel.fieldGroupName = radioButton.formFieldGroupName()
|
radioButtonModel.fieldGroupName = radioButton.formFieldGroupName()
|
||||||
formValidator.radioButtonsModelByGroup[groupName] = radioButtonModel
|
formValidator.radioButtonsModelByGroup[groupName] = radioButtonModel
|
||||||
return radioButtonModel
|
return radioButtonModel
|
||||||
@ -34,7 +34,7 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - FormValidationFormFieldProtocol
|
// MARK: - FormValidationFormFieldProtocol
|
||||||
extension RadioButtonModel: FormValidationFormFieldProtocol {
|
extension RadioButtonSelectionHelper: FormValidationFormFieldProtocol {
|
||||||
public func formFieldGroupName() -> String? {
|
public func formFieldGroupName() -> String? {
|
||||||
return selectedRadioButton?.formFieldGroupName() ?? self.fieldGroupName
|
return selectedRadioButton?.formFieldGroupName() ?? self.fieldGroupName
|
||||||
}
|
}
|
||||||
@ -29,10 +29,10 @@ import UIKit
|
|||||||
constraint.isActive = true
|
constraint.isActive = true
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
if let casteModel = model as? ScrollerModel {
|
if let casteModel = model as? ScrollerModel {
|
||||||
if view != nil {
|
if view != nil {
|
||||||
(view as? ModelMoleculeViewProtocol)?.setWithModel(casteModel.molecule, delegateObject, additionalData)
|
(view as? ModelMoleculeViewProtocol)?.set(with: casteModel.molecule, delegateObject, additionalData)
|
||||||
} else {
|
} else {
|
||||||
if let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(casteModel.molecule, delegateObject) {
|
if let molecule = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(casteModel.molecule, delegateObject) {
|
||||||
contentView.addSubview(molecule)
|
contentView.addSubview(molecule)
|
||||||
@ -41,6 +41,6 @@ import UIKit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
@objcMembers open class EyebrowHeadlineBodyLink: Container {
|
@objcMembers open class EyebrowHeadlineBodyLink: View {
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Outlets
|
// MARK: - Outlets
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -29,10 +29,8 @@ import UIKit
|
|||||||
|
|
||||||
open override func setupView() {
|
open override func setupView() {
|
||||||
super.setupView()
|
super.setupView()
|
||||||
stack.stackItems = [StackItem(andContain: eyebrow),
|
stack.setAndCreateModel(with: [eyebrow, headline, body, link])
|
||||||
StackItem(andContain: headline),
|
stack.stackModel?.spacing = 0
|
||||||
StackItem(andContain: body),
|
|
||||||
StackItem(andContain: link)]
|
|
||||||
addSubview(stack)
|
addSubview(stack)
|
||||||
NSLayoutConstraint.constraintPinSubview(toSuperview: stack)
|
NSLayoutConstraint.constraintPinSubview(toSuperview: stack)
|
||||||
}
|
}
|
||||||
@ -49,7 +47,6 @@ import UIKit
|
|||||||
open override func reset() {
|
open override func reset() {
|
||||||
super.reset()
|
super.reset()
|
||||||
stack.reset()
|
stack.reset()
|
||||||
stack.stackModel?.spacing = 0
|
|
||||||
eyebrow.styleB3(true)
|
eyebrow.styleB3(true)
|
||||||
headline.styleB1(true)
|
headline.styleB1(true)
|
||||||
body.styleB2(true)
|
body.styleB2(true)
|
||||||
@ -59,25 +56,23 @@ import UIKit
|
|||||||
// MARK: - ModelMoleculeViewProtocol
|
// MARK: - ModelMoleculeViewProtocol
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
eyebrow.setWithModel(casteModel?.eyebrow, delegateObject, additionalData)
|
eyebrow.setOptional(with: casteModel?.eyebrow, delegateObject, additionalData)
|
||||||
headline.setWithModel(casteModel?.headline, delegateObject, additionalData)
|
headline.setOptional(with: casteModel?.headline, delegateObject, additionalData)
|
||||||
body.setWithModel(casteModel?.body, delegateObject, additionalData)
|
body.setOptional(with: casteModel?.body, delegateObject, additionalData)
|
||||||
link.setWithModel(casteModel?.link, delegateObject, additionalData)
|
link.setOptional(with: casteModel?.link, delegateObject, additionalData)
|
||||||
|
|
||||||
// Create a stack model to use for the internal stack.
|
// Hide labels if neeeded.
|
||||||
let stackModel = StackModel(molecules: [StackItemModel(gone: !eyebrow.hasText),
|
stack.stackModel?.molecules[0].gone = !eyebrow.hasText
|
||||||
StackItemModel(gone: !headline.hasText),
|
stack.stackModel?.molecules[1].gone = !headline.hasText
|
||||||
StackItemModel(gone: !body.hasText),
|
stack.stackModel?.molecules[2].gone = !body.hasText
|
||||||
StackItemModel(gone: (link.titleLabel?.text?.count ?? 0) == 0)])
|
stack.stackModel?.molecules[3].gone = (link.titleLabel?.text?.count ?? 0) == 0
|
||||||
stackModel.spacing = 0
|
|
||||||
stack.model = stackModel
|
|
||||||
stack.restack()
|
stack.restack()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 65
|
return 65
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,17 +73,17 @@ import Foundation
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 320
|
return 320
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? HeadlineBodyCaretLinkImageModel else { return }
|
guard let model = model as? HeadlineBodyCaretLinkImageModel else { return }
|
||||||
headlineBody.setWithModel(model.headlineBody, delegateObject, additionalData)
|
headlineBody.set(with: model.headlineBody, delegateObject, additionalData)
|
||||||
caretButton.setWithModel(model.caretLink, delegateObject, additionalData)
|
caretButton.setOptional(with: model.caretLink, delegateObject, additionalData)
|
||||||
caretButton.isHidden = model.caretLink == nil
|
caretButton.isHidden = model.caretLink == nil
|
||||||
backgroundImageView.setWithModel(model.image, delegateObject, additionalData)
|
backgroundImageView.set(with: model.image, delegateObject, additionalData)
|
||||||
backgroundImageView.alignFillHorizontal()
|
backgroundImageView.alignFillHorizontal()
|
||||||
backgroundImageView.alignFillVertical()
|
backgroundImageView.alignFillVertical()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -124,19 +124,19 @@ open class HeadlineBody: View {
|
|||||||
// MARK: - ModelMoleculeViewProtocol
|
// MARK: - ModelMoleculeViewProtocol
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 58
|
return 58
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
|
|
||||||
guard let headlineBodyModel = model as? HeadlineBodyModel else { return }
|
guard let headlineBodyModel = model as? HeadlineBodyModel else { return }
|
||||||
|
|
||||||
style(with: headlineBodyModel.style)
|
style(with: headlineBodyModel.style)
|
||||||
|
|
||||||
headlineLabel.setWithModel(headlineBodyModel.headline, delegateObject, additionalData)
|
headlineLabel.setOptional(with: headlineBodyModel.headline, delegateObject, additionalData)
|
||||||
messageLabel.setWithModel(headlineBodyModel.body, delegateObject, additionalData)
|
messageLabel.setOptional(with: headlineBodyModel.body, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|||||||
@ -108,15 +108,15 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 320
|
return 320
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? HeadlineBodyButtonModel else { return }
|
guard let model = model as? HeadlineBodyButtonModel else { return }
|
||||||
buttonHeadlinePadding = model.buttonHeadlinePadding
|
buttonHeadlinePadding = model.buttonHeadlinePadding
|
||||||
headlineBody.setWithModel(model.headlineBody, delegateObject, additionalData)
|
headlineBody.set(with: model.headlineBody, delegateObject, additionalData)
|
||||||
button.setWithModel(model.button, delegateObject, additionalData)
|
button.set(with: model.button, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,14 +67,14 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK:- ModelMoleculeViewProtocol
|
// MARK:- ModelMoleculeViewProtocol
|
||||||
open override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? HeadlineBodyLinkModel else { return }
|
guard let model = model as? HeadlineBodyLinkModel else { return }
|
||||||
headlineBody.setWithModel(model.headlineBody, delegateObject, additionalData)
|
headlineBody.set(with: model.headlineBody, delegateObject, additionalData)
|
||||||
link.setWithModel(model.link, delegateObject, additionalData)
|
link.set(with: model.link, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
public override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
return 60
|
return 60
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import UIKit
|
|||||||
|
|
||||||
// This class is only temporarily necessary. Eventually we will have initWithModel instad of just init for moleculeviews, which will remove this need.
|
// This class is only temporarily necessary. Eventually we will have initWithModel instad of just init for moleculeviews, which will remove this need.
|
||||||
open class StringAndMoleculeStack: MoleculeStackView {
|
open class StringAndMoleculeStack: MoleculeStackView {
|
||||||
override func createStackItemsFromModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
override open func createStackItemsFromModel(_ model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
guard let model = stackModel else { return }
|
guard let model = stackModel else { return }
|
||||||
for stackItemModel in model.molecules {
|
for stackItemModel in model.molecules {
|
||||||
guard let stringAndMoleculeModel = stackItemModel.molecule as? StringAndMoleculeModel,
|
guard let stringAndMoleculeModel = stackItemModel.molecule as? StringAndMoleculeModel,
|
||||||
@ -21,7 +21,7 @@ open class StringAndMoleculeStack: MoleculeStackView {
|
|||||||
}
|
}
|
||||||
let view = StringAndMoleculeView(string: stringAndMoleculeModel.string, molecule: molecule)
|
let view = StringAndMoleculeView(string: stringAndMoleculeModel.string, molecule: molecule)
|
||||||
let stackItem = MoleculeStackItem(andContain: view)
|
let stackItem = MoleculeStackItem(andContain: view)
|
||||||
stackItem.setWithModel(stackItemModel, delegateObject, nil)
|
stackItem.set(with: stackItemModel, delegateObject, nil)
|
||||||
stackItems.append(stackItem)
|
stackItems.append(stackItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -76,11 +76,11 @@ open class StringAndMoleculeView: View {
|
|||||||
(molecule as? MoleculeViewProtocol)?.reset?()
|
(molecule as? MoleculeViewProtocol)?.reset?()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let model = model as? StringAndMoleculeModel else { return }
|
guard let model = model as? StringAndMoleculeModel else { return }
|
||||||
label.text = model.string
|
label.text = model.string
|
||||||
molecule.setWithModel(model.molecule, delegateObject, additionalData)
|
molecule.set(with: model.molecule, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateLeftViewWidthConstraint(_ percent: CGFloat) {
|
func updateLeftViewWidthConstraint(_ percent: CGFloat) {
|
||||||
|
|||||||
@ -83,8 +83,8 @@ open class Carousel: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
guard let carouselModel = model as? CarouselModel else { return }
|
guard let carouselModel = model as? CarouselModel else { return }
|
||||||
collectionView.backgroundColor = backgroundColor
|
collectionView.backgroundColor = backgroundColor
|
||||||
collectionView.layer.borderColor = backgroundColor?.cgColor
|
collectionView.layer.borderColor = backgroundColor?.cgColor
|
||||||
@ -159,7 +159,7 @@ open class Carousel: View {
|
|||||||
/// Returns the (identifier, class) of the molecule for the given map.
|
/// Returns the (identifier, class) of the molecule for the given map.
|
||||||
func getMoleculeInfo(with molecule: MoleculeModelProtocol, delegateObject: MVMCoreUIDelegateObject?) -> (identifier: String, class: AnyClass, molecule: MoleculeModelProtocol)? {
|
func getMoleculeInfo(with molecule: MoleculeModelProtocol, delegateObject: MVMCoreUIDelegateObject?) -> (identifier: String, class: AnyClass, molecule: MoleculeModelProtocol)? {
|
||||||
guard let className = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(molecule) ,
|
guard let className = MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(molecule) ,
|
||||||
let moleculeName = (className as? ModelMoleculeViewProtocol.Type)?.nameForReuse(molecule, delegateObject) ?? molecule.moleculeName else {
|
let moleculeName = (className as? ModelMoleculeViewProtocol.Type)?.nameForReuse(with: molecule, delegateObject) ?? molecule.moleculeName else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return (moleculeName, className, molecule)
|
return (moleculeName, className, molecule)
|
||||||
@ -275,7 +275,7 @@ extension Carousel: UICollectionViewDataSource {
|
|||||||
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: moleculeInfo.identifier, for: indexPath)
|
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: moleculeInfo.identifier, for: indexPath)
|
||||||
if let protocolCell = cell as? MVMCoreUIMoleculeViewProtocol & ModelMoleculeViewProtocol {
|
if let protocolCell = cell as? MVMCoreUIMoleculeViewProtocol & ModelMoleculeViewProtocol {
|
||||||
protocolCell.reset?()
|
protocolCell.reset?()
|
||||||
protocolCell.setWithModel(moleculeInfo.molecule, nil, nil)
|
protocolCell.set(with: moleculeInfo.molecule, nil, nil)
|
||||||
protocolCell.updateView(collectionView.bounds.width)
|
protocolCell.updateView(collectionView.bounds.width)
|
||||||
}
|
}
|
||||||
setAccessiblity(cell, index: indexPath.row)
|
setAccessiblity(cell, index: indexPath.row)
|
||||||
|
|||||||
@ -33,7 +33,7 @@ open class MoleculeStackView: Stack<MoleculeStackModel> {
|
|||||||
|
|
||||||
// MARK: - Adding to stack
|
// MARK: - Adding to stack
|
||||||
/// Creates all of the stackItems for the stackItemModels
|
/// Creates all of the stackItems for the stackItemModels
|
||||||
override func createStackItemsFromModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
override open func createStackItemsFromModel(_ model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {
|
||||||
guard let stackItemModels = stackModel?.molecules else { return }
|
guard let stackItemModels = stackModel?.molecules else { return }
|
||||||
for model in stackItemModels {
|
for model in stackItemModels {
|
||||||
if let stackItem = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(model, delegateObject) as? MoleculeStackItem {
|
if let stackItem = MVMCoreUIMoleculeMappingObject.shared()?.createMolecule(model, delegateObject) as? MoleculeStackItem {
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
|
|
||||||
open class Stack<T>: Container where T: StackModelProtocol {
|
open class Stack<T>: Container where T: (StackModelProtocol & MoleculeModelProtocol) {
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -24,7 +24,7 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
// MARK: - Helpers
|
// MARK: - Helpers
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public func pinView(_ view: UIView, toView: UIView, attribute: NSLayoutConstraint.Attribute, relation: NSLayoutConstraint.Relation, priority: UILayoutPriority, constant: CGFloat) {
|
open func pinView(_ view: UIView, toView: UIView, attribute: NSLayoutConstraint.Attribute, relation: NSLayoutConstraint.Relation, priority: UILayoutPriority, constant: CGFloat) {
|
||||||
|
|
||||||
let constraint = NSLayoutConstraint(item: view, attribute: attribute, relatedBy: relation, toItem: toView, attribute: attribute, multiplier: 1.0, constant: constant)
|
let constraint = NSLayoutConstraint(item: view, attribute: attribute, relatedBy: relation, toItem: toView, attribute: attribute, multiplier: 1.0, constant: constant)
|
||||||
constraint.priority = priority
|
constraint.priority = priority
|
||||||
@ -32,7 +32,7 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Restacks the existing items.
|
/// Restacks the existing items.
|
||||||
func restack() {
|
open func restack() {
|
||||||
removeAllItemViews()
|
removeAllItemViews()
|
||||||
guard let stackModel = stackModel else { return }
|
guard let stackModel = stackModel else { return }
|
||||||
let stackItems = self.stackItems
|
let stackItems = self.stackItems
|
||||||
@ -49,7 +49,7 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Removes all stack items views from the view.
|
/// Removes all stack items views from the view.
|
||||||
func removeAllItemViews() {
|
open func removeAllItemViews() {
|
||||||
for item in stackItems {
|
for item in stackItems {
|
||||||
item.removeFromSuperview()
|
item.removeFromSuperview()
|
||||||
}
|
}
|
||||||
@ -63,20 +63,52 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
super.init(frame: frame)
|
super.init(frame: frame)
|
||||||
}
|
}
|
||||||
|
|
||||||
public init(withJSON json: [AnyHashable: Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
/// The main initializer for model driven
|
||||||
|
public init(with model: T, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
|
||||||
|
super.init(frame: .zero)
|
||||||
|
setOptional(with: model, delegateObject, additionalData)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The main initializer for hardcode driven
|
||||||
|
public init(with model: T, stackItems: [UIView]) {
|
||||||
super.init(frame: CGRect.zero)
|
super.init(frame: CGRect.zero)
|
||||||
setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData)
|
self.model = model
|
||||||
|
self.stackItems = stackItems
|
||||||
}
|
}
|
||||||
|
|
||||||
public required init?(coder aDecoder: NSCoder) {
|
public required init?(coder aDecoder: NSCoder) {
|
||||||
fatalError("init(coder:) has not been implemented")
|
fatalError("init(coder:) has not been implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns a Stack created with a StackModel and StackItems containing the passed in views.
|
||||||
|
public static func createStack(with views: [UIView], axis: NSLayoutConstraint.Axis? = nil, spacing: CGFloat? = nil) -> Stack<StackModel> {
|
||||||
|
var items: [StackItem] = []
|
||||||
|
var models: [StackItemModel] = []
|
||||||
|
for view in views {
|
||||||
|
items.append(StackItem(andContain: view))
|
||||||
|
models.append(StackItemModel())
|
||||||
|
}
|
||||||
|
let model = StackModel(molecules: models, axis: axis, spacing: spacing)
|
||||||
|
return Stack<StackModel>(with: model, stackItems: items)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns a Stack created with a StackModel containing the passed in views and using the passed in stackitems.
|
||||||
|
public static func createStack(with viewModels:[(view: UIView, model: StackItemModel)], axis: NSLayoutConstraint.Axis? = nil, spacing: CGFloat? = nil) -> Stack<StackModel> {
|
||||||
|
var stackItems: [StackItem] = []
|
||||||
|
var models: [StackItemModel] = []
|
||||||
|
for item in viewModels {
|
||||||
|
stackItems.append(StackItem(andContain: item.view))
|
||||||
|
models.append(item.model)
|
||||||
|
}
|
||||||
|
let model = StackModel(molecules: models, axis: axis, spacing: spacing)
|
||||||
|
return Stack<StackModel>(with: model, stackItems: stackItems)
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - MFViewProtocol
|
// MARK: - MFViewProtocol
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public override func setupView() {
|
open override func setupView() {
|
||||||
super.setupView()
|
super.setupView()
|
||||||
guard contentView.superview == nil else { return }
|
guard contentView.superview == nil else { return }
|
||||||
MVMCoreUIUtility.setMarginsFor(contentView, leading: 0, top: 0, trailing: 0, bottom: 0)
|
MVMCoreUIUtility.setMarginsFor(contentView, leading: 0, top: 0, trailing: 0, bottom: 0)
|
||||||
@ -88,7 +120,7 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
contentView.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
contentView.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func updateView(_ size: CGFloat) {
|
open override func updateView(_ size: CGFloat) {
|
||||||
super.updateView(size)
|
super.updateView(size)
|
||||||
for item in stackItems {
|
for item in stackItems {
|
||||||
(item as? MVMCoreViewProtocol)?.updateView(size)
|
(item as? MVMCoreViewProtocol)?.updateView(size)
|
||||||
@ -99,7 +131,7 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public override func reset() {
|
open override func reset() {
|
||||||
super.reset()
|
super.reset()
|
||||||
backgroundColor = .clear
|
backgroundColor = .clear
|
||||||
for item in stackItems {
|
for item in stackItems {
|
||||||
@ -107,13 +139,13 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setWithModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
let previousModel = self.model
|
let previousModel = self.model
|
||||||
super.setWithModel(model, delegateObject, additionalData)
|
super.set(with: model, delegateObject, additionalData)
|
||||||
removeAllItemViews()
|
removeAllItemViews()
|
||||||
|
|
||||||
// If the items in the stack are different, clear them, create new ones.
|
// If the items in the stack are different, clear them, create new ones.
|
||||||
if (previousModel == nil) || Self.nameForReuse(previousModel, delegateObject) != Self.nameForReuse(model, delegateObject) {
|
if (previousModel == nil) || Self.nameForReuse(with: previousModel!, delegateObject) != Self.nameForReuse(with: model, delegateObject) {
|
||||||
stackItems = []
|
stackItems = []
|
||||||
createStackItemsFromModel(model, delegateObject, additionalData)
|
createStackItemsFromModel(model, delegateObject, additionalData)
|
||||||
} else {
|
} else {
|
||||||
@ -123,7 +155,7 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
restack()
|
restack()
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func nameForReuse(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
open override class func nameForReuse(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> String? {
|
||||||
// This will aggregate names of molecules to make an id.
|
// This will aggregate names of molecules to make an id.
|
||||||
guard let model = model as? T else {
|
guard let model = model as? T else {
|
||||||
return "stack<>"
|
return "stack<>"
|
||||||
@ -132,7 +164,7 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
for case let item in model.molecules {
|
for case let item in model.molecules {
|
||||||
if let moleculeName = item.moleculeName {
|
if let moleculeName = item.moleculeName {
|
||||||
if let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping[moleculeName] as? ModelMoleculeViewProtocol.Type,
|
if let moleculeClass = MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping[moleculeName] as? ModelMoleculeViewProtocol.Type,
|
||||||
let nameForReuse = moleculeClass.nameForReuse(item, delegateObject) {
|
let nameForReuse = moleculeClass.nameForReuse(with: item, delegateObject) {
|
||||||
name.append(nameForReuse + ",")
|
name.append(nameForReuse + ",")
|
||||||
} else {
|
} else {
|
||||||
name.append(moleculeName + ",")
|
name.append(moleculeName + ",")
|
||||||
@ -144,14 +176,14 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Need to update to take into account first spacing flag
|
// Need to update to take into account first spacing flag
|
||||||
public override class func estimatedHeight(forRow molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {
|
||||||
guard let model = molecule as? T else { return 0 }
|
guard let model = model as? T else { return 0 }
|
||||||
let horizontal = model.axis == .horizontal
|
let horizontal = model.axis == .horizontal
|
||||||
var estimatedHeight: CGFloat = 0
|
var estimatedHeight: CGFloat = 0
|
||||||
|
|
||||||
for case let item in model.molecules {
|
for case let item in model.molecules {
|
||||||
if item.gone { continue }
|
if item.gone { continue }
|
||||||
let height = (MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(item) as? ModelMoleculeViewProtocol.Type)?.estimatedHeight(forRow: item, delegateObject: delegateObject) ?? 0
|
let height = (MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(item) as? ModelMoleculeViewProtocol.Type)?.estimatedHeight(with: item, delegateObject) ?? 0
|
||||||
if !horizontal {
|
if !horizontal {
|
||||||
// Vertical stack aggregates the items
|
// Vertical stack aggregates the items
|
||||||
let spacing = item.spacing ?? model.spacing
|
let spacing = item.spacing ?? model.spacing
|
||||||
@ -164,11 +196,11 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
return estimatedHeight
|
return estimatedHeight
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func requiredModules(_ molecule: MoleculeModelProtocol?, delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
open override class func requiredModules(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, error: AutoreleasingUnsafeMutablePointer<MVMCoreErrorObject?>?) -> [String]? {
|
||||||
guard let model = molecule as? T else { return nil }
|
guard let model = model as? T else { return nil }
|
||||||
var modules: [String] = []
|
var modules: [String] = []
|
||||||
for case let item in model.molecules {
|
for case let item in model.molecules {
|
||||||
if let modulesForMolecule = (MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(item) as? ModelMoleculeViewProtocol.Type)?.requiredModules(item, delegateObject: delegateObject, error: error) {
|
if let modulesForMolecule = (MVMCoreUIMoleculeMappingObject.shared()?.getMoleculeClass(item) as? ModelMoleculeViewProtocol.Type)?.requiredModules(with: item, delegateObject, error: error) {
|
||||||
modules += modulesForMolecule
|
modules += modulesForMolecule
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -180,19 +212,43 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
/// Can be subclassed to create views when we get stack item models and have no views yet
|
/// Can be subclassed to create views when we get stack item models and have no views yet
|
||||||
func createStackItemsFromModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { }
|
open func createStackItemsFromModel(_ model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { }
|
||||||
|
|
||||||
/// Can be subclassed to set stack items with model when we already have views
|
/// Can be subclassed to set stack items with model when we already have views
|
||||||
func setStackItemsFromModel(_ model: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
open func setStackItemsFromModel(_ model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||||
guard let models = stackModel?.molecules else { return }
|
guard let models = stackModel?.molecules else { return }
|
||||||
for (index, element) in models.enumerated() {
|
for (index, element) in models.enumerated() {
|
||||||
(stackItems[index] as? ModelMoleculeViewProtocol)?.setWithModel(element, delegateObject, additionalData)
|
(stackItems[index] as? ModelMoleculeViewProtocol)?.set(with: element, delegateObject, additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Adding to stack
|
// MARK: - Adding to stack
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
/// Sets the stack with StackItems containing the passed in views and creates a StackModel with StackItems.
|
||||||
|
open func setAndCreateModel(with views: [UIView]) {
|
||||||
|
var stackItems: [StackItem] = []
|
||||||
|
var models: [StackItemModel] = []
|
||||||
|
for view in views {
|
||||||
|
stackItems.append(StackItem(andContain: view))
|
||||||
|
models.append(StackItemModel())
|
||||||
|
}
|
||||||
|
self.stackItems = stackItems
|
||||||
|
model = StackModel(molecules: models)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Sets the stack with StackItems containing the passed in views and sets the StackModel with models.
|
||||||
|
open func set(with viewModels:[(view: UIView, model: T.AnyStackItemModel)]) {
|
||||||
|
guard var stackModel = self.stackModel else { return }
|
||||||
|
var stackItems: [StackItem] = []
|
||||||
|
var models: [T.AnyStackItemModel] = []
|
||||||
|
for item in viewModels {
|
||||||
|
stackItems.append(StackItem(andContain: item.view))
|
||||||
|
models.append(item.model)
|
||||||
|
}
|
||||||
|
stackModel.molecules = models
|
||||||
|
self.stackItems = stackItems
|
||||||
|
}
|
||||||
|
|
||||||
/// Gets the percent modifier. This value is used to help properly calculate percent for stack items when spacing is involved.
|
/// Gets the percent modifier. This value is used to help properly calculate percent for stack items when spacing is involved.
|
||||||
private func getTotalSpace() -> CGFloat {
|
private func getTotalSpace() -> CGFloat {
|
||||||
@ -237,7 +293,7 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
if first {
|
if first {
|
||||||
pinView(view, toView: contentView, attribute: .top, relation: .equal, priority: .required, constant: stackModel.useStackSpacingBeforeFirstItem ? spacing : model.spacing ?? 0)
|
pinView(view, toView: contentView, attribute: .top, relation: .equal, priority: .required, constant: stackModel.useStackSpacingBeforeFirstItem ? spacing : model.spacing ?? 0)
|
||||||
} else if let previousView = stackItems.last(where: { item in
|
} else if let previousView = stackItems.last(where: { item in
|
||||||
return !model.gone
|
return item.superview != nil
|
||||||
}) {
|
}) {
|
||||||
view.topAnchor.constraint(equalTo: previousView.bottomAnchor, constant: spacing).isActive = true
|
view.topAnchor.constraint(equalTo: previousView.bottomAnchor, constant: spacing).isActive = true
|
||||||
}
|
}
|
||||||
@ -256,7 +312,7 @@ open class Stack<T>: Container where T: StackModelProtocol {
|
|||||||
// First horizontal item has no spacing by default unless told otherwise.
|
// First horizontal item has no spacing by default unless told otherwise.
|
||||||
pinView(view, toView: contentView, attribute: .leading, relation: .equal, priority: .required, constant: stackModel.useStackSpacingBeforeFirstItem ? spacing : model.spacing ?? 0)
|
pinView(view, toView: contentView, attribute: .leading, relation: .equal, priority: .required, constant: stackModel.useStackSpacingBeforeFirstItem ? spacing : model.spacing ?? 0)
|
||||||
} else if let previousView = stackItems.last(where: { item in
|
} else if let previousView = stackItems.last(where: { item in
|
||||||
return !model.gone
|
return item.superview != nil
|
||||||
}) {
|
}) {
|
||||||
view.leftAnchor.constraint(equalTo: previousView.rightAnchor, constant: spacing).isActive = true
|
view.leftAnchor.constraint(equalTo: previousView.rightAnchor, constant: spacing).isActive = true
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,16 +9,23 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
@objcMembers public class StackModel: StackModelProtocol, MoleculeModelProtocol {
|
@objcMembers public class StackModel: StackModelProtocol, MoleculeModelProtocol {
|
||||||
|
static let defaultSpacing: CGFloat = 16.0
|
||||||
|
|
||||||
public static var identifier: String = "simpleStack"
|
public static var identifier: String = "simpleStack"
|
||||||
public var backgroundColor: Color?
|
public var backgroundColor: Color?
|
||||||
public var molecules: [StackItemModel]
|
public var molecules: [StackItemModel]
|
||||||
public var axis: NSLayoutConstraint.Axis = .vertical
|
public var axis: NSLayoutConstraint.Axis = .vertical
|
||||||
public var spacing: CGFloat = 16.0
|
public var spacing: CGFloat = StackModel.defaultSpacing
|
||||||
public var useStackSpacingBeforeFirstItem = false
|
public var useStackSpacingBeforeFirstItem = false
|
||||||
|
|
||||||
public init(molecules: [StackItemModel], axis: NSLayoutConstraint.Axis = .vertical) {
|
public init(molecules: [StackItemModel], axis: NSLayoutConstraint.Axis? = nil, spacing: CGFloat? = nil) {
|
||||||
self.molecules = molecules
|
self.molecules = molecules
|
||||||
self.axis = axis
|
if let axis = axis {
|
||||||
|
self.axis = axis
|
||||||
|
}
|
||||||
|
if let spacing = spacing {
|
||||||
|
self.spacing = spacing
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum CodingKeys: String, CodingKey {
|
private enum CodingKeys: String, CodingKey {
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import Foundation
|
|||||||
|
|
||||||
public extension MVMCoreUIMoleculeMappingObject {
|
public extension MVMCoreUIMoleculeMappingObject {
|
||||||
|
|
||||||
func register<M: Model, V: MVMCoreUIMoleculeViewProtocol>(viewClass: V.Type, viewModelClass: M.Type) {
|
func register<M: ModelProtocol, V: MVMCoreUIMoleculeViewProtocol>(viewClass: V.Type, viewModelClass: M.Type) {
|
||||||
try? ModelRegistry.register(viewModelClass)
|
try? ModelRegistry.register(viewModelClass)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(viewClass, forKey: viewModelClass.identifier as NSString)
|
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(viewClass, forKey: viewModelClass.identifier as NSString)
|
||||||
}
|
}
|
||||||
@ -34,7 +34,7 @@ public extension MVMCoreUIMoleculeMappingObject {
|
|||||||
|
|
||||||
let setData = {() in
|
let setData = {() in
|
||||||
if let molecule = molecule as? ModelMoleculeViewProtocol {
|
if let molecule = molecule as? ModelMoleculeViewProtocol {
|
||||||
molecule.setWithModel(model, delegateObject, nil)
|
molecule.set(with: model, delegateObject, nil)
|
||||||
} else {
|
} else {
|
||||||
molecule.setWithJSON?(model.toJSON(), delegateObject: delegateObject, additionalData: nil)
|
molecule.setWithJSON?(model.toJSON(), delegateObject: delegateObject, additionalData: nil)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,6 +29,7 @@ import Foundation
|
|||||||
// Buttons
|
// Buttons
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: PillButton.self, viewModelClass: ButtonModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: PillButton.self, viewModelClass: ButtonModel.self)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: TwoButtonView.self, viewModelClass: TwoButtonViewModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: TwoButtonView.self, viewModelClass: TwoButtonViewModel.self)
|
||||||
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ExternalLink.self, viewModelClass: ExternalLinkModel.self)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: Link.self, viewModelClass: LinkModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: Link.self, viewModelClass: LinkModel.self)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: CaretLink.self, viewModelClass: CaretLinkModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: CaretLink.self, viewModelClass: CaretLinkModel.self)
|
||||||
|
|
||||||
@ -50,6 +51,8 @@ import Foundation
|
|||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: Toggle.self, viewModelClass: ToggleModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: Toggle.self, viewModelClass: ToggleModel.self)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: Checkbox.self, viewModelClass: CheckboxModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: Checkbox.self, viewModelClass: CheckboxModel.self)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: CheckboxLabel.self, viewModelClass: CheckboxLabelModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: CheckboxLabel.self, viewModelClass: CheckboxLabelModel.self)
|
||||||
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: RadioButton.self, viewModelClass: RadioButtonModel.self)
|
||||||
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: Arrow.self, viewModelClass: ArrowModel.self)
|
||||||
|
|
||||||
// Horizontal Combination Molecules
|
// Horizontal Combination Molecules
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: StringAndMoleculeView.self, viewModelClass: StringAndMoleculeModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: StringAndMoleculeView.self, viewModelClass: StringAndMoleculeModel.self)
|
||||||
@ -59,6 +62,7 @@ import Foundation
|
|||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListFourColumnDataUsageDivider.self, viewModelClass: ListFourColumnDataUsageDividerModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListFourColumnDataUsageDivider.self, viewModelClass: ListFourColumnDataUsageDividerModel.self)
|
||||||
|
|
||||||
|
|
||||||
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListOneColumnFullWidthTextAllTextAndLinks.self, viewModelClass: ListOneColumnFullWidthTextAllTextAndLinksModel.self)
|
||||||
|
|
||||||
// Vertical Combination Molecules
|
// Vertical Combination Molecules
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: HeadlineBody.self, viewModelClass: HeadlineBodyModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: HeadlineBody.self, viewModelClass: HeadlineBodyModel.self)
|
||||||
@ -78,6 +82,7 @@ import Foundation
|
|||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListLeftVariableIconWithRightCaret.self, viewModelClass: ListLeftVariableIconWithRightCaretModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListLeftVariableIconWithRightCaret.self, viewModelClass: ListLeftVariableIconWithRightCaretModel.self)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListLeftVariableCheckboxAllTextAndLinks.self, viewModelClass: ListLeftVariableCheckboxAllTextAndLinksModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListLeftVariableCheckboxAllTextAndLinks.self, viewModelClass: ListLeftVariableCheckboxAllTextAndLinksModel.self)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListRightVariablePayments.self, viewModelClass: ListRightVariablePaymentsModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListRightVariablePayments.self, viewModelClass: ListRightVariablePaymentsModel.self)
|
||||||
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: ListLeftVariableRadioButtonAndPaymentMethod.self, viewModelClass: ListLeftVariableRadioButtonAndPaymentMethodModel.self)
|
||||||
|
|
||||||
// List items
|
// List items
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: MoleculeTableViewCell.self, viewModelClass: MoleculeListItemModel.self)
|
MVMCoreUIMoleculeMappingObject.shared()?.register(viewClass: MoleculeTableViewCell.self, viewModelClass: MoleculeListItemModel.self)
|
||||||
@ -107,7 +112,6 @@ import Foundation
|
|||||||
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(DateDropdownEntryField.self, forKey: "dateDropdownEntryField" as NSString)
|
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(DateDropdownEntryField.self, forKey: "dateDropdownEntryField" as NSString)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(Checkbox.self, forKey: "checkbox" as NSString)
|
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(Checkbox.self, forKey: "checkbox" as NSString)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(CheckboxLabel.self, forKey: "checkboxLabel" as NSString)
|
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(CheckboxLabel.self, forKey: "checkboxLabel" as NSString)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(RadioButton.self, forKey: "radioButton" as NSString)
|
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(RadioButtonLabel.self, forKey: "radioButtonLabel" as NSString)
|
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(RadioButtonLabel.self, forKey: "radioButtonLabel" as NSString)
|
||||||
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(MVMCoreUIPageControl.self, forKey: "barsPager" as NSString)
|
MVMCoreUIMoleculeMappingObject.shared()?.moleculeMapping.setObject(MVMCoreUIPageControl.self, forKey: "barsPager" as NSString)
|
||||||
|
|
||||||
|
|||||||
@ -98,6 +98,48 @@ B3 -> Legal
|
|||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// Returns the fonts for these styles. Scales them as needed by default
|
// Returns the fonts for these styles. Scales them as needed by default
|
||||||
|
|
||||||
|
#pragma mark - 3.0 fonts
|
||||||
|
///auto select corresponding font based on font size, DS for font bigger than 15 pt, TX for font smaller than 15 pt
|
||||||
|
+ (nonnull UIFont *)getMVA3FontSize:(CGFloat)size bold:(BOOL)isBold;
|
||||||
|
///Bold 36pt
|
||||||
|
+ (nonnull UIFont *)fontTitle2XLarge:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontTitle2XLarge;
|
||||||
|
///Bold 32pt
|
||||||
|
+ (nonnull UIFont *)fontTitleXLarge:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontTitleXLarge;
|
||||||
|
///Bold 24pt
|
||||||
|
+ (nonnull UIFont *)fontBoldTitleLarge:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontBoldTitleLarge;
|
||||||
|
///Regular 24pt
|
||||||
|
+ (nonnull UIFont *)fontRegularTitleLarge:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontRegularTitleLarge;
|
||||||
|
///Bold 20pt
|
||||||
|
+ (nonnull UIFont *)fontBoldTitleMedium:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontBoldTitleMedium;
|
||||||
|
///Regular 20pt
|
||||||
|
+ (nonnull UIFont *)fontRegularTitleMedium:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontRegularTitleMedium;
|
||||||
|
///Bold 16pt
|
||||||
|
+ (nonnull UIFont *)fontBoldBodyLarge:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontBoldBodyLarge;
|
||||||
|
///Regular 16pt
|
||||||
|
+ (nonnull UIFont *)fontRegularBodyLarge:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontRegularBodyLarge;
|
||||||
|
///Bold 13pt
|
||||||
|
+ (nonnull UIFont *)fontBoldBodySmall:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontBoldBodySmall;
|
||||||
|
///Regular 13pt
|
||||||
|
+ (nonnull UIFont *)fontRegularBodySmall:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontRegularBodySmall;
|
||||||
|
///Bold 11pt
|
||||||
|
+ (nonnull UIFont *)fontBoldMicro:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontBoldMicro;
|
||||||
|
///Regular 11pt
|
||||||
|
+ (nonnull UIFont *)fontRegularMicro:(BOOL)genericScaling;
|
||||||
|
+ (nonnull UIFont *)fontRegularMicro;
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - 2.0 fonts
|
#pragma mark - 2.0 fonts
|
||||||
|
|
||||||
//75Bd 40pt
|
//75Bd 40pt
|
||||||
@ -206,9 +248,50 @@ B3 -> Legal
|
|||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
// Applies the styles to the passed in objects.
|
// Applies the styles to the passed in objects.
|
||||||
|
|
||||||
|
#pragma mark - 3.0 Styles
|
||||||
|
|
||||||
|
+ (void)styleLabelTitle2XLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelTitle2XLarge:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelTitleXLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelTitleXLarge:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldTitleLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelBoldTitleLarge:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularTitleLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelRegularTitleLarge:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldTitleMedium:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelBoldTitleMedium:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularTitleMedium:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelRegularTitleMedium:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldBodyLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelBoldBodyLarge:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularBodyLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelRegularBodyLarge:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldBodySmall:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelBoldBodySmall:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularBodySmall:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelRegularBodySmall:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldMicro:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelBoldMicro:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularMicro:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling;
|
||||||
|
+ (void)styleLabelRegularMicro:(nonnull UILabel *)label;
|
||||||
|
|
||||||
|
/// Will style the label with mva 3.0 fonts based on the string.
|
||||||
|
+ (BOOL)styleMVA3Label:(nonnull UILabel *)label withStyle:(nullable NSString *)style genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
#pragma mark - 2.0 styles
|
#pragma mark - 2.0 styles
|
||||||
|
|
||||||
/// Will style the label based on the string. Accepted values, H1, H2, H3, H32, B1, B2, B3, B20
|
/// Will style the label based on the string. Accepted values, including mva3.0 fonts and 2.0 fonts H1, H2, H3, H32, B1, B2, B3, B20
|
||||||
+ (void)styleLabel:(nonnull UILabel *)label withStyle:(nullable NSString *)style;
|
+ (void)styleLabel:(nonnull UILabel *)label withStyle:(nullable NSString *)style;
|
||||||
+ (void)styleLabel:(nonnull UILabel *)label withStyle:(nullable NSString *)style genericScaling:(BOOL)genericScaling;
|
+ (void)styleLabel:(nonnull UILabel *)label withStyle:(nullable NSString *)style genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
@ -257,6 +340,43 @@ B3 -> Legal
|
|||||||
|
|
||||||
#pragma mark - Attributed Strings
|
#pragma mark - Attributed Strings
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetTitle2XLargeAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetTitle2XLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetTitleXLargeAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetTitleXLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldTitleLargeAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldTitleLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularTitleLargeAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularTitleLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldTitleMediumAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldTitleMediumAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularTitleMediumAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularTitleMediumAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldBodyLargeAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldBodyLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularBodyLargeAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularBodyLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldBodySmallAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldBodySmallAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularBodySmallAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularBodySmallAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldMicroAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldMicroAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularMicroAttributedString:(nullable NSString *)string;
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularMicroAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling;
|
||||||
|
|
||||||
|
|
||||||
/// Will style the string based on the string. Accepted values, H1, H2, H3, H32, B1, B2, B3, B20
|
/// Will style the string based on the string. Accepted values, H1, H2, H3, H32, B1, B2, B3, B20
|
||||||
+ (nonnull NSAttributedString *)styleGetAttributedString:(nullable NSString *)string withStyle:(nullable NSString *)style;
|
+ (nonnull NSAttributedString *)styleGetAttributedString:(nullable NSString *)string withStyle:(nullable NSString *)style;
|
||||||
+ (nonnull NSAttributedString *)styleGetAttributedString:(nullable NSString *)string withStyle:(nullable NSString *)style genericScaling:(BOOL)genericScaling;
|
+ (nonnull NSAttributedString *)styleGetAttributedString:(nullable NSString *)string withStyle:(nullable NSString *)style genericScaling:(BOOL)genericScaling;
|
||||||
|
|||||||
@ -111,6 +111,168 @@ CGFloat const LabelWithInternalButtonLineSpace = 2;
|
|||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark - 3.0 fonts
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)getMVA3FontSize:(CGFloat)size bold:(BOOL)isBold {
|
||||||
|
if (isBold) {
|
||||||
|
if (size >= 15) {
|
||||||
|
return [MFFonts mfFontDSBold:size];
|
||||||
|
} else {
|
||||||
|
return [MFFonts mfFontTXBold:size];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (size >= 15) {
|
||||||
|
return [MFFonts mfFontDSRegular:size];
|
||||||
|
} else {
|
||||||
|
return [MFFonts mfFontTXRegular:size];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontTitle2XLarge:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 36;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontTitle2XLarge {
|
||||||
|
return [self fontTitle2XLarge:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontTitleXLarge:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 32;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:YES];
|
||||||
|
}
|
||||||
|
+ (nonnull UIFont *)fontTitleXLarge{
|
||||||
|
return [self fontTitleXLarge:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontBoldTitleLarge:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 24;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontBoldTitleLarge {
|
||||||
|
return [self fontBoldTitleLarge:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontRegularTitleLarge:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 24;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontRegularTitleLarge {
|
||||||
|
return [self fontRegularTitleLarge:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontBoldTitleMedium:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 20;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontBoldTitleMedium {
|
||||||
|
return [self fontBoldTitleMedium:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontRegularTitleMedium:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 20;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontRegularTitleMedium {
|
||||||
|
return [self fontRegularTitleMedium:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontBoldBodyLarge:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 16;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontBoldBodyLarge {
|
||||||
|
return [self fontBoldBodyLarge:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontRegularBodyLarge:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 16;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontRegularBodyLarge {
|
||||||
|
return [self fontRegularBodyLarge:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontBoldBodySmall:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 13;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontBoldBodySmall {
|
||||||
|
return [self fontBoldBodySmall:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontRegularBodySmall:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 13;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontRegularBodySmall {
|
||||||
|
return [self fontRegularBodySmall:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontBoldMicro:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 11;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontBoldMicro {
|
||||||
|
return [self fontBoldMicro:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontRegularMicro:(BOOL)genericScaling {
|
||||||
|
CGFloat size = 11;
|
||||||
|
if (genericScaling) {
|
||||||
|
size = [self sizeFontGenericForCurrentDevice:size];
|
||||||
|
}
|
||||||
|
return [self getMVA3FontSize:size bold:NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull UIFont *)fontRegularMicro {
|
||||||
|
return [self fontRegularMicro:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - 2.0 fonts
|
#pragma mark - 2.0 fonts
|
||||||
|
|
||||||
+ (nullable UIFont *)fontH1:(BOOL)genericScaling {
|
+ (nullable UIFont *)fontH1:(BOOL)genericScaling {
|
||||||
@ -514,10 +676,165 @@ CGFloat const LabelWithInternalButtonLineSpace = 2;
|
|||||||
return [MFFonts mfFont55Rg:[self sizeFontGenericForCurrentDevice:size]];
|
return [MFFonts mfFont55Rg:[self sizeFontGenericForCurrentDevice:size]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark - 3.0 Styles
|
||||||
|
|
||||||
|
+ (void)styleLabelTitle2XLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontTitle2XLarge:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelTitle2XLarge:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelTitle2XLarge:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelTitleXLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontTitleXLarge:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelTitleXLarge:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelTitleXLarge:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldTitleLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontBoldTitleLarge:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldTitleLarge:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelBoldTitleLarge:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularTitleLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontRegularTitleLarge:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularTitleLarge:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelBoldTitleLarge:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldTitleMedium:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontBoldTitleMedium:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldTitleMedium:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelBoldTitleMedium:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularTitleMedium:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontRegularTitleMedium:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularTitleMedium:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelRegularTitleMedium:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldBodyLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontBoldBodyLarge:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldBodyLarge:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelBoldBodyLarge:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularBodyLarge:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontRegularBodyLarge:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularBodyLarge:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelRegularBodyLarge:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldBodySmall:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontBoldBodySmall:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldBodySmall:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelBoldBodySmall:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularBodySmall:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontRegularBodySmall:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularBodySmall:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelRegularBodySmall:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldMicro:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontBoldMicro:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelBoldMicro:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelBoldMicro:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularMicro:(nonnull UILabel *)label genericScaling:(BOOL)genericScaling {
|
||||||
|
label.font = [MFStyler fontRegularMicro:genericScaling];
|
||||||
|
label.textColor = [UIColor blackColor];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)styleLabelRegularMicro:(nonnull UILabel *)label {
|
||||||
|
[self styleLabelRegularMicro:label genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (BOOL)styleMVA3Label:(nonnull UILabel *)label withStyle:(nullable NSString *)style genericScaling:(BOOL)genericScaling {
|
||||||
|
if ([style isEqualToString:@"Title2XLarge"]) {
|
||||||
|
[self styleLabelTitle2XLarge:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"TitleXLarge"]) {
|
||||||
|
[self styleLabelTitleXLarge:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"BoldTitleLarge"]) {
|
||||||
|
[self styleLabelBoldTitleLarge:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"RegularTitleLarge"]) {
|
||||||
|
[self styleLabelRegularTitleLarge:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"BoldTitleMedium"]) {
|
||||||
|
[self styleLabelBoldTitleMedium:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"RegularTitleMedium"]) {
|
||||||
|
[self styleLabelRegularTitleMedium:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"BoldBodyLarge"]) {
|
||||||
|
[self styleLabelBoldBodyLarge:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"RegularBodyLarge"]) {
|
||||||
|
[self styleLabelRegularBodyLarge:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"BoldBodySmall"]) {
|
||||||
|
[self styleLabelBoldBodySmall:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"RegularBodySmall"]) {
|
||||||
|
[self styleLabelRegularBodySmall:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"BoldMicro"]) {
|
||||||
|
[self styleLabelBoldMicro:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else if ([style isEqualToString:@"RegularMicro"]) {
|
||||||
|
[self styleLabelRegularMicro:label genericScaling:genericScaling];
|
||||||
|
return YES;
|
||||||
|
} else {
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#pragma mark - 2.0 Styles
|
#pragma mark - 2.0 Styles
|
||||||
|
|
||||||
+ (void)styleLabel:(nonnull UILabel *)label withStyle:(nullable NSString *)style genericScaling:(BOOL)genericScaling {
|
+ (void)styleLabel:(nonnull UILabel *)label withStyle:(nullable NSString *)style genericScaling:(BOOL)genericScaling {
|
||||||
if ([style isEqualToString:@"H1"]) {
|
if ([self styleMVA3Label:label withStyle:style genericScaling:genericScaling]) {
|
||||||
|
//try mva 3.0 font first
|
||||||
|
} else if ([style isEqualToString:@"H1"]) {
|
||||||
[self styleLabelH1:label genericScaling:genericScaling];
|
[self styleLabelH1:label genericScaling:genericScaling];
|
||||||
} else if ([style isEqualToString:@"H2"]) {
|
} else if ([style isEqualToString:@"H2"]) {
|
||||||
[self styleLabelH2:label genericScaling:genericScaling];
|
[self styleLabelH2:label genericScaling:genericScaling];
|
||||||
@ -697,6 +1014,105 @@ CGFloat const LabelWithInternalButtonLineSpace = 2;
|
|||||||
return attributedString;
|
return attributedString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetTitle2XLargeAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetTitle2XLargeAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetTitle2XLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontTitle2XLarge:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetTitleXLargeAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetTitleXLargeAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetTitleXLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontTitleXLarge:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldTitleLargeAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetBoldTitleLargeAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldTitleLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontBoldTitleLarge:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularTitleLargeAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetRegularTitleLargeAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularTitleLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontRegularTitleLarge:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldTitleMediumAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetBoldTitleMediumAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldTitleMediumAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontBoldTitleMedium:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularTitleMediumAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetRegularTitleMediumAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularTitleMediumAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontRegularTitleMedium:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldBodyLargeAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetBoldBodyLargeAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldBodyLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontBoldBodyLarge:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularBodyLargeAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetRegularBodyLargeAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularBodyLargeAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontRegularBodyLarge:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldBodySmallAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetBoldBodySmallAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldBodySmallAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontBoldBodySmall:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularBodySmallAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetRegularBodySmallAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularBodySmallAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontRegularBodySmall:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldMicroAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetBoldMicroAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetBoldMicroAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontBoldMicro:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularMicroAttributedString:(nullable NSString *)string {
|
||||||
|
return [MFStyler styleGetRegularBodySmallAttributedString:string genericScaling:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (nonnull NSAttributedString *)styleGetRegularMicroAttributedString:(nullable NSString *)string genericScaling:(BOOL)genericScaling {
|
||||||
|
return [MFStyler styleGetAttributedString:string font:[MFStyler fontRegularMicro:genericScaling] color:[UIColor blackColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//2.0 font get attributedString
|
||||||
+ (nonnull NSAttributedString *)styleGetH1AttributedString:(nullable NSString *)string {
|
+ (nonnull NSAttributedString *)styleGetH1AttributedString:(nullable NSString *)string {
|
||||||
return [MFStyler styleGetH1AttributedString:string genericScaling:YES];
|
return [MFStyler styleGetH1AttributedString:string genericScaling:YES];
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
MVMCoreUI/SupportingFiles/Fonts/VerizonNHGeDS-Bold.otf
Executable file
BIN
MVMCoreUI/SupportingFiles/Fonts/VerizonNHGeDS-Bold.otf
Executable file
Binary file not shown.
BIN
MVMCoreUI/SupportingFiles/Fonts/VerizonNHGeDS-Regular.otf
Executable file
BIN
MVMCoreUI/SupportingFiles/Fonts/VerizonNHGeDS-Regular.otf
Executable file
Binary file not shown.
BIN
MVMCoreUI/SupportingFiles/Fonts/VerizonNHGeTX-Bold.otf
Executable file
BIN
MVMCoreUI/SupportingFiles/Fonts/VerizonNHGeTX-Bold.otf
Executable file
Binary file not shown.
BIN
MVMCoreUI/SupportingFiles/Fonts/VerizonNHGeTX-Regular.otf
Executable file
BIN
MVMCoreUI/SupportingFiles/Fonts/VerizonNHGeTX-Regular.otf
Executable file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user