vds_ios/VDS/Components/Pagination/PaginationCellItem.swift
2024-03-12 18:24:48 +05:30

64 lines
2.2 KiB
Swift

//
// PaginationCellItem.swift
// VDS
//
// Created by Bandaru, Krishna Kishore on 05/03/24.
//
import UIKit
import VDSColorTokens
///This is customised view for Pagination cell item
final class PaginationCellItem: UICollectionViewCell {
///Identifier for the PaginationCellItem
static let identifier: String = String(describing: PaginationCellItem.self)
//--------------------------------------------------
// MARK: - Private Properties
//--------------------------------------------------
///Text color configuration for the element
private let textColorConfiguration = SurfaceColorConfiguration(VDSColor.elementsPrimaryOnlight, VDSColor.elementsPrimaryOndark)
///Pagination index label
private var indexLabel: Label = Label().with {
$0.translatesAutoresizingMaskIntoConstraints = false
$0.textAlignment = .center
$0.isAccessibilityElement = false
$0.numberOfLines = 1
}
//--------------------------------------------------
// MARK: - Initializers
//--------------------------------------------------
override init(frame: CGRect) {
super.init(frame: frame)
setUp()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setUp()
}
///Configuring the cell with default setup
private func setUp() {
let containerView = View()
containerView.translatesAutoresizingMaskIntoConstraints = false
containerView.addSubview(indexLabel)
contentView.addSubview(containerView)
containerView.pinToSuperView()
indexLabel.pinToSuperView()
indexLabel.widthAnchor.constraint(greaterThanOrEqualToConstant: VDSLayout.Spacing.space5X.value).activate()
contentView.backgroundColor = .clear
containerView.backgroundColor = .clear
indexLabel.backgroundColor = .clear
}
///Updating UI based on selected index, current index along with surface
func update(_ selectedIndex: Int, currentIndex: Int, surface: Surface) {
indexLabel.textStyle = selectedIndex == currentIndex ? .boldBodySmall : .bodySmall
indexLabel.text = "\(currentIndex + 1)"
indexLabel.textColor = textColorConfiguration.getColor(surface)
}
}