48 lines
1.4 KiB
Swift
48 lines
1.4 KiB
Swift
//
|
|
// ButtonModel.swift
|
|
// VDS
|
|
//
|
|
// Created by Jarrod Courtney on 9/16/22.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
|
|
public protocol ButtonModel: Modelable, Useable, Equatable, AnyEquatable {
|
|
var text: String? { get set }
|
|
var attributes: [any LabelAttributeModel]? { get set }
|
|
var buttonWidth: CGFloat? { get set }
|
|
var buttonSize: Use.Size { get set }
|
|
var use: Use { get set }
|
|
}
|
|
|
|
public struct DefaultButtonModel: ButtonModel {
|
|
|
|
public static func == (lhs: DefaultButtonModel, rhs: DefaultButtonModel) -> Bool {
|
|
lhs.isEqual(rhs)
|
|
}
|
|
|
|
public func isEqual(_ equatable: DefaultButtonModel) -> Bool {
|
|
return id == equatable.id
|
|
&& attributes == equatable.attributes
|
|
&& text == equatable.text
|
|
&& surface == equatable.surface
|
|
&& use == equatable.use
|
|
&& typograpicalStyle == equatable.typograpicalStyle
|
|
&& disabled == equatable.disabled
|
|
&& buttonWidth == equatable.buttonWidth
|
|
&& buttonSize == equatable.buttonSize
|
|
}
|
|
|
|
public var id = UUID()
|
|
public var text: String?
|
|
public var attributes: [any LabelAttributeModel]?
|
|
public var typograpicalStyle: TypographicalStyle = .BoldBodyLarge
|
|
public var surface: Surface = .light
|
|
public var use: Use = .primary
|
|
public var disabled: Bool = false
|
|
public var buttonWidth: CGFloat?
|
|
public var buttonSize: Use.Size = .large
|
|
public init(){}
|
|
}
|