Compare commits

..

39 Commits

Author SHA1 Message Date
Matt Bruce
5b4358e9e9 ensuring the range passed in is valid.
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2024-03-20 15:23:34 -05:00
Pfeil, Scott Robert
b021e14030 Merge branch 'revert-51315abf' into 'release/11_4_0'
Revert "Merge branch 'bugfix/PRODDEF-24073' into 'release/11_4_0'"

### Summary
Revert another miss merge.

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1076
2024-03-15 21:09:25 +00:00
Pfeil, Scott Robert
e1f248875e Revert "Merge branch 'bugfix/PRODDEF-24073' into 'release/11_4_0'"
This reverts merge request !1062
2024-03-15 21:08:11 +00:00
Pfeil, Scott Robert
51315abf49 Merge branch 'bugfix/PRODDEF-24073' into 'release/11_4_0'
Added customActions to checkBoxLabel

### Summary
CheckBoxLabel will be receiving the single focus with no clause. Implemented customActions for the label embedded with actions.

### JIRA Ticket
https://onejira.verizon.com/browse/PRODDEF-24073

Co-authored-by: Keerthy <keerthy.marakanti@verizon.com>
Co-authored-by: Matt Bruce <matt.bruce@verizon.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1062
2024-03-15 21:07:37 +00:00
Pfeil, Scott Robert
59ea9ca2bd Merge branch 'bugfix/CXTDT-531370' into 'release/11_4_0'
doing extra guards for actionMap and actionText range to ensure a valid...

### Summary
nil ActionMap being sent to the Label which caused a range issue. Guards were put in place to ensure this can't happen. 

### JIRA Ticket
https://onejira.verizon.com/browse/CXTDT-531370

Co-authored-by: Matt Bruce <matt.bruce@verizon.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1075
2024-03-15 20:49:57 +00:00
Matt Bruce
3219d9f351 doing extra guards for actionMap and actionText range to ensure a valid ActionLabelAttribute gets created.
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2024-03-15 14:35:23 -05:00
Keerthy
6ab685d906 Merge branch 'develop' into bugfix/PRODDEF-24073 2024-03-15 22:43:39 +05:30
Pfeil, Scott Robert
869804cc39 Merge branch 'bugfix/atomic_vds_label-fontSize' into 'develop'
added the fontSize as a last resort for vars being set in the Label after fontStyle and fontName.

### Summary
Since moving to the new Typography system, we no longer should be accepting fontName/fontSize since you will lose all of the lineHeight/letterSpacing and other special formatting. 

I added a use-case for when there is only a fontSize given.

### JIRA Ticket
https://onejira.verizon.com/browse/CXTDT-533868

Co-authored-by: Matt Bruce <matt.bruce@verizon.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1074
2024-03-14 19:59:03 +00:00
Matt Bruce
09081b8bc8 added the fontSize as a last resort for vars being set in the Label after fontStyle and fontName.
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2024-03-14 14:31:57 -05:00
Pfeil, Scott Robert
2505559444 Merge branch 'feature/vds_header_mapping' into 'develop'
Digital PCT265 story ONEAPP-6389 - Button group size updates, title lockup...

### Summary
Sizing fixes for templates when using button group and font updates.

### JIRA Ticket
https://onejira.verizon.com/browse/ONEAPP-6389

Co-authored-by: Scott Pfeil <Scott.Pfeil3@verizonwireless.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1073
2024-03-14 14:26:30 +00:00
Pfeil, Scott Robert
37fadb9a29 Merge branch 'revert-8f166223' into 'release/11_4_0'
Revert "Merge branch 'feature/vds_header_mapping' into 'release/11_4_0'"

### Summary
Reverting mistaken merge

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1072
2024-03-14 14:16:15 +00:00
Pfeil, Scott Robert
054a70d41b Revert "Merge branch 'feature/vds_header_mapping' into 'release/11_4_0'"
This reverts merge request !1071
2024-03-14 14:14:49 +00:00
Pfeil, Scott Robert
8f166223d0 Merge branch 'feature/vds_header_mapping' into 'release/11_4_0'
Sizing fixes and font updates

