From f6b0696457415bd7da906913a9477fe882214b22 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 10 Oct 2022 10:22:37 -0500 Subject: [PATCH] added AnyColorConfiguration Signed-off-by: Matt Bruce --- VDS/Classes/ColorConfiguration.swift | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/VDS/Classes/ColorConfiguration.swift b/VDS/Classes/ColorConfiguration.swift index 8633185e..831d9704 100644 --- a/VDS/Classes/ColorConfiguration.swift +++ b/VDS/Classes/ColorConfiguration.swift @@ -8,7 +8,7 @@ import Foundation import UIKit -public protocol Colorable: AnyObject, ObjectWithable, Initable { +public protocol Colorable: AnyObject, ObjectWithable { associatedtype ModelType func getColor(_ viewModel: ModelType) -> UIColor } @@ -33,7 +33,7 @@ extension BinaryColorable where Self: Selectable { /// config.darkColor = .white /// /// let textColor = config.getColor(model) //returns .black -open class SurfaceColorConfiguration: Colorable { +open class SurfaceColorConfiguration: Colorable, Initable { public var lightColor: UIColor = .clear public var darkColor: UIColor = .clear @@ -64,7 +64,7 @@ open class SurfaceColorConfiguration: Colorable { /// let textColor = config.getColor(model) //returns .white /// /// -open class DisabledSurfaceColorConfiguration: Colorable { +open class DisabledSurfaceColorConfiguration: Colorable, Initable { public var disabled = SurfaceColorConfiguration() public var enabled = SurfaceColorConfiguration() @@ -95,7 +95,7 @@ open class DisabledSurfaceColorConfiguration: /// let textColor = config.getColor(model) //returns .white /// /// -open class BinarySurfaceColorConfiguration: Colorable{ +open class BinarySurfaceColorConfiguration: Colorable, Initable{ public var forTrue = SurfaceColorConfiguration() public var forFalse = SurfaceColorConfiguration() @@ -132,7 +132,7 @@ open class BinarySurfaceColorConfiguration: Colorable { +open class BinaryDisabledSurfaceColorConfiguration: Colorable, Initable { public var forTrue = DisabledSurfaceColorConfiguration() public var forFalse = DisabledSurfaceColorConfiguration() @@ -142,3 +142,15 @@ open class BinaryDisabledSurfaceColorConfiguration: Colorable { + + private var colorHelper: (ModelType) -> UIColor + + public init(colorable: C) where C.ModelType == ModelType { + colorHelper = colorable.getColor(_:) + } + public func getColor(_ viewModel: ModelType) -> UIColor { + colorHelper(viewModel) + } +}