From 33dc411743ca02e5597dde80e5f1eda21df51e93 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Aug 2024 11:08:25 -0500 Subject: [PATCH 1/2] Fix for the reset() issue with default properties being reset for buttonGroup Signed-off-by: Matt Bruce --- .../TwoButtonView.swift | 37 +++++++++++-------- .../TwoLinkView.swift | 19 ++++++---- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoButtonView.swift b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoButtonView.swift index 536bc16b..6610a04e 100644 --- a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoButtonView.swift +++ b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoButtonView.swift @@ -10,7 +10,7 @@ import UIKit import VDS @objcMembers open class TwoButtonView: VDS.View, VDSMoleculeViewProtocol { - + //-------------------------------------------------- // MARK: - Properties //-------------------------------------------------- @@ -31,29 +31,36 @@ import VDS isAccessibilityElement = false addSubview(buttonGroup) buttonGroup.pinToSuperView() + heightConstraint = height(constant: VDS.Button.Size.large.height, priority: .required) + } + + open override func setDefaults() { + super.setDefaults() buttonGroup.alignment = .center buttonGroup.rowQuantityPhone = 2 buttonGroup.rowQuantityTablet = 2 - heightConstraint = height(constant: VDS.Button.Size.large.height, priority: .required) } - + + open override func reset() { + buttonGroup.reset() + super.reset() + } + //-------------------------------------------------- // MARK: - MoleculeViewProtocol //-------------------------------------------------- - open override func reset() { - super.reset() - buttonGroup.reset() - } - public static func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? { guard let model = model as? TwoButtonViewModel, - let buttonModel = model.primaryButton ?? model.secondaryButton - else { return 0 } + let buttonModel = model.primaryButton ?? model.secondaryButton + else { return 0 } return PillButton.estimatedHeight(with: buttonModel, delegateObject) } - + + //-------------------------------------------------- + // MARK: - VDSMoleculeViewProtocol + //-------------------------------------------------- public func viewModelDidUpdate() { var buttons = [PillButton]() if let secondaryModel = viewModel.secondaryButton { @@ -65,7 +72,7 @@ import VDS primaryButton.set(with: primaryModel, delegateObject, additionalData) buttons.append(primaryButton) } - + buttonGroup.childWidth = viewModel.fillContainer ? .percentage(100) : nil if buttons.count != buttonGroup.buttons.count { @@ -74,7 +81,7 @@ import VDS heightConstraint?.constant = primaryButton.size == .small || secondaryButton.size == .small ? VDS.Button.Size.small.height : VDS.Button.Size.large.height } - + //-------------------------------------------------- // MARK: - MVMCoreUIViewConstrainingProtocol //-------------------------------------------------- @@ -87,7 +94,5 @@ import VDS // MARK: - MVMCoreViewProtocol //-------------------------------------------------- - public func updateView(_ size: CGFloat) { - setNeedsUpdate() - } + public func updateView(_ size: CGFloat) {} } diff --git a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoLinkView.swift b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoLinkView.swift index 32c546f9..1fdf5658 100644 --- a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoLinkView.swift +++ b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoLinkView.swift @@ -32,21 +32,20 @@ import VDS isAccessibilityElement = false addSubview(buttonGroup) buttonGroup.pinToSuperView() + } + + open override func setDefaults() { + super.setDefaults() buttonGroup.alignment = .center buttonGroup.rowQuantityPhone = 2 buttonGroup.rowQuantityTablet = 2 } - - //-------------------------------------------------- - // MARK: - MVMCoreViewProtocol - //-------------------------------------------------- + open override func reset() { - super.reset() buttonGroup.reset() + super.reset() } - open func updateView(_ size: CGFloat) { } - //-------------------------------------------------- // MARK: - Stack Manipulation //-------------------------------------------------- @@ -90,7 +89,8 @@ import VDS //-------------------------------------------------- // MARK: - MoleculeViewProtocol //-------------------------------------------------- - + open func updateView(_ size: CGFloat) { } + public static func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? { guard let model = model as? TwoButtonViewModel, let buttonModel = model.primaryButton ?? model.secondaryButton @@ -99,6 +99,9 @@ import VDS return PillButton.estimatedHeight(with: buttonModel, delegateObject) } + //-------------------------------------------------- + // MARK: - VDSMoleculeViewProtocol + //-------------------------------------------------- public func viewModelDidUpdate() { buttons.removeAll() From e89272a3cdb73bee3279c82399ed956444ede935 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 15 Aug 2024 12:31:50 -0500 Subject: [PATCH 2/2] comments on the order of operations in reset() Signed-off-by: Matt Bruce --- .../Molecules/HorizontalCombinationViews/TwoButtonView.swift | 2 ++ .../Molecules/HorizontalCombinationViews/TwoLinkView.swift | 2 ++ 2 files changed, 4 insertions(+) diff --git a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoButtonView.swift b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoButtonView.swift index 6610a04e..f57c5801 100644 --- a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoButtonView.swift +++ b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoButtonView.swift @@ -42,6 +42,8 @@ import VDS } open override func reset() { + //we want to reset() all local views/controls first before calling + //super since super.reset() calls setDefaults(). buttonGroup.reset() super.reset() } diff --git a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoLinkView.swift b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoLinkView.swift index 1fdf5658..a9890618 100644 --- a/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoLinkView.swift +++ b/MVMCoreUI/Atomic/Molecules/HorizontalCombinationViews/TwoLinkView.swift @@ -42,6 +42,8 @@ import VDS } open override func reset() { + //we want to reset() all local views/controls first before calling + //super since super.reset() calls setDefaults(). buttonGroup.reset() super.reset() }