### Summary
Sizing fixes for templates when using button group and font updates.

### JIRA Ticket
https://onejira.verizon.com/browse/ONEAPP-6389

Co-authored-by: Scott Pfeil <Scott.Pfeil3@verizonwireless.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1071
2024-03-13 17:47:56 +00:00
Pfeil, Scott Robert
a46f52e87b Merge branch 'release/11_4_0' into 'develop'
release/11_4_0 hotfix merge

Co-authored-by: Hedden, Kyle Matthew <kyle.hedden@verizonwireless.com>
Co-authored-by: Matt Bruce <matt.bruce@verizon.com>
Co-authored-by: Bruce, Matt R <matt.bruce@one.verizon.com>
Co-authored-by: Sumanth Nadigadda <sumanth.nadigadda@verizon.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1063
2024-03-13 17:36:09 +00:00
Hedden, Kyle Matthew
91423f87f4 Merge branch 'bugfix/CXTDT-530193' into 'release/11_4_0'
CXTDT-530193

### Summary
footerless list template property handling.

### JIRA Ticket
https://onejira.verizon.com/browse/CXTDT-530193

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1070
2024-03-12 21:03:07 +00:00
Scott Pfeil
47178a33d3 Digital PCT265 story ONEAPP-6389 - Update font style for item headers. 2024-03-12 15:48:03 -04:00
Scott Pfeil
25c8c139a0 Digital PCT265 story ONEAPP-6389 - update header H2 2024-03-12 15:41:49 -04:00
Scott Pfeil
5c414a0e40 Digital PCT265 story ONEAPP-6389 - Button group size updates, title lockup like views font updates, label font updates 2024-03-12 13:47:48 -04:00
Scott Pfeil
9b831bfa35 Merge branch 'release/11_4_0' of https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui into feature/vds_header_mapping 2024-03-12 11:03:02 -04:00
Hedden, Kyle Matthew
582cd33a1c footerlessSpacerHeight + footerlessSpacerColor to adjust footerless padding. 2024-03-11 19:35:45 -04:00
Pfeil, Scott Robert
b9675ce5f1 Merge branch 'bugfix/CXTDT-531163' into 'release/11_4_0'
CXTDT-531163

### Summary
Fix the tab state on table scroll.

### JIRA Ticket
https://onejira.verizon.com/browse/CXTDT-531163

Co-authored-by: Hedden, Kyle Matthew <kyle.hedden@verizonwireless.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1069
2024-03-11 22:01:46 +00:00
Pfeil, Scott Robert
80f3524d43 Merge branch 'bugfix/11_4_0-buttonGroup' into 'release/11_4_0'
added heightConstraint for the twobutton

### Summary
Issue with the height of the PrimaryButtonView. 

### JIRA Ticket
https://onejira.verizon.com/browse/CXTDT-514441
https://onejira.verizon.com/browse/CXTDT-521074

Co-authored-by: Matt Bruce <matt.bruce@verizon.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1068
2024-03-11 21:57:57 +00:00
Hedden, Kyle Matthew
8d57b0ae0e Remove 2-way binding on Tabs selected index to avoid applying 0 on view reset. 2024-03-11 17:46:13 -04:00
Matt Bruce
5ba1260383 updated to required
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2024-03-11 16:44:53 -05:00
Matt Bruce
bfe209305d added heightConstraint for the twobutton
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2024-03-11 15:36:40 -05:00
Pfeil, Scott Robert
1f2753e9d7 Merge branch 'bugfix/CXTDT-530193' into 'release/11_4_0'
CXTDT-530193

### Summary
Hide and show the carousel pager based upon the content size.

### JIRA Ticket
https://onejira.verizon.com/browse/CXTDT-530193

