Merge branch 'feature/VDS_TextLink' into 'feature/develop_mvp_3'

made changes to textlink as per core specs.

See merge request BPHV_MIPS/mvm_core_ui!836
This commit is contained in:
Pfeil, Scott Robert 2022-05-09 17:58:18 +00:00
commit b997dbdb7a
2 changed files with 53 additions and 18 deletions

View File

@ -7,7 +7,7 @@
// //
import UIKit import UIKit
import VDSColorTokens
@objcMembers open class Link: Button { @objcMembers open class Link: Button {
//-------------------------------------------------- //--------------------------------------------------
@ -28,8 +28,8 @@ import UIKit
// x should be according to the text, not the button // x should be according to the text, not the button
let x = textRect.origin.x let x = textRect.origin.x
// Line is 1 point below the text // Line is 0 point below the text
let y = textRect.origin.y + textRect.size.height + 1 let y = textRect.origin.y + textRect.size.height
context.move(to: CGPoint(x: x, y: y)) context.move(to: CGPoint(x: x, y: y))
context.addLine(to: CGPoint(x: x + textRect.size.width, y: y)) context.addLine(to: CGPoint(x: x + textRect.size.width, y: y))
@ -38,7 +38,7 @@ import UIKit
open override var intrinsicContentSize: CGSize { open override var intrinsicContentSize: CGSize {
guard let size = titleLabel?.intrinsicContentSize else { return super.intrinsicContentSize } guard let size = titleLabel?.intrinsicContentSize else { return super.intrinsicContentSize }
return CGSize(width: size.width, height: size.height + 2) return CGSize(width: size.width, height: size.height + 1)
} }
//-------------------------------------------------- //--------------------------------------------------
@ -56,7 +56,9 @@ import UIKit
} }
setTitleColor((model.inverted ? model.enabledColor_inverted : model.enabledColor).uiColor, for: .normal) setTitleColor((model.inverted ? model.enabledColor_inverted : model.enabledColor).uiColor, for: .normal)
setTitleColor((model.inverted ? model.disabledColor_inverted : model.disabledColor).uiColor, for: .disabled) setTitleColor((model.inverted ? model.disabledColor_inverted : model.disabledColor).uiColor, for: .disabled)
setTitleColor((model.inverted ? model.activeColor_inverted : model.activeColor).uiColor, for: .highlighted)
isEnabled = model.enabled isEnabled = model.enabled
titleLabel?.font = model.getFont(model.size)
set(with: model.action, delegateObject: delegateObject, additionalData: additionalData) set(with: model.action, delegateObject: delegateObject, additionalData: additionalData)
} }
@ -68,21 +70,15 @@ extension Link {
open override func updateView(_ size: CGFloat) { open override func updateView(_ size: CGFloat) {
super.updateView(size) super.updateView(size)
var width = size
if MVMCoreGetterUtility.fequal(a: Float.leastNormalMagnitude, b: Float(size)) {
width = MVMCoreUIUtility.getWidth()
}
titleLabel?.font = MFStyler.fontB2(forWidth: width)
} }
open override func setupView() { open override func setupView() {
super.setupView() super.setupView()
backgroundColor = .clear backgroundColor = .clear
contentMode = .redraw contentMode = .redraw
setTitleColor(.mvmBlack, for: .normal) setTitleColor(VDSColor.elementsPrimaryOnlight, for: .normal)
setTitleColor(.mvmCoolGray6, for: .disabled) setTitleColor(VDSColor.interactiveDisabledOnlight, for: .disabled)
setTitleColor(VDSColor.interactiveActiveOnlight, for: .highlighted)
titleLabel?.numberOfLines = 1 titleLabel?.numberOfLines = 1
titleLabel?.lineBreakMode = .byTruncatingTail titleLabel?.lineBreakMode = .byTruncatingTail
titleLabel?.textAlignment = .left titleLabel?.textAlignment = .left

View File

@ -7,7 +7,7 @@
// //
import UIKit import UIKit
import VDSColorTokens
open class LinkModel: ButtonModelProtocol, MoleculeModelProtocol, EnableableModelProtocol { open class LinkModel: ButtonModelProtocol, MoleculeModelProtocol, EnableableModelProtocol {
//-------------------------------------------------- //--------------------------------------------------
@ -22,11 +22,15 @@ open class LinkModel: ButtonModelProtocol, MoleculeModelProtocol, EnableableMode
public var accessibilityText: String? public var accessibilityText: String?
public var action: ActionModelProtocol public var action: ActionModelProtocol
public var enabled = true public var enabled = true
public var enabledColor = Color(uiColor: .mvmBlack) public var enabledColor = Color(uiColor: VDSColor.elementsPrimaryOnlight)
public var enabledColor_inverted = Color(uiColor: .mvmWhite) public var enabledColor_inverted = Color(uiColor: VDSColor.elementsPrimaryOndark)
public var disabledColor = Color(uiColor: .mvmCoolGray6) public var disabledColor = Color(uiColor: VDSColor.interactiveDisabledOnlight)
public var disabledColor_inverted = Color(uiColor: .mvmCoolGray10) public var disabledColor_inverted = Color(uiColor: VDSColor.interactiveDisabledOndark)
public var activeColor = Color(uiColor: VDSColor.interactiveActiveOnlight)
public var activeColor_inverted = Color(uiColor: VDSColor.interactiveActiveOndark)
public var inverted = false public var inverted = false
public var size:linkFontSize = linkFontSize.small
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Initializer // MARK: - Initializer
@ -53,9 +57,30 @@ open class LinkModel: ButtonModelProtocol, MoleculeModelProtocol, EnableableMode
case enabledColor_inverted case enabledColor_inverted
case disabledColor case disabledColor
case disabledColor_inverted case disabledColor_inverted
case activeColor
case activeColor_inverted
case inverted case inverted
case size
} }
public enum linkFontSize: String, Codable {
case small
case large
}
//--------------------------------------------------
// MARK: - Method
//--------------------------------------------------
func getFont(_ type: linkFontSize) -> UIFont {
switch type {
case .small:
return MFStyler.fontRegularBodySmall()
case .large:
return MFStyler.fontRegularBodyLarge()
}
}
//-------------------------------------------------- //--------------------------------------------------
// MARK: - Codec // MARK: - Codec
//-------------------------------------------------- //--------------------------------------------------
@ -92,6 +117,17 @@ open class LinkModel: ButtonModelProtocol, MoleculeModelProtocol, EnableableMode
if let disabledColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledColor_inverted) { if let disabledColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledColor_inverted) {
self.disabledColor_inverted = disabledColor_inverted self.disabledColor_inverted = disabledColor_inverted
} }
if let activeColor = try typeContainer.decodeIfPresent(Color.self, forKey: .activeColor) {
self.activeColor = activeColor
}
if let activeColor_inverted = try typeContainer.decodeIfPresent(Color.self, forKey: .activeColor_inverted) {
self.activeColor_inverted = activeColor_inverted
}
if let size = try typeContainer.decodeIfPresent(linkFontSize.self, forKey: .size) {
self.size = size
}
} }
public func encode(to encoder: Encoder) throws { public func encode(to encoder: Encoder) throws {
@ -107,5 +143,8 @@ open class LinkModel: ButtonModelProtocol, MoleculeModelProtocol, EnableableMode
try container.encode(enabledColor_inverted, forKey: .enabledColor_inverted) try container.encode(enabledColor_inverted, forKey: .enabledColor_inverted)
try container.encode(disabledColor, forKey: .disabledColor) try container.encode(disabledColor, forKey: .disabledColor)
try container.encode(disabledColor_inverted, forKey: .disabledColor_inverted) try container.encode(disabledColor_inverted, forKey: .disabledColor_inverted)
try container.encode(activeColor, forKey: .activeColor)
try container.encode(activeColor_inverted, forKey: .activeColor_inverted)
try container.encodeIfPresent(size, forKey: .size)
} }
} }