put into files
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
b74a338b0f
commit
827269bb6d
@ -62,6 +62,8 @@
|
|||||||
EA5F86C82A1BD99100BC83E4 /* TabModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86C72A1BD99100BC83E4 /* TabModel.swift */; };
|
EA5F86C82A1BD99100BC83E4 /* TabModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86C72A1BD99100BC83E4 /* TabModel.swift */; };
|
||||||
EA5F86CC2A1D28B500BC83E4 /* ReleaseNotes.txt in Resources */ = {isa = PBXBuildFile; fileRef = EA5F86CB2A1D28B500BC83E4 /* ReleaseNotes.txt */; };
|
EA5F86CC2A1D28B500BC83E4 /* ReleaseNotes.txt in Resources */ = {isa = PBXBuildFile; fileRef = EA5F86CB2A1D28B500BC83E4 /* ReleaseNotes.txt */; };
|
||||||
EA5F86D02A1F936100BC83E4 /* TabsContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86CF2A1F936100BC83E4 /* TabsContainer.swift */; };
|
EA5F86D02A1F936100BC83E4 /* TabsContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA5F86CF2A1F936100BC83E4 /* TabsContainer.swift */; };
|
||||||
|
EA7B311D2A7018B600329654 /* TooltipModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA7B311C2A7018B600329654 /* TooltipModel.swift */; };
|
||||||
|
EA7B311F2A701AE400329654 /* Children.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA7B311E2A701AE400329654 /* Children.swift */; };
|
||||||
EA81410B2A0E8E3C004F60D2 /* ButtonIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA81410A2A0E8E3C004F60D2 /* ButtonIcon.swift */; };
|
EA81410B2A0E8E3C004F60D2 /* ButtonIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA81410A2A0E8E3C004F60D2 /* ButtonIcon.swift */; };
|
||||||
EA8141102A127066004F60D2 /* UIColor+VDSColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA81410F2A127066004F60D2 /* UIColor+VDSColor.swift */; };
|
EA8141102A127066004F60D2 /* UIColor+VDSColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA81410F2A127066004F60D2 /* UIColor+VDSColor.swift */; };
|
||||||
EA89200428AECF4B006B9984 /* UITextField+Publisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */; };
|
EA89200428AECF4B006B9984 /* UITextField+Publisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */; };
|
||||||
@ -207,6 +209,8 @@
|
|||||||
EA5F86C72A1BD99100BC83E4 /* TabModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabModel.swift; sourceTree = "<group>"; };
|
EA5F86C72A1BD99100BC83E4 /* TabModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabModel.swift; sourceTree = "<group>"; };
|
||||||
EA5F86CB2A1D28B500BC83E4 /* ReleaseNotes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = ReleaseNotes.txt; sourceTree = "<group>"; };
|
EA5F86CB2A1D28B500BC83E4 /* ReleaseNotes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = ReleaseNotes.txt; sourceTree = "<group>"; };
|
||||||
EA5F86CF2A1F936100BC83E4 /* TabsContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsContainer.swift; sourceTree = "<group>"; };
|
EA5F86CF2A1F936100BC83E4 /* TabsContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabsContainer.swift; sourceTree = "<group>"; };
|
||||||
|
EA7B311C2A7018B600329654 /* TooltipModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TooltipModel.swift; sourceTree = "<group>"; };
|
||||||
|
EA7B311E2A701AE400329654 /* Children.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Children.swift; sourceTree = "<group>"; };
|
||||||
EA81410A2A0E8E3C004F60D2 /* ButtonIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonIcon.swift; sourceTree = "<group>"; };
|
EA81410A2A0E8E3C004F60D2 /* ButtonIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonIcon.swift; sourceTree = "<group>"; };
|
||||||
EA81410F2A127066004F60D2 /* UIColor+VDSColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+VDSColor.swift"; sourceTree = "<group>"; };
|
EA81410F2A127066004F60D2 /* UIColor+VDSColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+VDSColor.swift"; sourceTree = "<group>"; };
|
||||||
EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+Publisher.swift"; sourceTree = "<group>"; };
|
EA89200328AECF4B006B9984 /* UITextField+Publisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITextField+Publisher.swift"; sourceTree = "<group>"; };
|
||||||
@ -503,6 +507,7 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
EA985C1C296CD13600F2FF2E /* BundleManager.swift */,
|
EA985C1C296CD13600F2FF2E /* BundleManager.swift */,
|
||||||
|
EA7B311E2A701AE400329654 /* Children.swift */,
|
||||||
EAF7F0B8289C139800B287F5 /* ColorConfiguration.swift */,
|
EAF7F0B8289C139800B287F5 /* ColorConfiguration.swift */,
|
||||||
EA3361B5288B2A410071C351 /* Control.swift */,
|
EA3361B5288B2A410071C351 /* Control.swift */,
|
||||||
EAF7F09F289AB7EC00B287F5 /* View.swift */,
|
EAF7F09F289AB7EC00B287F5 /* View.swift */,
|
||||||
@ -679,6 +684,7 @@
|
|||||||
EAB2375C29E8789100AABE9A /* Tooltip.swift */,
|
EAB2375C29E8789100AABE9A /* Tooltip.swift */,
|
||||||
EAB2376729E9992800AABE9A /* TooltipAlertViewController.swift */,
|
EAB2376729E9992800AABE9A /* TooltipAlertViewController.swift */,
|
||||||
EAB2376929E9E59100AABE9A /* TooltipLaunchable.swift */,
|
EAB2376929E9E59100AABE9A /* TooltipLaunchable.swift */,
|
||||||
|
EA7B311C2A7018B600329654 /* TooltipModel.swift */,
|
||||||
EAB2376129E9880400AABE9A /* TrailingTooltipLabel.swift */,
|
EAB2376129E9880400AABE9A /* TrailingTooltipLabel.swift */,
|
||||||
);
|
);
|
||||||
path = Tooltip;
|
path = Tooltip;
|
||||||
@ -923,6 +929,7 @@
|
|||||||
EA5E305A29510F8B0082B959 /* EnumSubset.swift in Sources */,
|
EA5E305A29510F8B0082B959 /* EnumSubset.swift in Sources */,
|
||||||
EA985BF7296C665E00F2FF2E /* IconName.swift in Sources */,
|
EA985BF7296C665E00F2FF2E /* IconName.swift in Sources */,
|
||||||
EA8141102A127066004F60D2 /* UIColor+VDSColor.swift in Sources */,
|
EA8141102A127066004F60D2 /* UIColor+VDSColor.swift in Sources */,
|
||||||
|
EA7B311D2A7018B600329654 /* TooltipModel.swift in Sources */,
|
||||||
EAF7F0AF289B144C00B287F5 /* UnderlineLabelAttribute.swift in Sources */,
|
EAF7F0AF289B144C00B287F5 /* UnderlineLabelAttribute.swift in Sources */,
|
||||||
EA0D1C412A6AD61C00E5C127 /* Typography+Additional.swift in Sources */,
|
EA0D1C412A6AD61C00E5C127 /* Typography+Additional.swift in Sources */,
|
||||||
EAC925842911C63100091998 /* Colorable.swift in Sources */,
|
EAC925842911C63100091998 /* Colorable.swift in Sources */,
|
||||||
@ -938,6 +945,7 @@
|
|||||||
EAC846F3294B95CE00F685BA /* ButtonGroupCollectionViewCell.swift in Sources */,
|
EAC846F3294B95CE00F685BA /* ButtonGroupCollectionViewCell.swift in Sources */,
|
||||||
EAF7F0952899861000B287F5 /* CheckboxItem.swift in Sources */,
|
EAF7F0952899861000B287F5 /* CheckboxItem.swift in Sources */,
|
||||||
EA985BE82968951C00F2FF2E /* TileletTitleModel.swift in Sources */,
|
EA985BE82968951C00F2FF2E /* TileletTitleModel.swift in Sources */,
|
||||||
|
EA7B311F2A701AE400329654 /* Children.swift in Sources */,
|
||||||
EA297A5529FB07760031ED56 /* TooltipLabelAttribute.swift in Sources */,
|
EA297A5529FB07760031ED56 /* TooltipLabelAttribute.swift in Sources */,
|
||||||
EA985BEA29689B6D00F2FF2E /* TileletSubTitleModel.swift in Sources */,
|
EA985BEA29689B6D00F2FF2E /* TileletSubTitleModel.swift in Sources */,
|
||||||
EA3361C9289054C50071C351 /* Surfaceable.swift in Sources */,
|
EA3361C9289054C50071C351 /* Surfaceable.swift in Sources */,
|
||||||
|
|||||||
106
VDS/Classes/Children.swift
Normal file
106
VDS/Classes/Children.swift
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
//
|
||||||
|
// Children.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 7/25/23.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
open class Children: View {
|
||||||
|
|
||||||
|
public enum Mode {
|
||||||
|
case textOnly
|
||||||
|
case viewOnly
|
||||||
|
case textViewOnly
|
||||||
|
|
||||||
|
public var errorMessage: String {
|
||||||
|
switch self {
|
||||||
|
case .textOnly:
|
||||||
|
return "Invalid type passed. Expected String."
|
||||||
|
case .viewOnly:
|
||||||
|
return "Invalid type passed. Expected a UIView."
|
||||||
|
case .textViewOnly:
|
||||||
|
return "Invalid type passed. Expected a UIView or String."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open var mode: Mode = .textViewOnly
|
||||||
|
|
||||||
|
open var child: Any? {
|
||||||
|
didSet {
|
||||||
|
updateChildView()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open var textStyle: TextStyle? {
|
||||||
|
didSet {
|
||||||
|
updateChildView()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open lazy var label: Label = {
|
||||||
|
let lbl = Label()
|
||||||
|
lbl.lineBreakMode = .byWordWrapping
|
||||||
|
lbl.numberOfLines = 0
|
||||||
|
lbl.layer.masksToBounds = true
|
||||||
|
lbl.textAlignment = .left
|
||||||
|
return lbl
|
||||||
|
}()
|
||||||
|
|
||||||
|
open var customSubview: UIView?
|
||||||
|
|
||||||
|
private func updateChildView() {
|
||||||
|
// Remove previous views if any
|
||||||
|
label.removeFromSuperview()
|
||||||
|
customSubview?.removeFromSuperview()
|
||||||
|
|
||||||
|
guard let child else { return }
|
||||||
|
|
||||||
|
var view: UIView? = nil
|
||||||
|
|
||||||
|
switch mode {
|
||||||
|
|
||||||
|
case .textOnly:
|
||||||
|
if let string = child as? String {
|
||||||
|
label.text = string
|
||||||
|
if let textStyle = textStyle {
|
||||||
|
label.textStyle = textStyle
|
||||||
|
}
|
||||||
|
view = label
|
||||||
|
}
|
||||||
|
case .viewOnly:
|
||||||
|
if let customView = child as? View {
|
||||||
|
customSubview = customView
|
||||||
|
view = customView
|
||||||
|
}
|
||||||
|
case .textViewOnly:
|
||||||
|
if let customView = child as? View {
|
||||||
|
customSubview = customView
|
||||||
|
view = customView
|
||||||
|
} else if let string = child as? String {
|
||||||
|
label.text = string
|
||||||
|
if let textStyle = textStyle {
|
||||||
|
label.textStyle = textStyle
|
||||||
|
}
|
||||||
|
view = label
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
guard let unwrappedView = view else {
|
||||||
|
print(mode.errorMessage)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
addSubview(unwrappedView)
|
||||||
|
unwrappedView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
NSLayoutConstraint.activate([
|
||||||
|
unwrappedView.topAnchor.constraint(equalTo: self.topAnchor),
|
||||||
|
unwrappedView.bottomAnchor.constraint(equalTo: self.bottomAnchor),
|
||||||
|
unwrappedView.leadingAnchor.constraint(equalTo: self.leadingAnchor),
|
||||||
|
unwrappedView.trailingAnchor.constraint(equalTo: self.trailingAnchor)
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
21
VDS/Components/Tooltip/TooltipModel.swift
Normal file
21
VDS/Components/Tooltip/TooltipModel.swift
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
//
|
||||||
|
// TooltipModel.swift
|
||||||
|
// VDS
|
||||||
|
//
|
||||||
|
// Created by Matt Bruce on 7/25/23.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
public struct TooltipModel {
|
||||||
|
public var surface: Surface
|
||||||
|
public var closeButtonText: String
|
||||||
|
public var title: String?
|
||||||
|
public var child: Any?
|
||||||
|
public init(surface: Surface = .light, closeButtonText: String = "Close", title: String?, child: Any? = nil) {
|
||||||
|
self.surface = surface
|
||||||
|
self.closeButtonText = closeButtonText
|
||||||
|
self.title = title
|
||||||
|
self.child = child
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user