Co-authored-by: Hedden, Kyle Matthew <kyle.hedden@verizonwireless.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1067
2024-03-11 18:42:32 +00:00
Hedden, Kyle Matthew
19b4fb308c Code review -- Update of molecule layout change when pager is state changes. 2024-03-11 14:11:17 -04:00
Scott Pfeil
6e2d1d7132 Merge branch 'release/11_4_0' of https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui into feature/vds_header_mapping 2024-03-11 11:53:08 -04:00
Scott Pfeil
483454d094 Digital PCT265 story ONEAPP-4818 - Updating atomic headers to utilize vds title lockup 2024-03-11 11:52:37 -04:00
Hedden, Kyle Matthew
959bdce13f Code review. Include the only 1 element condition to the carousel pager logic. 2024-03-11 10:45:55 -04:00
Hedden, Kyle Matthew
f53847372a Merge branch 'bugfix/atomic_vds_label' into 'release/11_4_0'
refactored atomic label

### Summary
There were some manual settings happening into the Atomic Label with font and textColor.  These changes were pushed down into VDS.Label to handle generically and there was some code that needed to be deleted due to this change.

### JIRA Ticket
https://onejira.verizon.com/browse/ONEAPP-4349

Co-authored-by: Matt Bruce <matt.bruce@verizon.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1066
2024-03-08 22:55:17 +00:00
Hedden, Kyle Matthew
73d13ba37b Pager should still hide on the empty condition. 2024-03-08 16:53:40 -05:00
Hedden, Kyle Matthew
2877534c70 Hide and show the carousel pager based upon the content size. 2024-03-08 16:45:11 -05:00
Matt Bruce
b638637af7 removed code and call the code that does the same thing under the hood.
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2024-03-08 14:20:44 -06:00
Matt Bruce
dcb5b91e32 deleted method and refactored atomic label even more
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2024-03-08 14:03:05 -06:00
Bruce, Matt R
f0d9664d16 Merge branch 'bugfix/CXTDT-530449' into 'release/11_4_0'
ecoding & decoding fillContainer param in TwoButtonView molecule

### Summary
ecoding & decoding fillContainer param in TwoButtonView molecule, so json can control to fill the buttonView

