Digital PCT265 story ONEAPP-7592 - Updates to tile container to allow custom colors.

This commit is contained in:
Scott Pfeil 2024-04-30 16:03:48 -04:00
parent 5bfd2ed85c
commit 895f0181ec
5 changed files with 23 additions and 12 deletions

View File

@ -8,6 +8,7 @@
import Foundation import Foundation
import VDS import VDS
import MVMCore
open class TileContainerModel: TileContainerBaseModel<TileContainer.Padding, TileContainer>, ParentMoleculeModelProtocol, MoleculeModelProtocol { open class TileContainerModel: TileContainerBaseModel<TileContainer.Padding, TileContainer>, ParentMoleculeModelProtocol, MoleculeModelProtocol {
@ -36,7 +37,7 @@ open class TileContainerModel: TileContainerBaseModel<TileContainer.Padding, Til
required public init(from decoder: Decoder) throws { required public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self) let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decodeIfPresent(String.self, forKey: .id) ?? UUID().uuidString id = try container.decodeIfPresent(String.self, forKey: .id) ?? UUID().uuidString
molecule = try container.decodeModelIfPresent(codingKey: .molecule) molecule = try container.decodeMoleculeIfPresent(codingKey: .molecule)
try super.init(from: decoder) try super.init(from: decoder)
} }

View File

@ -95,7 +95,11 @@ extension VDS.TileContainerBase.BackgroundColor: Codable {
case "black": case "black":
self = .black self = .black
default: default:
self = .custom(type) if let color = try? Color(from: decoder) {
self = .custom(color.hex)
} else {
self = .custom(type)
}
} }
} }
} }

View File

@ -91,7 +91,7 @@ public struct DeprecatedHeadlineBodyHelper {
public func createTitleLockupModel(defaultStyle: HeadlineBodyModel.Style = .header, headlineBody: HeadlineBodyModel) throws -> TitleLockupModel { public func createTitleLockupModel(defaultStyle: HeadlineBodyModel.Style = .header, headlineBody: HeadlineBodyModel) throws -> TitleLockupModel {
guard let headline = headlineBody.headline else { throw ModelRegistry.Error.decoderOther(message: "headline is required for this use case.") } guard let headline = headlineBody.headline else { throw ModelRegistry.Error.decoderOther(message: "headline is required for this use case.") }
var body = headlineBody.body let body = headlineBody.body
switch headlineBody.style ?? defaultStyle { switch headlineBody.style ?? defaultStyle {
case .landingHeader: case .landingHeader:
headline.fontStyle = Styler.Font.RegularTitle2XLarge headline.fontStyle = Styler.Font.RegularTitle2XLarge
@ -103,13 +103,13 @@ public struct DeprecatedHeadlineBodyHelper {
headline.fontStyle = Styler.Font.RegularTitleXLarge headline.fontStyle = Styler.Font.RegularTitleXLarge
body?.fontStyle = Styler.Font.RegularTitleMedium body?.fontStyle = Styler.Font.RegularTitleMedium
} }
let model = try TitleLockupModel(title: headline, subTitle: body) let model = TitleLockupModel(title: headline, subTitle: body)
model.id = headlineBody.id model.id = headlineBody.id
return model return model
} }
public func createHeadlineBodyModel(titleLockup: TitleLockupModel) -> HeadlineBodyModel { public func createHeadlineBodyModel(titleLockup: TitleLockupModel) -> HeadlineBodyModel {
var headlineBody = HeadlineBodyModel(headline: titleLockup.title) let headlineBody = HeadlineBodyModel(headline: titleLockup.title)
headlineBody.body = titleLockup.subTitle headlineBody.body = titleLockup.subTitle
headlineBody.id = titleLockup.id headlineBody.id = titleLockup.id
return headlineBody return headlineBody

View File

@ -230,6 +230,12 @@ extension UIColor {
return UIColor(named: name, in: MVMCoreUIUtility.bundleForMVMCoreUI(), compatibleWith: nil)! return UIColor(named: name, in: MVMCoreUIUtility.bundleForMVMCoreUI(), compatibleWith: nil)!
} }
/// Returns a color corresponding to the passed in color name.
@objc
public static func mvmCoreUIColor(with name: String) -> UIColor? {
return UIColor.names[name]?.uiColor
}
/// Convenience to get a grayscale UIColor where the same value is used for red, green, and blue. /// Convenience to get a grayscale UIColor where the same value is used for red, green, and blue.
public class func grayscale(rgb: Int, alpha: CGFloat = 1.0) -> UIColor { public class func grayscale(rgb: Int, alpha: CGFloat = 1.0) -> UIColor {

View File

@ -7,6 +7,7 @@
// //
#import "UIColor+MFConvenience.h" #import "UIColor+MFConvenience.h"
#import <MVMCoreUI/MVMCoreUI-Swift.h>
@import MVMCore.MVMCoreDispatchUtility; @import MVMCore.MVMCoreDispatchUtility;
@implementation UIColor (MFConvenience) @implementation UIColor (MFConvenience)
@ -298,6 +299,10 @@
} }
+ (nullable UIColor *)mfGetColorForString:(nullable NSString *)string { + (nullable UIColor *)mfGetColorForString:(nullable NSString *)string {
if ([string hasPrefix:@"#"]) {
return [self mfGetColorForHex:string];
}
static NSDictionary *stringColorMapping; static NSDictionary *stringColorMapping;
static dispatch_once_t once; static dispatch_once_t once;
dispatch_once(&once, ^{ dispatch_once(&once, ^{
@ -327,14 +332,9 @@
UIColor *color = nil; UIColor *color = nil;
if (string && string.length > 0) { if (string && string.length > 0) {
color = [stringColorMapping objectForKey:string]; color = [stringColorMapping objectForKey:string] ?: [UIColor mvmCoreUIColorWith:string];
if (!color){
color = [UIColor blackColor];
}
} else {
color = [UIColor blackColor];
} }
return color; return color ?: [UIColor blackColor];
} }
+ (nonnull UIColor *)mfGetColorForHex:(nonnull NSString *) hexString { + (nonnull UIColor *)mfGetColorForHex:(nonnull NSString *) hexString {