refactored to use updated ButtonGroupPositionLayout

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2024-03-27 14:43:30 -05:00
parent 17883b7853
commit 68e489ceea

View File

@ -47,12 +47,15 @@ open class Breadcrumbs: View {
//--------------------------------------------------
// MARK: - Private Properties
//--------------------------------------------------
let layout: UICollectionViewFlowLayout = BreadcrumbsFlowLayout().with {
$0.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
$0.minimumInteritemSpacing = VDSLayout.Spacing.space1X.value
$0.minimumLineSpacing = VDSLayout.Spacing.space1X.value
$0.sectionInset = .zero
$0.scrollDirection = .vertical
fileprivate lazy var layout = ButtonGroupPositionLayout().with {
$0.position = .left
$0.delegate = self
$0.axisSpacer = { _, _, _ in
return VDSLayout.Spacing.space1X.value
}
$0.verticalSpacer = { _, _ in
return VDSLayout.Spacing.space1X.value
}
}
///Collectionview to render Breadcrumb Items
@ -134,9 +137,10 @@ open class Breadcrumbs: View {
self.collectionView.collectionViewLayout.invalidateLayout()
}
}
private var separatorWidth = Label().with { $0.text = "/"; $0.sizeToFit() }.intrinsicContentSize.width
}
extension Breadcrumbs: UICollectionViewDelegate, UICollectionViewDataSource {
extension Breadcrumbs: UICollectionViewDelegate, UICollectionViewDataSource, ButtongGroupPositionLayoutDelegate {
//--------------------------------------------------
// MARK: - UICollectionView Delegate & Datasource
//--------------------------------------------------
@ -151,4 +155,15 @@ extension Breadcrumbs: UICollectionViewDelegate, UICollectionViewDataSource {
return cell
}
public func collectionView(_ collectionView: UICollectionView, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
let breadcrumb = breadcrumbs[indexPath.row]
let intrinsicSize = breadcrumb.intrinsicContentSize
let separatorFullWidth: CGFloat = indexPath.row == 0 ? 0 : VDSLayout.Spacing.space1X.value + separatorWidth
let cellwidth = intrinsicSize.width + separatorFullWidth
return .init(width: min(cellwidth, collectionView.frame.width), height: intrinsicSize.height)
}
public func collectionView(_ collectionView: UICollectionView, buttonBaseAtIndexPath indexPath: IndexPath) -> ButtonBase {
breadcrumbs[indexPath.row]
}
}