refactored enum into container

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2023-05-25 13:04:53 -05:00
parent 9c0e0cf0e8
commit 2f7315db86

View File

@ -9,7 +9,14 @@ import Foundation
import UIKit
open class TabsContainer: View {
//--------------------------------------------------
// MARK: - Enums
//--------------------------------------------------
public enum Width {
case percentage(CGFloat)
case value(CGFloat)
}
//--------------------------------------------------
// MARK: - Public Properties
//--------------------------------------------------
@ -52,10 +59,10 @@ open class TabsContainer: View {
open var sticky: Bool = false { didSet { setNeedsUpdate() } }
///rules for width
private var _width: Tabs.Width = .percentage(0.25)
private var _width: Width = .percentage(0.25)
///Width of all Tabs when orientation is vertical, defaults to 25%.
open var width: Tabs.Width {
open var width: Width {
get {
return _width
}
@ -144,8 +151,8 @@ open class TabsContainer: View {
self.tabClicked(index: index)
}
//update tabs width constraints
contentViewWidthConstraint?.isActive = false
if orientation == .vertical {
switch width {
case .percentage(let amount):
@ -153,8 +160,10 @@ open class TabsContainer: View {
case .value(let amount):
contentViewWidthConstraint = tabMenu.widthAnchor.constraint(equalToConstant: amount)
}
contentViewWidthConstraint?.isActive = true
} else {
contentViewWidthConstraint = tabMenu.widthAnchor.constraint(equalTo: widthAnchor)
}
contentViewWidthConstraint?.isActive = true
tabMenu.surface = surface
tabMenu.disabled = disabled
@ -168,9 +177,6 @@ open class TabsContainer: View {
tabMenu.selectedIndex = selectedIndex
tabMenu.size = size
tabMenu.sticky = sticky
tabMenu.tabItems.forEach {
$0.width = tabWidth(for: $0)
}
setSelected(index: selectedIndex)
tabModels.forEach {
@ -182,19 +188,6 @@ open class TabsContainer: View {
//--------------------------------------------------
// MARK: - Private Methods
//--------------------------------------------------
private func tabWidth(for item: Tabs.TabItem) -> CGFloat? {
guard orientation == .vertical else { return item.width }
var calculated: CGFloat
switch width {
case .percentage(let percent):
calculated = (bounds.width * percent) - tabMenu.tabSpacing
case .value(let value):
calculated = value - tabMenu.tabSpacing
}
return calculated > minWidth ? calculated : minWidth
}
private func tabClicked(index: Int) {
onTabChange?(index)
setSelected(index: index)