Merge branch 'feature/atomic_vds_line' of https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui into feature/vds_batch_one
This commit is contained in:
commit
e32941af39
@ -10,7 +10,7 @@ import UIKit
|
||||
import VDSColorTokens
|
||||
import VDS
|
||||
|
||||
@objcMembers public class LineModel: MoleculeModelProtocol, Invertable {
|
||||
public class LineModel: MoleculeModelProtocol, Invertable {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Enums
|
||||
//--------------------------------------------------
|
||||
@ -29,9 +29,23 @@ import VDS
|
||||
case between
|
||||
}
|
||||
|
||||
/**
|
||||
The style of the line:
|
||||
- secondary (VDS Secondary)
|
||||
- primary (VDS Primary)
|
||||
- standard (VDS Secondary) - deprecated
|
||||
- thin (VDS Primar) - deprecated
|
||||
- medium (VDS Primar)
|
||||
- heavy (VDS Primar)
|
||||
- none (hidden)
|
||||
*/
|
||||
public enum Style: String, Codable {
|
||||
case secondary
|
||||
case primary
|
||||
case standard
|
||||
case thin
|
||||
case medium
|
||||
case heavy
|
||||
case none
|
||||
}
|
||||
|
||||
@ -43,7 +57,7 @@ import VDS
|
||||
public var id: String = UUID().uuidString
|
||||
public var backgroundColor: Color?
|
||||
|
||||
public var type: Style = .primary
|
||||
public var type: Style = .secondary
|
||||
public var frequency: Frequency? = .allExceptTop
|
||||
|
||||
public var inverted: Bool = false
|
||||
@ -58,7 +72,7 @@ import VDS
|
||||
self.type = type
|
||||
}
|
||||
|
||||
public init(verticalLineOf type: Style, backgroundColor: Color? = nil) {
|
||||
public init(verticalLineOf type: Style) {
|
||||
self.type = type
|
||||
}
|
||||
|
||||
@ -100,7 +114,7 @@ import VDS
|
||||
/// adding code to look for the old useVerticalLine or the new orientation
|
||||
if let useVerticalLine = try typeContainer.decodeIfPresent(Bool.self, forKey: .useVerticalLine) {
|
||||
orientation = useVerticalLine ? .vertical : .horizontal
|
||||
}else if let orientation = try typeContainer.decodeIfPresent(VDS.Line.Orientation.self, forKey: .orientation) {
|
||||
} else if let orientation = try typeContainer.decodeIfPresent(VDS.Line.Orientation.self, forKey: .orientation) {
|
||||
self.orientation = orientation
|
||||
}
|
||||
}
|
||||
@ -112,6 +126,6 @@ import VDS
|
||||
try container.encode(type, forKey: .type)
|
||||
try container.encode(inverted, forKey: .inverted)
|
||||
try container.encodeIfPresent(frequency, forKey: .frequency)
|
||||
try container.encodeIfPresent(orientation == .vertical, forKey: .useVerticalLine)
|
||||
try container.encode(orientation == .vertical, forKey: .useVerticalLine)
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
|
||||
@objcMembers open class ListProgressBarThin: TableViewCell {
|
||||
open class ListProgressBarThin: TableViewCell {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Outlets
|
||||
//--------------------------------------------------
|
||||
@ -15,7 +15,11 @@
|
||||
public let progressBar = ProgressBar()
|
||||
public let leftHeadline = Label(fontStyle: .BoldBodySmall)
|
||||
public let leftBody = Label(fontStyle: .BoldBodySmall)
|
||||
public let rightBar = Line()
|
||||
public let rightBar: DataLine = {
|
||||
var line = DataLine()
|
||||
line.heightConstraint.constant = 2
|
||||
return line
|
||||
}()
|
||||
public let rightLabel = Label(fontStyle: .BoldBodySmall)
|
||||
private let barStackItem: StackItem
|
||||
private let rightLabelStackItem: StackItem
|
||||
@ -102,7 +106,6 @@
|
||||
leftHeadline.styleB1(true)
|
||||
leftBody.styleB2(true)
|
||||
rightLabel.styleB2(true)
|
||||
rightBar.setStyle(.primary)
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
|
||||
@ -16,14 +16,14 @@ public class ListProgressBarThinModel: ListItemModel, MoleculeModelProtocol {
|
||||
public var progressBar: ProgressBarModel
|
||||
public var leftHeadline: LabelModel
|
||||
public var leftBody: LabelModel?
|
||||
public var rightBar: LineModel
|
||||
public var rightBar: DataLineModel
|
||||
public var rightLabel: LabelModel
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Initializer
|
||||
//--------------------------------------------------
|
||||
|
||||
public init(progressBar: ProgressBarModel, leftHeadline: LabelModel, leftBody: LabelModel? = nil, rightBar: LineModel, rightLabel: LabelModel) {
|
||||
public init(progressBar: ProgressBarModel, leftHeadline: LabelModel, leftBody: LabelModel? = nil, rightBar: DataLineModel, rightLabel: LabelModel) {
|
||||
self.progressBar = progressBar
|
||||
self.leftHeadline = leftHeadline
|
||||
self.leftBody = leftBody
|
||||
@ -38,9 +38,7 @@ public class ListProgressBarThinModel: ListItemModel, MoleculeModelProtocol {
|
||||
|
||||
override public func setDefaults() {
|
||||
super.setDefaults()
|
||||
|
||||
rightBar.type = .primary
|
||||
|
||||
|
||||
if rightBar.backgroundColor == nil {
|
||||
rightBar.backgroundColor = Color(uiColor: .gray)
|
||||
}
|
||||
@ -74,7 +72,7 @@ public class ListProgressBarThinModel: ListItemModel, MoleculeModelProtocol {
|
||||
progressBar = try typeContainer.decode(ProgressBarModel.self, forKey:.progressBar)
|
||||
leftHeadline = try typeContainer.decode(LabelModel.self, forKey: .leftHeadline)
|
||||
leftBody = try typeContainer.decodeIfPresent(LabelModel.self, forKey: .leftBody)
|
||||
rightBar = try typeContainer.decode(LineModel.self, forKey: .rightBar)
|
||||
rightBar = try typeContainer.decode(DataLineModel.self, forKey: .rightBar)
|
||||
rightLabel = try typeContainer.decode(LabelModel.self, forKey: .rightLabel)
|
||||
try super.init(from: decoder)
|
||||
}
|
||||
|
||||
@ -6,15 +6,26 @@
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
open class DataLine: View {
|
||||
|
||||
lazy var heightConstraint = heightAnchor.constraint(equalToConstant: 4)
|
||||
lazy var widthConstraint = widthAnchor.constraint(equalToConstant: 20)
|
||||
|
||||
open override func setupView() {
|
||||
super.setupView()
|
||||
heightConstraint.isActive = true
|
||||
widthConstraint.isActive = true
|
||||
}
|
||||
}
|
||||
|
||||
@objcMembers open class ListRightVariableTotalData: TableViewCell {
|
||||
open class ListRightVariableTotalData: TableViewCell {
|
||||
//-----------------------------------------------------
|
||||
// MARK: - Outlets
|
||||
//-----------------------------------------------------
|
||||
|
||||
public let leftLabel = Label(fontStyle: .BoldBodySmall)
|
||||
public let rightLabel = Label(fontStyle: .RegularBodySmall)
|
||||
public let bar = Line()
|
||||
public let bar = DataLine()
|
||||
|
||||
//-----------------------------------------------------
|
||||
// MARK: - Properties
|
||||
@ -44,8 +55,6 @@
|
||||
|
||||
override open func setupView() {
|
||||
super.setupView()
|
||||
bar.setStyle(.primary)
|
||||
bar.widthAnchor.constraint(equalToConstant: 20).isActive = true
|
||||
rightLabel.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 900), for: .horizontal)
|
||||
addMolecule(stack)
|
||||
stack.restack()
|
||||
@ -74,7 +83,6 @@
|
||||
super.reset()
|
||||
leftLabel.setFontStyle(.BoldBodySmall)
|
||||
rightLabel.setFontStyle(.RegularBodySmall)
|
||||
bar.setStyle(.primary)
|
||||
}
|
||||
|
||||
//--------------------------------------------------
|
||||
|
||||
@ -6,8 +6,18 @@
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
public struct DataLineModel: Codable, MoleculeModelProtocol {
|
||||
public var id: String = UUID().uuidString
|
||||
public static var identifier: String = "line"
|
||||
public var backgroundColor: Color?
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case backgroundColor
|
||||
}
|
||||
}
|
||||
|
||||
public class ListRightVariableTotalDataModel: ListItemModel, MoleculeModelProtocol {
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//--------------------------------------------------
|
||||
@ -15,7 +25,7 @@ public class ListRightVariableTotalDataModel: ListItemModel, MoleculeModelProtoc
|
||||
public static var identifier: String = "listRVLine"
|
||||
public var leftLabel: LabelModel
|
||||
public var rightLabel: LabelModel
|
||||
public var bar: LineModel
|
||||
public var bar: DataLineModel
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Method
|
||||
@ -24,8 +34,6 @@ public class ListRightVariableTotalDataModel: ListItemModel, MoleculeModelProtoc
|
||||
override public func setDefaults() {
|
||||
super.setDefaults()
|
||||
rightLabel.hero = 0
|
||||
bar.type = .primary
|
||||
|
||||
if bar.backgroundColor == nil {
|
||||
bar.backgroundColor = Color(uiColor: .mvmBlue)
|
||||
}
|
||||
@ -35,7 +43,7 @@ public class ListRightVariableTotalDataModel: ListItemModel, MoleculeModelProtoc
|
||||
// MARK: - Initializer
|
||||
//--------------------------------------------------
|
||||
|
||||
public init(leftLabel: LabelModel, rightlabel:LabelModel, bar: LineModel){
|
||||
public init(leftLabel: LabelModel, rightlabel:LabelModel, bar: DataLineModel) {
|
||||
self.leftLabel = leftLabel
|
||||
self.rightLabel = rightlabel
|
||||
self.bar = bar
|
||||
@ -46,7 +54,7 @@ public class ListRightVariableTotalDataModel: ListItemModel, MoleculeModelProtoc
|
||||
// MARK: - Keys
|
||||
//--------------------------------------------------
|
||||
|
||||
private enum CodingKeys: String, CodingKey{
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case moleculeName
|
||||
case leftLabel
|
||||
case rightLabel
|
||||
@ -61,7 +69,7 @@ public class ListRightVariableTotalDataModel: ListItemModel, MoleculeModelProtoc
|
||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||
leftLabel = try typeContainer.decode(LabelModel.self, forKey: .leftLabel)
|
||||
rightLabel = try typeContainer.decode(LabelModel.self, forKey: .rightLabel)
|
||||
bar = try typeContainer.decode(LineModel.self, forKey: .bar)
|
||||
bar = try typeContainer.decode(DataLineModel.self, forKey: .bar)
|
||||
try super.init(from: decoder)
|
||||
}
|
||||
|
||||
|
||||
@ -82,13 +82,6 @@ public extension UINavigationController {
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns a ShadowImage based on the line property of NavigationItemModelProtocol
|
||||
func getNavigationBarShadowImage(for navigationItemModel: NavigationItemModelProtocol) -> UIImage? {
|
||||
guard let model = navigationItemModel.line else { return nil }
|
||||
let line = Line(model: model, nil, nil)
|
||||
return line.lineColor.image(CGSize(width: line.lineWidth, height: line.lineWidth))
|
||||
}
|
||||
|
||||
/// Convenience function for setting the navigation bar ui
|
||||
@MainActor
|
||||
func setNavigationBarUI(with model: NavigationItemModelProtocol) {
|
||||
@ -105,14 +98,7 @@ public extension UINavigationController {
|
||||
appearance.backgroundColor = backgroundColor
|
||||
appearance.titleTextAttributes.updateValue(tint, forKey: .foregroundColor)
|
||||
appearance.titlePositionAdjustment = model.titleOffset ?? .zero
|
||||
if let type = model.line?.type,
|
||||
type != .none,
|
||||
let color = model.line?.backgroundColor {
|
||||
appearance.shadowColor = color.uiColor
|
||||
} else {
|
||||
appearance.shadowColor = .clear
|
||||
}
|
||||
appearance.shadowImage = getNavigationBarShadowImage(for: model)?.withRenderingMode(.alwaysTemplate)
|
||||
appearance.setShadow(for: model.line)
|
||||
navigationBar.standardAppearance = appearance
|
||||
navigationBar.scrollEdgeAppearance = appearance
|
||||
|
||||
@ -126,3 +112,16 @@ public extension UINavigationController {
|
||||
return viewController
|
||||
}
|
||||
}
|
||||
|
||||
public extension UINavigationBarAppearance {
|
||||
func setShadow(for model: LineModel?) {
|
||||
let model = model ?? LineModel(type: .secondary)
|
||||
let line = Line(model: model, nil, nil)
|
||||
if model.type != .none {
|
||||
shadowColor = line.lineColor
|
||||
} else {
|
||||
shadowColor = .clear
|
||||
}
|
||||
shadowImage = line.lineColor.image(CGSize(width: line.lineWidth, height: line.lineWidth)).withRenderingMode(.alwaysTemplate)
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,13 +125,14 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
|
||||
/// Hides/Shows the navigation bar for the page.
|
||||
open func hideNavigationBarLine(_ isHidden: Bool) {
|
||||
guard self == navigationController?.topViewController else { return }
|
||||
var color = UIColor.clear
|
||||
if !isHidden,
|
||||
let backgroundColor = (getCurrentViewController() as? PageProtocol)?.pageModel?.navigationBar?.line?.backgroundColor?.uiColor {
|
||||
color = backgroundColor
|
||||
var model: LineModel?
|
||||
if isHidden {
|
||||
model = LineModel(type: .none)
|
||||
} else if let lineModel = (getCurrentViewController() as? PageProtocol)?.pageModel?.navigationBar?.line {
|
||||
model = lineModel
|
||||
}
|
||||
navigationController?.navigationBar.standardAppearance.shadowColor = color
|
||||
navigationController?.navigationBar.scrollEdgeAppearance?.shadowColor = color
|
||||
navigationController?.navigationBar.standardAppearance.setShadow(for: model)
|
||||
navigationController?.navigationBar.scrollEdgeAppearance?.setShadow(for: model)
|
||||
}
|
||||
|
||||
open override func updateViews() {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user