### JIRA Ticket
[CXTDT-530449](https://onejira.verizon.com/browse/CXTDT-530449)
[CXTDT-530454](https://onejira.verizon.com/browse/CXTDT-530454)
[CXTDT-530459](https://onejira.verizon.com/browse/CXTDT-530459)

Co-authored-by: Sumanth Nadigadda <sumanth.nadigadda@verizon.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1065
2024-03-08 14:31:27 +00:00
Sumanth Nadigadda
deac7b37f0 ecoding & decoding fillContainer param in TwoButtonView molecule 2024-03-08 18:05:23 +05:30
Pfeil, Scott Robert
d31b9f7880 Merge branch 'bugfix/label-textColor-setter' into 'release/11_4_0'
fixed issue where users set the textColor property directly

I forgot to override the textColor in the Label, therefore, the color wasn't being used. 

No bug as of yet, but there will be before this gets pushed.

Co-authored-by: Matt Bruce <matt.bruce@verizon.com>

See merge request https://gitlab.verizon.com/BPHV_MIPS/mvm_core_ui/-/merge_requests/1064
2024-03-06 22:11:56 +00:00
Matt Bruce
5834b8fcd2 fixed issue where users set the textColor property directly
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2024-03-06 14:19:46 -06:00
9 changed files with 61 additions and 88 deletions

View File

@ -43,6 +43,7 @@
addSubview(label)
label.text = ""
checkbox.leadingAnchor.constraint(equalTo: layoutMarginsGuide.leadingAnchor).isActive = true
checkboxBottomConstraint = layoutMarginsGuide.bottomAnchor.constraint(equalTo: checkbox.bottomAnchor)
@ -63,8 +64,9 @@
bottomLabelConstraint.isActive = true
alignCheckbox(.center)
isAccessibilityElement = false
accessibilityElements = [checkbox, label]
isAccessibilityElement = true
accessibilityHint = checkbox.accessibilityHint
accessibilityTraits = checkbox.accessibilityTraits
observation = observe(\.checkbox.isSelected, options: [.new]) { [weak self] _, _ in
self?.updateAccessibilityLabel()
}
@ -137,9 +139,6 @@
open func updateAccessibilityLabel() {
checkbox.updateAccessibilityLabel()
if let text = label.text {
checkbox.accessibilityLabel?.append(", \(text)")
}
accessibilityLabel = [checkbox.accessibilityLabel, label.text].compactMap { $0 }.joined(separator: ",")
}
}

View File

@ -182,29 +182,7 @@ public typealias ActionBlock = () -> ()
}
@objc public func resetAttributeStyle() {
/*
* This is to address a reuse issue with iOS 13 and up.
* Even if you set text & attributedText to nil, the moment you set text with a value,
* attributedText will hold a dirty value from a previously reused cell even if reset() is
* appropriately called.
* Only other reference found of issue: https://www.thetopsites.net/article/58142205.shtml
*/
if let text = text, !text.isEmpty {
//create the primary string
let mutableText = NSMutableAttributedString.mutableText(for: text,
textStyle: textStyle,
useScaledFont: useScaledFont,
textColor: textColorConfiguration.getColor(self),
alignment: textAlignment,
lineBreakMode: lineBreakMode)
if let attributes = attributes {
mutableText.apply(attributes: attributes)
}
self.attributedText = mutableText
}
setNeedsUpdate()
}
public func viewModelDidUpdate() {
@ -221,7 +199,6 @@ public typealias ActionBlock = () -> ()
}
if let style = viewModel.fontStyle?.vdsTextStyle() {
font = style.font
textStyle = style
} else if let fontName = viewModel.fontName {
// there is a TextStyle.defaultStyle
@ -229,9 +206,8 @@ public typealias ActionBlock = () -> ()
if let fontSize {
standardFontSize = fontSize
}
if let customStyle = style(for: fontName, pointSize: fontSize ?? standardFontSize), customStyle != textStyle {
font = customStyle.font
textStyle = customStyle
if let newFont = UIFont(name: fontName, size: fontSize ?? standardFontSize) {
font = newFont
}
}
@ -248,26 +224,6 @@ public typealias ActionBlock = () -> ()
}
}
/// See if the font that is currently set matches a VDS Font and if so grab the matching TextStyle or create custom TextStyle that
/// that the Label will use moving forward.
private func checkforFontChange() {
guard let customStyle = style(for: font.fontName, pointSize: font.pointSize), customStyle != textStyle
else { return }
textStyle = customStyle
}
private func style(for fontName: String, pointSize: CGFloat) -> TextStyle? {
guard let vdsFont = Font.from(fontName: fontName),
let customStyle = TextStyle.style(from: vdsFont, pointSize: pointSize)
else { return nil }
return customStyle
}
open override func updateView() {
checkforFontChange()
super.updateView()
}
open override func updateAccessibility() {
super.updateAccessibility()
@ -462,6 +418,8 @@ extension Label {
/// Underlines the tappable region and stores the tap logic for interation.
private func setTextLinkState(range: NSRange, actionBlock: @escaping ActionBlock) {
guard let text, text.isValid(range: range) else { return }
var textLink = ActionLabelAttribute(location: range.location, length: range.length)
textLink.subscriber = textLink
.action
@ -481,6 +439,8 @@ extension Label {
}
public func createActionBlockFor(actionMap: [AnyHashable: Any]?, additionalData: [AnyHashable: Any]?, delegateObject: DelegateObject?) -> ActionBlock? {
guard let actionMap else { return nil }
return { [weak self] in
guard let self = self else { return }

View File

@ -54,12 +54,3 @@ extension VDS.Font {
Self.allCases.filter({$0.fontName == fontName }).first
}
}
extension VDS.TextStyle {
internal static func style(from font: VDS.Font, pointSize: CGFloat) -> TextStyle? {
guard let first = allCases.filter({$0.fontFace == font && $0.pointSize == pointSize}).first else {
return TextStyle(rawValue: "Custom-TextStyle", fontFace: font, pointSize: pointSize)
}
return first
}
}

View File

@ -41,16 +41,6 @@ import VDS
}
}
}
//--------------------------------------------------
// MARK: - Public Properties Overrides
//--------------------------------------------------
open override var selectedIndex: Int {
didSet {
guard let viewModel else { return }
viewModel.selectedIndex = selectedIndex
}
}
//-------------------------------------------------
// MARK: - Layout Views

View File

@ -17,11 +17,11 @@ import VDS
open var viewModel: TwoButtonViewModel!
open var delegateObject: MVMCoreUIDelegateObject?
open var additionalData: [AnyHashable : Any]?
open var primaryButton = PillButton()
open var secondaryButton = PillButton()
private var buttonGroup = VDS.ButtonGroup()
private var heightConstraint: NSLayoutConstraint?
//--------------------------------------------------
// MARK: - Lifecycle
//--------------------------------------------------
@ -34,6 +34,7 @@ import VDS
buttonGroup.alignment = .center
buttonGroup.rowQuantityPhone = 2
buttonGroup.rowQuantityTablet = 2
heightConstraint = height(constant: VDS.Button.Size.large.height, priority: .required)
}
//--------------------------------------------------
@ -70,6 +71,8 @@ import VDS
if buttons.count != buttonGroup.buttons.count {
buttonGroup.buttons = buttons
}
heightConstraint?.constant = primaryButton.size == .small || secondaryButton.size == .small ? VDS.Button.Size.small.height : VDS.Button.Size.large.height
}
//--------------------------------------------------

