TitleLockup converted to models
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
2009a52060
commit
98242fe055
@ -51,10 +51,13 @@
|
|||||||
EA89201328B568D8006B9984 /* RadioBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201228B568D8006B9984 /* RadioBox.swift */; };
|
EA89201328B568D8006B9984 /* RadioBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201228B568D8006B9984 /* RadioBox.swift */; };
|
||||||
EA89201528B56CF4006B9984 /* RadioBoxGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201428B56CF4006B9984 /* RadioBoxGroup.swift */; };
|
EA89201528B56CF4006B9984 /* RadioBoxGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89201428B56CF4006B9984 /* RadioBoxGroup.swift */; };
|
||||||
EA978EC5291D6AFE00ACC883 /* AnyLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA978EC4291D6AFE00ACC883 /* AnyLabelAttribute.swift */; };
|
EA978EC5291D6AFE00ACC883 /* AnyLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA978EC4291D6AFE00ACC883 /* AnyLabelAttribute.swift */; };
|
||||||
EA985BE429688F3300F2FF2E /* TiletTypographicalStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BE329688F3300F2FF2E /* TiletTypographicalStyle.swift */; };
|
|
||||||
EA985BE629688F6A00F2FF2E /* TiletBadgeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BE529688F6A00F2FF2E /* TiletBadgeModel.swift */; };
|
EA985BE629688F6A00F2FF2E /* TiletBadgeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BE529688F6A00F2FF2E /* TiletBadgeModel.swift */; };
|
||||||
EA985BE82968951C00F2FF2E /* TiletTitleModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BE72968951C00F2FF2E /* TiletTitleModel.swift */; };
|
EA985BE82968951C00F2FF2E /* TiletTitleModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BE72968951C00F2FF2E /* TiletTitleModel.swift */; };
|
||||||
EA985BEA29689B6D00F2FF2E /* TiletSubTitleModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BE929689B6D00F2FF2E /* TiletSubTitleModel.swift */; };
|
EA985BEA29689B6D00F2FF2E /* TiletSubTitleModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BE929689B6D00F2FF2E /* TiletSubTitleModel.swift */; };
|
||||||
|
EA985BEC2968A91200F2FF2E /* TitleLockupTitleModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BEB2968A91200F2FF2E /* TitleLockupTitleModel.swift */; };
|
||||||
|
EA985BEE2968A92400F2FF2E /* TitleLockupSubTitleModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BED2968A92400F2FF2E /* TitleLockupSubTitleModel.swift */; };
|
||||||
|
EA985BF02968A93600F2FF2E /* TitleLockupEyebrowModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BEF2968A93600F2FF2E /* TitleLockupEyebrowModel.swift */; };
|
||||||
|
EA985BF22968B5BB00F2FF2E /* TitleLockupTypography.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA985BF12968B5BB00F2FF2E /* TitleLockupTypography.swift */; };
|
||||||
EAA5EEB528ECBFB4003B3210 /* ImageLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAA5EEB428ECBFB4003B3210 /* ImageLabelAttribute.swift */; };
|
EAA5EEB528ECBFB4003B3210 /* ImageLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAA5EEB428ECBFB4003B3210 /* ImageLabelAttribute.swift */; };
|
||||||
EAA5EEB728ECC03A003B3210 /* ToolTipLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAA5EEB628ECC03A003B3210 /* ToolTipLabelAttribute.swift */; };
|
EAA5EEB728ECC03A003B3210 /* ToolTipLabelAttribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAA5EEB628ECC03A003B3210 /* ToolTipLabelAttribute.swift */; };
|
||||||
EAA5EEB928ECD24B003B3210 /* Icons.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EAA5EEB828ECD24B003B3210 /* Icons.xcassets */; };
|
EAA5EEB928ECD24B003B3210 /* Icons.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EAA5EEB828ECD24B003B3210 /* Icons.xcassets */; };
|
||||||
@ -155,10 +158,13 @@
|
|||||||
EA89201228B568D8006B9984 /* RadioBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioBox.swift; sourceTree = "<group>"; };
|
EA89201228B568D8006B9984 /* RadioBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioBox.swift; sourceTree = "<group>"; };
|
||||||
EA89201428B56CF4006B9984 /* RadioBoxGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioBoxGroup.swift; sourceTree = "<group>"; };
|
EA89201428B56CF4006B9984 /* RadioBoxGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RadioBoxGroup.swift; sourceTree = "<group>"; };
|
||||||
EA978EC4291D6AFE00ACC883 /* AnyLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyLabelAttribute.swift; sourceTree = "<group>"; };
|
EA978EC4291D6AFE00ACC883 /* AnyLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyLabelAttribute.swift; sourceTree = "<group>"; };
|
||||||
EA985BE329688F3300F2FF2E /* TiletTypographicalStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TiletTypographicalStyle.swift; sourceTree = "<group>"; };
|
|
||||||
EA985BE529688F6A00F2FF2E /* TiletBadgeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TiletBadgeModel.swift; sourceTree = "<group>"; };
|
EA985BE529688F6A00F2FF2E /* TiletBadgeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TiletBadgeModel.swift; sourceTree = "<group>"; };
|
||||||
EA985BE72968951C00F2FF2E /* TiletTitleModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TiletTitleModel.swift; sourceTree = "<group>"; };
|
EA985BE72968951C00F2FF2E /* TiletTitleModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TiletTitleModel.swift; sourceTree = "<group>"; };
|
||||||
EA985BE929689B6D00F2FF2E /* TiletSubTitleModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TiletSubTitleModel.swift; sourceTree = "<group>"; };
|
EA985BE929689B6D00F2FF2E /* TiletSubTitleModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TiletSubTitleModel.swift; sourceTree = "<group>"; };
|
||||||
|
EA985BEB2968A91200F2FF2E /* TitleLockupTitleModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockupTitleModel.swift; sourceTree = "<group>"; };
|
||||||
|
EA985BED2968A92400F2FF2E /* TitleLockupSubTitleModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockupSubTitleModel.swift; sourceTree = "<group>"; };
|
||||||
|
EA985BEF2968A93600F2FF2E /* TitleLockupEyebrowModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockupEyebrowModel.swift; sourceTree = "<group>"; };
|
||||||
|
EA985BF12968B5BB00F2FF2E /* TitleLockupTypography.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TitleLockupTypography.swift; sourceTree = "<group>"; };
|
||||||
EAA5EEB428ECBFB4003B3210 /* ImageLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageLabelAttribute.swift; sourceTree = "<group>"; };
|
EAA5EEB428ECBFB4003B3210 /* ImageLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageLabelAttribute.swift; sourceTree = "<group>"; };
|
||||||
EAA5EEB628ECC03A003B3210 /* ToolTipLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolTipLabelAttribute.swift; sourceTree = "<group>"; };
|
EAA5EEB628ECC03A003B3210 /* ToolTipLabelAttribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolTipLabelAttribute.swift; sourceTree = "<group>"; };
|
||||||
EAA5EEB828ECD24B003B3210 /* Icons.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Icons.xcassets; sourceTree = "<group>"; };
|
EAA5EEB828ECD24B003B3210 /* Icons.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Icons.xcassets; sourceTree = "<group>"; };
|
||||||
@ -465,6 +471,10 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
EA5E30522950DDA60082B959 /* TitleLockup.swift */,
|
EA5E30522950DDA60082B959 /* TitleLockup.swift */,
|
||||||
|
EA985BEF2968A93600F2FF2E /* TitleLockupEyebrowModel.swift */,
|
||||||
|
EA985BED2968A92400F2FF2E /* TitleLockupSubTitleModel.swift */,
|
||||||
|
EA985BEB2968A91200F2FF2E /* TitleLockupTitleModel.swift */,
|
||||||
|
EA985BF12968B5BB00F2FF2E /* TitleLockupTypography.swift */,
|
||||||
);
|
);
|
||||||
path = TitleLockup;
|
path = TitleLockup;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -473,10 +483,9 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
EA5E3057295105A40082B959 /* Tilet.swift */,
|
EA5E3057295105A40082B959 /* Tilet.swift */,
|
||||||
EA985BE329688F3300F2FF2E /* TiletTypographicalStyle.swift */,
|
|
||||||
EA985BE529688F6A00F2FF2E /* TiletBadgeModel.swift */,
|
EA985BE529688F6A00F2FF2E /* TiletBadgeModel.swift */,
|
||||||
EA985BE72968951C00F2FF2E /* TiletTitleModel.swift */,
|
|
||||||
EA985BE929689B6D00F2FF2E /* TiletSubTitleModel.swift */,
|
EA985BE929689B6D00F2FF2E /* TiletSubTitleModel.swift */,
|
||||||
|
EA985BE72968951C00F2FF2E /* TiletTitleModel.swift */,
|
||||||
);
|
);
|
||||||
path = Tilet;
|
path = Tilet;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -723,6 +732,8 @@
|
|||||||
EA978EC5291D6AFE00ACC883 /* AnyLabelAttribute.swift in Sources */,
|
EA978EC5291D6AFE00ACC883 /* AnyLabelAttribute.swift in Sources */,
|
||||||
EA33622C2891E73B0071C351 /* FontProtocol.swift in Sources */,
|
EA33622C2891E73B0071C351 /* FontProtocol.swift in Sources */,
|
||||||
EAF7F11728A1475A00B287F5 /* RadioButton.swift in Sources */,
|
EAF7F11728A1475A00B287F5 /* RadioButton.swift in Sources */,
|
||||||
|
EA985BEE2968A92400F2FF2E /* TitleLockupSubTitleModel.swift in Sources */,
|
||||||
|
EA985BF22968B5BB00F2FF2E /* TitleLockupTypography.swift in Sources */,
|
||||||
EAB1D2CD28ABE76100DAE764 /* Withable.swift in Sources */,
|
EAB1D2CD28ABE76100DAE764 /* Withable.swift in Sources */,
|
||||||
EAC846F3294B95CE00F685BA /* ButtonGroupCollectionViewCell.swift in Sources */,
|
EAC846F3294B95CE00F685BA /* ButtonGroupCollectionViewCell.swift in Sources */,
|
||||||
EAF7F0952899861000B287F5 /* Checkbox.swift in Sources */,
|
EAF7F0952899861000B287F5 /* Checkbox.swift in Sources */,
|
||||||
@ -738,7 +749,6 @@
|
|||||||
EAB1D2EA28AE84AA00DAE764 /* UIControlPublisher.swift in Sources */,
|
EAB1D2EA28AE84AA00DAE764 /* UIControlPublisher.swift in Sources */,
|
||||||
EAF7F13328A2A16500B287F5 /* AttachmentLabelAttributeModel.swift in Sources */,
|
EAF7F13328A2A16500B287F5 /* AttachmentLabelAttributeModel.swift in Sources */,
|
||||||
EA0FC2C62914222900DF80B4 /* ButtonGroup.swift in Sources */,
|
EA0FC2C62914222900DF80B4 /* ButtonGroup.swift in Sources */,
|
||||||
EA985BE429688F3300F2FF2E /* TiletTypographicalStyle.swift in Sources */,
|
|
||||||
EA89200628B526D6006B9984 /* CheckboxGroup.swift in Sources */,
|
EA89200628B526D6006B9984 /* CheckboxGroup.swift in Sources */,
|
||||||
EAD8D2C128BFDE8B006EB6A6 /* UIGestureRecognizer+Publisher.swift in Sources */,
|
EAD8D2C128BFDE8B006EB6A6 /* UIGestureRecognizer+Publisher.swift in Sources */,
|
||||||
EAF7F0B9289C139800B287F5 /* ColorConfiguration.swift in Sources */,
|
EAF7F0B9289C139800B287F5 /* ColorConfiguration.swift in Sources */,
|
||||||
@ -759,6 +769,7 @@
|
|||||||
EAB1D29C28A5618900DAE764 /* RadioButtonGroup.swift in Sources */,
|
EAB1D29C28A5618900DAE764 /* RadioButtonGroup.swift in Sources */,
|
||||||
EA985BE629688F6A00F2FF2E /* TiletBadgeModel.swift in Sources */,
|
EA985BE629688F6A00F2FF2E /* TiletBadgeModel.swift in Sources */,
|
||||||
EA336171288B19200071C351 /* VDS.docc in Sources */,
|
EA336171288B19200071C351 /* VDS.docc in Sources */,
|
||||||
|
EA985BF02968A93600F2FF2E /* TitleLockupEyebrowModel.swift in Sources */,
|
||||||
EA5E30532950DDA60082B959 /* TitleLockup.swift in Sources */,
|
EA5E30532950DDA60082B959 /* TitleLockup.swift in Sources */,
|
||||||
EAA5EEB528ECBFB4003B3210 /* ImageLabelAttribute.swift in Sources */,
|
EAA5EEB528ECBFB4003B3210 /* ImageLabelAttribute.swift in Sources */,
|
||||||
EAB5FF0129424ACB00998C17 /* UIControl.swift in Sources */,
|
EAB5FF0129424ACB00998C17 /* UIControl.swift in Sources */,
|
||||||
@ -778,6 +789,7 @@
|
|||||||
EA3361A8288B23300071C351 /* UIColor.swift in Sources */,
|
EA3361A8288B23300071C351 /* UIColor.swift in Sources */,
|
||||||
EAC9257D29119B5400091998 /* TextLink.swift in Sources */,
|
EAC9257D29119B5400091998 /* TextLink.swift in Sources */,
|
||||||
EA1F266628B945070033E859 /* RadioSwatchGroup.swift in Sources */,
|
EA1F266628B945070033E859 /* RadioSwatchGroup.swift in Sources */,
|
||||||
|
EA985BEC2968A91200F2FF2E /* TitleLockupTitleModel.swift in Sources */,
|
||||||
5FC35BE328D51405004EBEAC /* Button.swift in Sources */,
|
5FC35BE328D51405004EBEAC /* Button.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
|||||||
@ -23,40 +23,6 @@ public enum TitleLockupTextPosition: String, Codable, CaseIterable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum TitleLockupTitleTypographicalStyle: String, Codable, EnumSubset {
|
|
||||||
|
|
||||||
case FeatureMedium
|
|
||||||
case BoldFeatureMedium
|
|
||||||
case FeatureSmall
|
|
||||||
case BoldFeatureSmall
|
|
||||||
case FeatureXSmall
|
|
||||||
case BoldFeatureXSmall
|
|
||||||
|
|
||||||
case Title2XLarge
|
|
||||||
case BoldTitle2XLarge
|
|
||||||
case TitleXLarge
|
|
||||||
case BoldTitleXLarge
|
|
||||||
case TitleLarge
|
|
||||||
case BoldTitleLarge
|
|
||||||
case TitleMedium
|
|
||||||
case BoldTitleMedium
|
|
||||||
case TitleSmall
|
|
||||||
case BoldTitleSmall
|
|
||||||
|
|
||||||
public var defaultValue: TypographicalStyle {.BoldFeatureXSmall }
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum TitleLockupOtherTypographicalStyle: String, Codable, EnumSubset {
|
|
||||||
case BodyLarge
|
|
||||||
case BoldBodyLarge
|
|
||||||
case BodyMedium
|
|
||||||
case BoldBodyMedium
|
|
||||||
case BodySmall
|
|
||||||
case BoldBodySmall
|
|
||||||
|
|
||||||
public var defaultValue: TypographicalStyle {.BodyLarge }
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc(VDSTitleLockup)
|
@objc(VDSTitleLockup)
|
||||||
open class TitleLockup: View {
|
open class TitleLockup: View {
|
||||||
|
|
||||||
@ -214,30 +180,26 @@ open class TitleLockup: View {
|
|||||||
open var textPosition: TitleLockupTextPosition = .left { didSet { didChange() }}
|
open var textPosition: TitleLockupTextPosition = .left { didSet { didChange() }}
|
||||||
|
|
||||||
//style
|
//style
|
||||||
open var titleTypograpicalStyle: TitleLockupTitleTypographicalStyle = .BoldFeatureXSmall { didSet { didChange() }}
|
|
||||||
open var otherTypograpicalStyle: TitleLockupOtherTypographicalStyle = UIDevice.isIPad ? .BodyLarge : .BodyMedium { didSet { didChange() }}
|
open var otherTypograpicalStyle: TitleLockupOtherTypographicalStyle = UIDevice.isIPad ? .BodyLarge : .BodyMedium { didSet { didChange() }}
|
||||||
|
|
||||||
//first row
|
//first row
|
||||||
open var eyebrowLabel = Label().with {
|
open var eyebrowLabel = Label().with {
|
||||||
$0.setContentCompressionResistancePriority(.required, for: .vertical)
|
$0.setContentCompressionResistancePriority(.required, for: .vertical)
|
||||||
}
|
}
|
||||||
open var eyebrowText: String = "" { didSet { didChange() }}
|
open var eyebrowModel: TitleLockupEyebrowModel? { didSet { didChange() }}
|
||||||
open var eyebrowTextAttributes: [any LabelAttributeModel]? { didSet { didChange() }}
|
|
||||||
|
|
||||||
//second row
|
//second row
|
||||||
open var titleLabel = Label().with {
|
open var titleLabel = Label().with {
|
||||||
$0.setContentCompressionResistancePriority(.required, for: .vertical)
|
$0.setContentCompressionResistancePriority(.required, for: .vertical)
|
||||||
}
|
}
|
||||||
open var titleText: String = "" { didSet { didChange() }}
|
open var titleModel: TitleLockupTitleModel? { didSet { didChange() }}
|
||||||
open var titleTextAttributes: [any LabelAttributeModel]? { didSet { didChange() }}
|
|
||||||
|
|
||||||
//third row
|
//third row
|
||||||
open var subTitleLabel = Label().with {
|
open var subTitleLabel = Label().with {
|
||||||
$0.setContentCompressionResistancePriority(.required, for: .vertical)
|
$0.setContentCompressionResistancePriority(.required, for: .vertical)
|
||||||
}
|
}
|
||||||
open var subTitleText: String = "" { didSet { didChange() }}
|
open var subTitleModel: TitleLockupSubTitleModel? { didSet { didChange() }}
|
||||||
open var subTitleTextAttributes: [any LabelAttributeModel]? { didSet { didChange() }}
|
|
||||||
open var subTitleColor: Use = .primary { didSet { didChange() }}
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Lifecycle
|
// MARK: - Lifecycle
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -266,14 +228,9 @@ open class TitleLockup: View {
|
|||||||
|
|
||||||
textPosition = .left
|
textPosition = .left
|
||||||
|
|
||||||
eyebrowText = ""
|
eyebrowModel = nil
|
||||||
eyebrowTextAttributes = nil
|
titleModel = nil
|
||||||
titleText = ""
|
subTitleModel = nil
|
||||||
titleTextAttributes = nil
|
|
||||||
subTitleText = ""
|
|
||||||
subTitleTextAttributes = nil
|
|
||||||
titleTextAttributes = nil
|
|
||||||
titleTypograpicalStyle = .BoldFeatureXSmall
|
|
||||||
otherTypograpicalStyle = .BodyLarge
|
otherTypograpicalStyle = .BodyLarge
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -285,48 +242,56 @@ open class TitleLockup: View {
|
|||||||
super.updateView()
|
super.updateView()
|
||||||
|
|
||||||
let allLabelsTextPosition = textPosition.labelTextPosition
|
let allLabelsTextPosition = textPosition.labelTextPosition
|
||||||
|
var eyebrowTextIsEmpty = true
|
||||||
|
var titleTextIsEmpty = true
|
||||||
|
var subTitleTextIsEmpty = true
|
||||||
|
|
||||||
eyebrowLabel.textPosition = allLabelsTextPosition
|
if let eyebrowModel, !eyebrowModel.text.isEmpty {
|
||||||
eyebrowLabel.typograpicalStyle = otherTypograpicalStyle.value
|
eyebrowTextIsEmpty = false
|
||||||
eyebrowLabel.text = eyebrowText
|
eyebrowLabel.textPosition = allLabelsTextPosition
|
||||||
eyebrowLabel.attributes = eyebrowTextAttributes
|
eyebrowLabel.typograpicalStyle = otherTypograpicalStyle.value
|
||||||
eyebrowLabel.surface = surface
|
eyebrowLabel.text = eyebrowModel.text
|
||||||
|
eyebrowLabel.attributes = eyebrowModel.textAttributes
|
||||||
|
eyebrowLabel.numberOfLines = eyebrowModel.numberOfLines
|
||||||
|
eyebrowLabel.surface = surface
|
||||||
|
}
|
||||||
|
|
||||||
titleLabel.textPosition = allLabelsTextPosition
|
if let titleModel, !titleModel.text.isEmpty {
|
||||||
titleLabel.typograpicalStyle = titleTypograpicalStyle.value
|
titleTextIsEmpty = false
|
||||||
titleLabel.text = titleText
|
titleLabel.textPosition = allLabelsTextPosition
|
||||||
titleLabel.attributes = titleTextAttributes
|
titleLabel.typograpicalStyle = titleModel.typographicalStyle.value
|
||||||
titleLabel.surface = surface
|
titleLabel.text = titleModel.text
|
||||||
|
titleLabel.attributes = titleModel.textAttributes
|
||||||
|
titleLabel.numberOfLines = titleModel.numberOfLines
|
||||||
|
titleLabel.surface = surface
|
||||||
|
}
|
||||||
|
|
||||||
|
if let subTitleModel, !subTitleModel.text.isEmpty {
|
||||||
|
subTitleTextIsEmpty = false
|
||||||
|
subTitleLabel.textPosition = allLabelsTextPosition
|
||||||
|
subTitleLabel.typograpicalStyle = otherTypograpicalStyle.value
|
||||||
|
subTitleLabel.text = subTitleModel.text
|
||||||
|
subTitleLabel.attributes = subTitleModel.textAttributes
|
||||||
|
subTitleLabel.numberOfLines = subTitleModel.numberOfLines
|
||||||
|
subTitleLabel.surface = surface
|
||||||
|
subTitleLabel.disabled = subTitleModel.textColor == .secondary
|
||||||
|
}
|
||||||
|
|
||||||
subTitleLabel.textPosition = allLabelsTextPosition
|
|
||||||
subTitleLabel.typograpicalStyle = otherTypograpicalStyle.value
|
|
||||||
subTitleLabel.text = subTitleText
|
|
||||||
subTitleLabel.attributes = subTitleTextAttributes
|
|
||||||
subTitleLabel.surface = surface
|
|
||||||
subTitleLabel.disabled = subTitleColor == .secondary
|
|
||||||
|
|
||||||
//if both first 2 rows not empty set spacing
|
//if both first 2 rows not empty set spacing
|
||||||
if !eyebrowText.isEmpty && !titleText.isEmpty {
|
if let eyebrowModel, let titleModel, !eyebrowModel.text.isEmpty, !titleModel.text.isEmpty {
|
||||||
stackView.spacing = getTopSpacing()
|
stackView.spacing = topTypographicalStyleSpacingConfig.spacing(for: titleModel.typographicalStyle.value, neighboring: otherTypograpicalStyle.value)
|
||||||
} else {
|
} else {
|
||||||
stackView.spacing = 0.0
|
stackView.spacing = 0.0
|
||||||
}
|
}
|
||||||
|
|
||||||
//if either first 2 rows not empty and subtile not empty, create space else collapse
|
//if either first 2 rows not empty and subtile not empty, create space else collapse
|
||||||
if (!eyebrowText.isEmpty || !titleText.isEmpty) && !subTitleText.isEmpty {
|
if let titleModel, (!eyebrowTextIsEmpty || !titleTextIsEmpty) && !subTitleTextIsEmpty {
|
||||||
stackView.setCustomSpacing(getBottomSpacing(), after: titleLabel)
|
let bottomSpace = bottomTypographicalStyleSpacingConfig.spacing(for: titleModel.typographicalStyle.value, neighboring: otherTypograpicalStyle.value)
|
||||||
} else if (!eyebrowText.isEmpty || !titleText.isEmpty) && subTitleText.isEmpty {
|
stackView.setCustomSpacing(bottomSpace, after: titleLabel)
|
||||||
|
} else if (!eyebrowTextIsEmpty || !titleTextIsEmpty) && subTitleTextIsEmpty {
|
||||||
stackView.setCustomSpacing(0.0, after: titleLabel)
|
stackView.setCustomSpacing(0.0, after: titleLabel)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open func getTopSpacing() -> CGFloat {
|
|
||||||
topTypographicalStyleSpacingConfig.spacing(for: titleTypograpicalStyle.value, neighboring: otherTypograpicalStyle.value)
|
|
||||||
}
|
|
||||||
|
|
||||||
open func getBottomSpacing() -> CGFloat {
|
|
||||||
bottomTypographicalStyleSpacingConfig.spacing(for: titleTypograpicalStyle.value, neighboring: otherTypograpicalStyle.value)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension TypographicalStyle {
|
extension TypographicalStyle {
|
||||||
|
|||||||
22
VDS/Components/TitleLockup/TitleLockupEyebrowModel.swift
Normal file
22
VDS/Components/TitleLockup/TitleLockupEyebrowModel.swift
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
//
|
||||||
|
// TitleLockupEyebrowModel.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 1/6/23.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public struct TitleLockupEyebrowModel {
|
||||||
|
public var text: String
|
||||||
|
public var textAttributes: [any LabelAttributeModel]?
|
||||||
|
public var numberOfLines: Int
|
||||||
|
|
||||||
|
public init(text: String,
|
||||||
|
textAttributes: [any LabelAttributeModel]? = nil,
|
||||||
|
numberOfLines: Int = 0) {
|
||||||
|
self.text = text
|
||||||
|
self.textAttributes = textAttributes
|
||||||
|
self.numberOfLines = numberOfLines
|
||||||
|
}
|
||||||
|
}
|
||||||
25
VDS/Components/TitleLockup/TitleLockupSubTitleModel.swift
Normal file
25
VDS/Components/TitleLockup/TitleLockupSubTitleModel.swift
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
//
|
||||||
|
// TitleLockupSubTitleModel.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 1/6/23.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public struct TitleLockupSubTitleModel {
|
||||||
|
public var text: String
|
||||||
|
public var textColor: Use
|
||||||
|
public var textAttributes: [any LabelAttributeModel]?
|
||||||
|
public var numberOfLines: Int
|
||||||
|
|
||||||
|
public init(text: String,
|
||||||
|
textColor: Use = .primary,
|
||||||
|
textAttributes: [any LabelAttributeModel]? = nil,
|
||||||
|
numberOfLines: Int = 0) {
|
||||||
|
self.text = text
|
||||||
|
self.textColor = textColor
|
||||||
|
self.textAttributes = textAttributes
|
||||||
|
self.numberOfLines = numberOfLines
|
||||||
|
}
|
||||||
|
}
|
||||||
25
VDS/Components/TitleLockup/TitleLockupTitleModel.swift
Normal file
25
VDS/Components/TitleLockup/TitleLockupTitleModel.swift
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
//
|
||||||
|
// TitleLockupTitleModel.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 1/6/23.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public struct TitleLockupTitleModel {
|
||||||
|
public var text: String
|
||||||
|
public var textAttributes: [any LabelAttributeModel]?
|
||||||
|
public var typographicalStyle: TitleLockupTitleTypographicalStyle
|
||||||
|
public var numberOfLines: Int
|
||||||
|
|
||||||
|
public init(text: String,
|
||||||
|
textAttributes: [any LabelAttributeModel]? = nil,
|
||||||
|
typographicalStyle: TitleLockupTitleTypographicalStyle = .BoldFeatureXSmall,
|
||||||
|
numberOfLines: Int = 0) {
|
||||||
|
self.text = text
|
||||||
|
self.textAttributes = textAttributes
|
||||||
|
self.typographicalStyle = typographicalStyle
|
||||||
|
self.numberOfLines = numberOfLines
|
||||||
|
}
|
||||||
|
}
|
||||||
42
VDS/Components/TitleLockup/TitleLockupTypography.swift
Normal file
42
VDS/Components/TitleLockup/TitleLockupTypography.swift
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
//
|
||||||
|
// TitleLockupTypography.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 1/6/23.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public enum TitleLockupTitleTypographicalStyle: String, Codable, EnumSubset {
|
||||||
|
|
||||||
|
case FeatureMedium
|
||||||
|
case BoldFeatureMedium
|
||||||
|
case FeatureSmall
|
||||||
|
case BoldFeatureSmall
|
||||||
|
case FeatureXSmall
|
||||||
|
case BoldFeatureXSmall
|
||||||
|
|
||||||
|
case Title2XLarge
|
||||||
|
case BoldTitle2XLarge
|
||||||
|
case TitleXLarge
|
||||||
|
case BoldTitleXLarge
|
||||||
|
case TitleLarge
|
||||||
|
case BoldTitleLarge
|
||||||
|
case TitleMedium
|
||||||
|
case BoldTitleMedium
|
||||||
|
case TitleSmall
|
||||||
|
case BoldTitleSmall
|
||||||
|
|
||||||
|
public var defaultValue: TypographicalStyle {.BoldFeatureXSmall }
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum TitleLockupOtherTypographicalStyle: String, Codable, EnumSubset {
|
||||||
|
case BodyLarge
|
||||||
|
case BoldBodyLarge
|
||||||
|
case BodyMedium
|
||||||
|
case BoldBodyMedium
|
||||||
|
case BodySmall
|
||||||
|
case BoldBodySmall
|
||||||
|
|
||||||
|
public var defaultValue: TypographicalStyle {.BodyLarge }
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user