Merge branch 'feature/monarch' into 'develop'

Feature/monarch

### Summary
(a brief description of the change)

### JIRA Ticket
(ticket URL here or remove the section)

Co-authored-by: Matt Bruce <matt.bruce@verizon.com>
Co-authored-by: Scott Pfeil <Scott.Pfeil3@verizonwireless.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1107
This commit is contained in:
Hedden, Kyle Matthew 2024-06-13 19:50:17 +00:00
commit 18a60437d4
41 changed files with 113 additions and 96 deletions

View File

@ -293,6 +293,7 @@
AF1C336F2885A16A006B1001 /* ActionCollapseNotificationHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1C336E2885A16A006B1001 /* ActionCollapseNotificationHandler.swift */; };
AF1C33712885AE76006B1001 /* MVMCoreUIActionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1C33702885AE76006B1001 /* MVMCoreUIActionHandler.swift */; };
AF1C33732885D481006B1001 /* MVMCoreUIActionOpenPageHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF1C33722885D481006B1001 /* MVMCoreUIActionOpenPageHandler.swift */; };
AF1CEFE82BEA73890001F9A5 /* VDSCoreTokens.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF1CEFE72BEA73890001F9A5 /* VDSCoreTokens.xcframework */; };
AF60A7F62892D2E300919EEB /* ActionDismissNotificationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF60A7F52892D2E300919EEB /* ActionDismissNotificationModel.swift */; };
AF60A7F82892D34D00919EEB /* ActionDismissNotificationHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF60A7F72892D34D00919EEB /* ActionDismissNotificationHandler.swift */; };
AF766D262A3CD4C600749099 /* UIAccessibilityTraits+Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF766D252A3CD4C600749099 /* UIAccessibilityTraits+Codable.swift */; };
@ -607,7 +608,6 @@
EABFC1412763BB8D00E78B40 /* FormLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EABFC1402763BB8D00E78B40 /* FormLabel.swift */; };
EABFC152276913E800E78B40 /* FormLabelModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EABFC151276913E800E78B40 /* FormLabelModel.swift */; };
EACCF38C2ABB346700E0F104 /* VDS-Interpreters.swift in Sources */ = {isa = PBXBuildFile; fileRef = EACCF38B2ABB346700E0F104 /* VDS-Interpreters.swift */; };
EAD715AA2BBC8FAF00DEDA6A /* VDSTokens.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAD715A92BBC8FAF00DEDA6A /* VDSTokens.xcframework */; };
FD99130028E21E4900542CC3 /* RuleNotEqualsModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD9912FF28E21E4900542CC3 /* RuleNotEqualsModel.swift */; };
/* End PBXBuildFile section */
@ -911,6 +911,7 @@
AF1C336E2885A16A006B1001 /* ActionCollapseNotificationHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionCollapseNotificationHandler.swift; sourceTree = "<group>"; };
AF1C33702885AE76006B1001 /* MVMCoreUIActionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MVMCoreUIActionHandler.swift; sourceTree = "<group>"; };
AF1C33722885D481006B1001 /* MVMCoreUIActionOpenPageHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MVMCoreUIActionOpenPageHandler.swift; sourceTree = "<group>"; };
AF1CEFE72BEA73890001F9A5 /* VDSCoreTokens.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = VDSCoreTokens.xcframework; path = ../SharedFrameworks/VDSCoreTokens.xcframework; sourceTree = "<group>"; };
AF60A7F52892D2E300919EEB /* ActionDismissNotificationModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionDismissNotificationModel.swift; sourceTree = "<group>"; };
AF60A7F72892D34D00919EEB /* ActionDismissNotificationHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionDismissNotificationHandler.swift; sourceTree = "<group>"; };
AF766D252A3CD4C600749099 /* UIAccessibilityTraits+Codable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIAccessibilityTraits+Codable.swift"; sourceTree = "<group>"; };
@ -1244,9 +1245,9 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
AF1CEFE82BEA73890001F9A5 /* VDSCoreTokens.xcframework in Frameworks */,
D29DF0E621E4F3C7003B2FB9 /* MVMCore.framework in Frameworks */,
EA985C602970A3F000F2FF2E /* VDS.framework in Frameworks */,
EAD715AA2BBC8FAF00DEDA6A /* VDSTokens.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -2138,6 +2139,7 @@
D29DF0E421E4F3C7003B2FB9 /* Frameworks */ = {
isa = PBXGroup;
children = (
AF1CEFE72BEA73890001F9A5 /* VDSCoreTokens.xcframework */,
EAD715A92BBC8FAF00DEDA6A /* VDSTokens.xcframework */,
EA985C5F2970A3F000F2FF2E /* VDS.framework */,
D29DF0E521E4F3C7003B2FB9 /* MVMCore.framework */,

View File

@ -7,7 +7,7 @@
//
import UIKit
import VDSTokens
import VDSCoreTokens
import VDS
import MVMCore

View File

@ -7,7 +7,7 @@
//
import UIKit
import VDSTokens
import VDSCoreTokens
import VDS
open class Link: VDS.TextLink, VDSMoleculeViewProtocol {

View File

@ -7,7 +7,7 @@
//
import UIKit
import VDSTokens
import VDSCoreTokens
import VDS
import MVMCore
import Combine

View File

@ -7,7 +7,7 @@
//
import UIKit
import VDSTokens
import VDSCoreTokens
@objcMembers open class RadioButton: Control, MFButtonProtocol {
//--------------------------------------------------

View File

@ -5,7 +5,7 @@
// Created by Kevin Christiano on 1/30/20.
// Copyright © 2020 Verizon Wireless. All rights reserved.
//
import VDSTokens
import VDSCoreTokens
open class CarouselIndicator: Control, CarouselPageControlProtocol {
//--------------------------------------------------

View File

@ -7,7 +7,7 @@
//
import Foundation
import VDSTokens
import VDSCoreTokens
open class CarouselIndicatorModel: CarouselPagingModelProtocol, MoleculeModelProtocol, EnableableModelProtocol {
//--------------------------------------------------

View File

@ -8,7 +8,7 @@
import Foundation
import VDS
import VDSTokens
import VDSCoreTokens
open class IconModel: MoleculeModelProtocol {

View File

@ -7,7 +7,7 @@
//
import UIKit
import VDSTokens
import VDSCoreTokens
import VDS
public class LineModel: MoleculeModelProtocol, Invertable {

View File

@ -34,6 +34,7 @@ open class TileContainerModel: TileContainerBaseModel<TileContainer.Padding, Til
case moleculeName
case molecule
}
required public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decodeIfPresent(String.self, forKey: .id) ?? UUID().uuidString
@ -84,6 +85,7 @@ open class TileContainerBaseModel<PaddingType: DefaultValuing & Codable, TileCon
case aspectRatio
case backgroundEffect
}
required public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
inverted = try container.decodeIfPresent(Bool.self, forKey: .inverted) ?? false
@ -98,7 +100,6 @@ open class TileContainerBaseModel<PaddingType: DefaultValuing & Codable, TileCon
color = try container.decodeIfPresent(TileContainerType.BackgroundColor.self, forKey: .color) ?? .black
aspectRatio = try container.decodeIfPresent(TileContainerType.AspectRatio.self, forKey: .aspectRatio) ?? .ratio1x1
backgroundEffect = try container.decodeIfPresent(TileContainerType.BackgroundEffect.self, forKey: .backgroundEffect) ?? .none
}
public func encode(to encoder: Encoder) throws {

View File

@ -8,7 +8,7 @@
import Foundation
import VDS
import VDSTokens
import VDSCoreTokens
import MVMCore
open class TooltipModel: MoleculeModelProtocol {

View File

@ -8,7 +8,7 @@
import Foundation
import VDS
import VDSTokens
import VDSCoreTokens
//--------------------------------------------------
// MARK: - Codable Extensions

View File

@ -6,7 +6,7 @@
// Copyright © 2022 Verizon Wireless. All rights reserved.
//
import VDSTokens
import VDSCoreTokens
import VDS
public class TitleLockupModel: ParentMoleculeModelProtocol {

View File

@ -5,7 +5,7 @@
// Created by Scott Pfeil on 5/28/20.
// Copyright © 2020 Verizon Wireless. All rights reserved.
//
import VDSTokens
import VDSCoreTokens
@objcMembers open class TabBar: UITabBar, MoleculeViewProtocol, TabBarProtocol, UITabBarDelegate {

View File

@ -7,7 +7,7 @@
//
import Foundation
import VDSTokens
import VDSCoreTokens
open class TabBarModel: MoleculeModelProtocol {
public static var identifier: String = "tabBar"
@ -34,7 +34,7 @@ open class TabBarModel: MoleculeModelProtocol {
if let selectedColor = _selectedColor { return selectedColor }
if let style = style,
style == .dark { return Color(uiColor: VDSColor.elementsPrimaryOndark) }
return Color(uiColor: VDSColor.elementsPrimaryOnlight)
return Color(uiColor: UIColor.mvmRed)
}
set {
_selectedColor = newValue
@ -54,7 +54,7 @@ open class TabBarModel: MoleculeModelProtocol {
}
}
open var style: NavigationItemStyle? = .dark
open var style: NavigationItemStyle? = .light
// Must be capped to 0...(tabs.count - 1)
open var selectedTab: Int = 0

View File

@ -7,7 +7,7 @@
//
import UIKit
import VDSTokens
import VDSCoreTokens
import VDS
@objc public protocol TabsDelegate {

View File

@ -7,7 +7,7 @@
//
import UIKit
import VDSTokens
import VDSCoreTokens
import VDS
open class TabsModel: MoleculeModelProtocol {

View File

@ -6,7 +6,7 @@
// Copyright © 2020 Verizon Wireless. All rights reserved.
//
import VDSTokens
import VDSCoreTokens
public enum NavigationItemStyle: String, Codable {
case light

View File

@ -10,7 +10,7 @@ import Foundation
import Combine
import Dispatch
import MVMCore
import VDSTokens
import VDSCoreTokens
@objcMembers open class CollapsableNotification: View {
//--------------------------------------------------

View File

@ -179,6 +179,7 @@ open class Carousel: View {
{
// Prevents a carousel reset while still updating the cell backing data through reconfigureItems.
MVMCoreLoggingHandler.shared()?.handleDebugMessage("[\(Self.self)] Model is visually equivalent. Skipping rebuild...")
prepareMolecules(with: carouselModel)
FormValidator.setupValidation(for: carouselModel, delegate: delegateObject?.formHolderDelegate)
updateModelIndex() // Ensure the new model indexing matches the old.
pagingView?.currentIndex = pageIndex // Trigger a paging view render.

View File

@ -56,13 +56,14 @@ open class ThreeLayerTableViewController: ProgrammaticTableViewController, Rotor
}
open override func updateUI(for molecules: [MoleculeModelProtocol]? = nil) {
let isFirstRender = self.isFirstRender
super.updateUI(for: molecules)
guard molecules == nil else { return }
createViewForTableHeader()
createViewForTableFooter()
tableView?.reloadData()
// Reloading the table is handled in updateViews.
}
override open func viewDidLoad() {

View File

@ -7,6 +7,7 @@
//
import UIKit
import VDSCoreTokens
public typealias ColorHexTuple = (uiColor: UIColor, hex: String)
@ -19,7 +20,8 @@ extension UIColor {
/// Dictionary to access brand approved colors by name.
public static let names: [String: ColorHexTuple] = ["black": (.mvmBlack, "#000000"),
"white": (.mvmWhite, "#FFFFFF"),
"red": (.mvmRed, "#D52B1E"),
"red": (.mvmRed, "#EE0000"),
"monarchRed": (VDSCoreTokens.VDSColor.paletteMonarchred, "#f50a23"),
"pink": (.mvmPink, "#D90368"),
"pink33": (.mvmPink33, "#F2ABCD"),
"pink66": (.mvmPink66, "#E6589B"),
@ -48,13 +50,20 @@ extension UIColor {
"blueShade2": (.mvmBlueShade2, "#0B4467"),
"blueInverted": (.mvmBlueInverted, "#0088CE"),
"yellow": (.mvmYellow, "#FFBC3D"),
"neonYellow": (VDSCoreTokens.VDSColor.paletteNeonyellow, "#f5ff1e"),
"coolGray1": (.mvmCoolGray1, "#F6F6F6"),
"coolGray3": (.mvmCoolGray3, "#D8DADA"),
"coolGray6": (.mvmCoolGray6, "#747676"),
"coolGray10": (.mvmCoolGray10, "#333333"),
"upGold1": (.vzupGold1, "#F9D542"),
"upGold2": (.vzupGold2, "#F4CA53"),
"upGold3": (.vzupGold3, "#CC9B2D")]
"upGold3": (.vzupGold3, "#CC9B2D"),
"stone": (.stone, "#F3EDE0"),
"coral": (.coral, "#FF3C2D"),
"gray44": (.gray44, "#6F7171"),
"gray85": (.gray85, "#D8DADA"),
"gray95": (.gray95, "#F6F6F6")
]
//--------------------------------------------------
// MARK: - Helper
@ -82,9 +91,10 @@ extension UIColor {
// MARK: - Red
//--------------------------------------------------
/// HEX: #D52B1E
/// HEX: #EE0000
@objc
public static let mvmRed = UIColor.assetColor(named: "red")
//--------------------------------------------------
// MARK: - Pink
//--------------------------------------------------
@ -190,7 +200,7 @@ extension UIColor {
// MARK: - Yellow
//--------------------------------------------------
/// HEX: #FFBC3D
/// HEX: ##F5FF1E
public static let mvmYellow = UIColor.assetColor(named: "yellow")
//--------------------------------------------------
@ -222,6 +232,25 @@ extension UIColor {
/// HEX: #CC9B2D
public static let vzupGold3 = UIColor.assetColor(named: "upGold3")
//--------------------------------------------------
// MARK: - Monarch
//--------------------------------------------------
/// HEX: #F3EDE0
@objc public static let stone = VDSCoreTokens.VDSColor.paletteStone
// HEX:#FF3C2D
@objc public static let coral = VDSCoreTokens.VDSColor.paletteCoral
// HEX:#6F7171
@objc public static let gray44 = VDSCoreTokens.VDSColor.paletteGray44
// HEX:#D8DADA
@objc public static let gray85 = VDSCoreTokens.VDSColor.paletteGray85
// HEX:#F6F6F6
@objc public static let gray95 = VDSCoreTokens.VDSColor.paletteGray95
//--------------------------------------------------
// MARK: - Functions
//--------------------------------------------------

View File

@ -77,7 +77,7 @@
#pragma mark - legacy
+ (nonnull UIColor *)mfRedColor {
return [UIColor colorWithRed:.804 green:.016 blue:.043 alpha:1.0];
return [UIColor mvmRed];
}
+ (nonnull UIColor *)mfDarkerRedColor {
@ -307,8 +307,6 @@
static dispatch_once_t once;
dispatch_once(&once, ^{
stringColorMapping = @{@"PrimaryRed":[UIColor mfRedColor],
@"black":[UIColor blackColor],
@"red":[UIColor mfRedColor],
@"greyish":[UIColor mfLightGrayColor],
@"robinsEggBlue" : [UIColor mfRobinsEggBlue],
@"lightSalmon" : [UIColor mfLightSalmon],

View File

@ -1,20 +1,20 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
},
"colors" : [
{
"idiom" : "universal",
"color" : {
"color-space" : "srgb",
"components" : {
"red" : "0xD5",
"alpha" : "1.000",
"blue" : "0x1E",
"green" : "0x2B"
"blue" : "0x00",
"green" : "0x00",
"red" : "0xEE"
}
}
},
"idiom" : "universal"
}
]
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -1,20 +1,20 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
},
"colors" : [
{
"idiom" : "universal",
"color" : {
"color-space" : "srgb",
"components" : {
"red" : "0xFF",
"alpha" : "1.000",
"blue" : "0x3D",
"green" : "0xBC"
"green" : "0xBC",
"red" : "0xFF"
}
}
},
"idiom" : "universal"
}
]
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -8,7 +8,7 @@
import Foundation
import MVMCore
import VDSTokens
import VDSCoreTokens
open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol, TabsDelegate, MVMCorePresentationDelegateProtocol, SubNavSwipeNavigationProtocol {
/// The number of tabs count or less that will turn on the fillContainer

View File

@ -1,23 +1,15 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "exportBlack.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "exportBlack@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "exportBlack@3x.png",
"scale" : "3x"
"filename" : "Vector.svg",
"idiom" : "universal"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}
}

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 -3.05176e-05V7.11108H18.7555V2.1333L11.9555 8.9333L11.0666 8.04441L17.8666 1.25553H12.8889V-3.05176e-05H20ZM15 18.7555H1.25553V4.99997H12.2222L13.3333 3.75552H-2.28882e-05V20H16.2555V6.66664L15 7.77775V18.7555Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 343 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 589 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 869 B

View File

@ -1,23 +1,15 @@
{
"images" : [
{
"filename" : "nav_back.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "nav_back@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "nav_back@3x.png",
"idiom" : "universal",
"scale" : "3x"
"filename" : "Vector.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

View File

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20 10.6361H2.46073L10.9975 19.1001L10.0897 20L0 10L10.0897 0L10.9974 0.899867L2.46077 9.36388H20V10.6361Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 394 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

View File

@ -1,23 +1,15 @@
{
"images" : [
{
"filename" : "Close.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Close-1.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "Close-2.png",
"idiom" : "universal",
"scale" : "3x"
"filename" : "Vector.svg",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

View File

@ -0,0 +1,3 @@
<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.87772 9.00001L17.7777 16.8889L16.8888 17.7778L8.99995 9.87778L1.11106 17.7778L0.222168 16.8889L8.11106 9.00001L0.222168 1.11112L1.11106 0.222229L8.99995 8.11112L16.8888 0.222229L17.7777 1.11112L9.87772 9.00001Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 342 B