added AnyEquality to classes that have an a property with 'any' added default implementation on shouldUpdateView() to check equality, this can be re-implemented in classes removed all shouldUpdateView methods everywhere since above was done Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
129 lines
4.3 KiB
Swift
129 lines
4.3 KiB
Swift
//
|
|
// ToggleModel.swift
|
|
// VDS
|
|
//
|
|
// Created by Matt Bruce on 7/22/22.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
|
|
public protocol RadioButtonModel: Modelable, FormFieldable, Errorable, DataTrackable, Accessable, Selectable, BinaryColorable {
|
|
var labelText: String? { get set }
|
|
var labelTextAttributes: [any LabelAttributeModel]? { get set }
|
|
var childText: String? { get set }
|
|
var childTextAttributes: [any LabelAttributeModel]? { get set }
|
|
}
|
|
|
|
extension RadioButtonModel {
|
|
|
|
public var shouldShowError: Bool {
|
|
guard hasError && !disabled && errorText?.isEmpty == false else { return false }
|
|
return true
|
|
}
|
|
|
|
public var shouldShowLabels: Bool {
|
|
guard labelText?.isEmpty == false || childText?.isEmpty == false else { return false }
|
|
return true
|
|
}
|
|
|
|
public var labelModel: DefaultLabelModel? {
|
|
guard let labelText = labelText else { return nil }
|
|
var model = DefaultLabelModel()
|
|
model.textPosition = .left
|
|
model.typograpicalStyle = .BoldBodyLarge
|
|
model.text = labelText
|
|
model.surface = surface
|
|
model.disabled = disabled
|
|
model.attributes = labelTextAttributes
|
|
return model
|
|
}
|
|
|
|
public var childModel: DefaultLabelModel? {
|
|
guard let childText = childText else { return nil }
|
|
var model = DefaultLabelModel()
|
|
model.textPosition = .left
|
|
model.typograpicalStyle = .BodyLarge
|
|
model.text = childText
|
|
model.surface = surface
|
|
model.disabled = disabled
|
|
model.attributes = childTextAttributes
|
|
return model
|
|
}
|
|
|
|
public var errorModel: DefaultLabelModel? {
|
|
guard let errorText = errorText, hasError else { return nil }
|
|
var model = DefaultLabelModel()
|
|
model.textPosition = .left
|
|
model.typograpicalStyle = .BodyMedium
|
|
model.text = errorText
|
|
model.surface = surface
|
|
model.disabled = disabled
|
|
return model
|
|
}
|
|
}
|
|
|
|
public struct DefaultRadioButtonModel: RadioButtonModel {
|
|
public var id = UUID()
|
|
public var selected: Bool = false
|
|
|
|
public var labelText: String?
|
|
public var labelTextAttributes: [any LabelAttributeModel]?
|
|
public var childText: String?
|
|
public var childTextAttributes: [any LabelAttributeModel]?
|
|
|
|
public var hasError: Bool = false
|
|
public var errorText: String?
|
|
|
|
public var inputId: String?
|
|
public var value: AnyHashable?
|
|
|
|
public var surface: Surface = .light
|
|
public var disabled: Bool = false
|
|
|
|
public var dataAnalyticsTrack: String?
|
|
public var dataClickStream: String?
|
|
public var dataTrack: String?
|
|
public var accessibilityHintEnabled: String?
|
|
public var accessibilityHintDisabled: String?
|
|
public var accessibilityValueEnabled: String?
|
|
public var accessibilityValueDisabled: String?
|
|
public var accessibilityLabelEnabled: String?
|
|
public var accessibilityLabelDisabled: String?
|
|
|
|
public init() {}
|
|
|
|
public static func == (lhs: DefaultRadioButtonModel, rhs: DefaultRadioButtonModel) -> Bool {
|
|
lhs.isEqual(rhs)
|
|
}
|
|
|
|
public func isEqual(_ equatable: DefaultRadioButtonModel) -> Bool {
|
|
return id == equatable.id
|
|
&& selected == equatable.selected
|
|
|
|
&& labelText == equatable.labelText
|
|
&& labelTextAttributes == equatable.labelTextAttributes
|
|
&& childText == equatable.childText
|
|
&& childTextAttributes == equatable.childTextAttributes
|
|
|
|
&& hasError == equatable.hasError
|
|
&& errorText == equatable.errorText
|
|
|
|
&& inputId == equatable.inputId
|
|
&& value == equatable.value
|
|
|
|
&& surface == equatable.surface
|
|
&& disabled == equatable.disabled
|
|
|
|
&& dataAnalyticsTrack == equatable.dataAnalyticsTrack
|
|
&& dataClickStream == equatable.dataClickStream
|
|
&& dataTrack == equatable.dataTrack
|
|
&& accessibilityHintEnabled == equatable.accessibilityHintEnabled
|
|
&& accessibilityHintDisabled == equatable.accessibilityHintDisabled
|
|
&& accessibilityValueEnabled == equatable.accessibilityValueEnabled
|
|
&& accessibilityValueDisabled == equatable.accessibilityValueDisabled
|
|
&& accessibilityLabelEnabled == equatable.accessibilityLabelEnabled
|
|
&& accessibilityLabelDisabled == equatable.accessibilityLabelDisabled
|
|
}
|
|
}
|