View File

@ -38,6 +38,7 @@ public class TwoButtonViewModel: ParentMoleculeModelProtocol {
case backgroundColor
case primaryButton
case secondaryButton
case fillContainer
}
//--------------------------------------------------
@ -69,6 +70,7 @@ public class TwoButtonViewModel: ParentMoleculeModelProtocol {
try decoder.setContext(value: Use.secondary, for: "style") {
self.secondaryButton = try typeContainer.decodeMoleculeIfPresent(codingKey: .secondaryButton)
}
fillContainer = try typeContainer.decodeIfPresent(Bool.self, forKey: .fillContainer) ?? false
}
public func encode(to encoder: Encoder) throws {
@ -78,5 +80,6 @@ public class TwoButtonViewModel: ParentMoleculeModelProtocol {
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
try container.encodeIfPresent(primaryButton, forKey: .primaryButton)
try container.encodeIfPresent(secondaryButton, forKey: .secondaryButton)
try container.encodeIfPresent(fillContainer, forKey: .fillContainer)
}
}

View File

@ -55,6 +55,9 @@ open class Carousel: View {
/// The view that we use for paging
public var pagingView: (MoleculeViewProtocol & CarouselPageControlProtocol)?
/// The pagingView anchor to the bottom of the carousel. Disabled when the pagingView is hidden.
public var pagingBottomPin: NSLayoutConstraint?
/// If the carousel should loop after scrolling past the first and final cells.
public var loop = false
@ -89,10 +92,10 @@ open class Carousel: View {
// Go to current cell. layoutIfNeeded is needed otherwise cellForItem returns nil for peaking logic. The dispatch is a sad way to ensure the collection view is ready to be scrolled.
guard let model = model as? CarouselModel, !model.molecules.isEmpty,
(model.paging == true || loop == true) else { return }
DispatchQueue.main.async {
self.collectionView.scrollToItem(at: IndexPath(row: self.currentIndex, section: 0), at: self.itemAlignment, animated: false)
self.collectionView.layoutIfNeeded()
self.showPeaking(true)
DispatchQueue.main.async { [self] in
collectionView.scrollToItem(at: IndexPath(row: currentIndex, section: 0), at: itemAlignment, animated: false)
collectionView.layoutIfNeeded()
showPeaking(true)
}
}
@ -137,6 +140,16 @@ open class Carousel: View {
(cell as? MVMCoreViewProtocol)?.updateView(size)
}
layoutCollection()
// Check must be dispatched to main for the layout to complete in layoutCollection.
DispatchQueue.main.async { [self] in
let shouldHidePager = molecules?.count ?? 0 < 2 || collectionView.contentSize.width < bounds.width
if let pagingView = pagingView, shouldHidePager != pagingView.isHidden {
pagingView.isHidden = shouldHidePager
pagingBottomPin?.isActive = !shouldHidePager
delegateObject?.moleculeDelegate?.moleculeLayoutUpdated(self)
}
}
}
//--------------------------------------------------
@ -276,7 +289,8 @@ open class Carousel: View {
addSubview(pagingView)
pagingView.centerXAnchor.constraint(equalTo: collectionView.centerXAnchor).isActive = true
collectionView.bottomAnchor.constraint(equalTo: pagingView.centerYAnchor, constant: position).isActive = true
bottomAnchor.constraint(greaterThanOrEqualTo: pagingView.bottomAnchor).isActive = true
pagingBottomPin = bottomAnchor.constraint(greaterThanOrEqualTo: pagingView.bottomAnchor)
pagingBottomPin?.isActive = true
bottomPin = bottomAnchor.constraint(equalTo: collectionView.bottomAnchor)
bottomPin?.priority = .defaultLow
bottomPin?.isActive = true

View File

@ -18,6 +18,8 @@
public var line: LineModel?
public var scrollToRowIndex: Int?
public var singleCellSelection: Bool = false
public var footerlessSpacerHeight: CGFloat?
public var footerlessSpacerColor: Color?
public override var rootMolecules: [MoleculeModelProtocol] {
if let molecules = molecules {
@ -60,6 +62,8 @@
case line
case scrollToRowIndex
case singleCellSelection
case footerlessSpacerHeight
case footerlessSpacerColor
}
//--------------------------------------------------
@ -74,6 +78,8 @@
if let singleCellSelection = try typeContainer.decodeIfPresent(Bool.self, forKey: .singleCellSelection) {
self.singleCellSelection = singleCellSelection
}
footerlessSpacerColor = try typeContainer.decodeIfPresent(Color.self, forKey: .footerlessSpacerColor)
footerlessSpacerHeight = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .footerlessSpacerHeight)
try super.init(from: decoder)
try validateModelHasContent()
}
@ -85,5 +91,7 @@
try container.encode(line, forKey: .line)
try container.encode(singleCellSelection, forKey: .singleCellSelection)
try container.encodeIfPresent(scrollToRowIndex, forKey: .scrollToRowIndex)
try container.encodeIfPresent(footerlessSpacerColor, forKey: .footerlessSpacerColor)
try container.encodeIfPresent(footerlessSpacerHeight, forKey: .footerlessSpacerHeight)
}
}

View File

@ -69,16 +69,21 @@ open class MoleculeListTemplate: ThreeLayerTableViewController, TemplateProtocol
return molecule
}
override open func viewForBottom() -> UIView {
guard let footerModel = templateModel?.footer,
let molecule = generateMoleculeView(from: footerModel)
else {
let view = super.viewForBottom()
view.backgroundColor = templateModel?.backgroundColor?.uiColor ?? .clear
return view
open override func viewForBottom() -> UIView {
// If there is a footer molecule return the molecule.
if let footerModel = templateModel?.footer,
let molecule = generateMoleculeView(from: footerModel) {
return molecule
}
return molecule
// Otherwise setup a bottom spacer view.
let view: UIView
if let footerlessSpacerHeight = templateModel?.footerlessSpacerHeight {
view = MVMCoreUICommonViewsUtility.getView(with: footerlessSpacerHeight <= 0.5 ? 0.5 : footerlessSpacerHeight)
} else {
view = super.viewForBottom()
}
view.backgroundColor = templateModel?.footerlessSpacerColor?.uiColor ?? templateModel?.backgroundColor?.uiColor ?? .clear
return view
}
open override func handleNewData() {