vds_ios/VDS/Components/Line/Line.swift
Matt Bruce 6e7ff86b0b refactored colorConfig -> colorConfiguration
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2023-06-05 12:57:40 -05:00

68 lines
2.0 KiB
Swift

//
// Line.swift
// VDS
//
// Created by Nadigadda, Sumanth on 24/03/23.
//
import Foundation
import UIKit
import VDSColorTokens
@objc(VDSLine)
open class Line: View {
//--------------------------------------------------
// MARK: - Enums
//--------------------------------------------------
public enum Style: String, CaseIterable {
case primary, secondary
}
//--------------------------------------------------
// MARK: - Public Properties
//--------------------------------------------------
open var lineView = UIView().with {
$0.translatesAutoresizingMaskIntoConstraints = false
}
open var style: Style = .primary { didSet { setNeedsUpdate() } }
//--------------------------------------------------
// MARK: - Lifecycle
//--------------------------------------------------
open override func setup() {
super.setup()
addSubview(lineView)
lineView.height(1)
lineView
.pinLeading()
.pinTrailing()
}
open override func reset() {
super.reset()
style = .primary
}
//--------------------------------------------------
// MARK: - Configuration
//--------------------------------------------------
public var lineViewColorConfiguration: AnyColorable = {
let config = KeyedColorConfiguration<Line, Style>(keyPath: \.style)
config.setSurfaceColors(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark, forKey: .primary)
config.setSurfaceColors(VDSColor.elementsLowcontrastOnlight, VDSColor.elementsLowcontrastOndark, forKey: .secondary)
return config.eraseToAnyColorable()
}()
//--------------------------------------------------
// MARK: - State
//--------------------------------------------------
open override func updateView() {
lineView.backgroundColor = lineViewColorConfiguration.getColor(self)
}
}