Digital ACT-191 ONEAPP-7016 story: changes for calendar base view with header and footer.
This commit is contained in:
parent
2e99210dfe
commit
440f516522
@ -17,6 +17,8 @@
|
||||
186D13CF2BBC36EF00986B53 /* DropdownSelectChangeLog.txt in Resources */ = {isa = PBXBuildFile; fileRef = 186D13CE2BBC36EE00986B53 /* DropdownSelectChangeLog.txt */; };
|
||||
18792A902B7431F2008C0D29 /* ButtonIconBadgeIndicatorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18792A8F2B7431F2008C0D29 /* ButtonIconBadgeIndicatorModel.swift */; };
|
||||
18A3F12A2BD9298900498E4A /* Calendar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A3F1292BD9298900498E4A /* Calendar.swift */; };
|
||||
18A3F1322BD944E800498E4A /* CalendarDateCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A3F1312BD944E800498E4A /* CalendarDateCollectionViewCell.swift */; };
|
||||
18A3F1382BDA693000498E4A /* CalendarHeaderReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A3F1372BDA693000498E4A /* CalendarHeaderReusableView.swift */; };
|
||||
18A65A022B96E848006602CC /* Breadcrumbs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A65A012B96E848006602CC /* Breadcrumbs.swift */; };
|
||||
18A65A042B96F050006602CC /* BreadcrumbItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18A65A032B96F050006602CC /* BreadcrumbItem.swift */; };
|
||||
18B463A42BBD3C46005C4528 /* DropdownOptionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B463A32BBD3C46005C4528 /* DropdownOptionModel.swift */; };
|
||||
@ -207,6 +209,8 @@
|
||||
186D13CE2BBC36EE00986B53 /* DropdownSelectChangeLog.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = DropdownSelectChangeLog.txt; sourceTree = "<group>"; };
|
||||
18792A8F2B7431F2008C0D29 /* ButtonIconBadgeIndicatorModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonIconBadgeIndicatorModel.swift; sourceTree = "<group>"; };
|
||||
18A3F1292BD9298900498E4A /* Calendar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Calendar.swift; sourceTree = "<group>"; };
|
||||
18A3F1312BD944E800498E4A /* CalendarDateCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarDateCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||
18A3F1372BDA693000498E4A /* CalendarHeaderReusableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarHeaderReusableView.swift; sourceTree = "<group>"; };
|
||||
18A65A012B96E848006602CC /* Breadcrumbs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Breadcrumbs.swift; sourceTree = "<group>"; };
|
||||
18A65A032B96F050006602CC /* BreadcrumbItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BreadcrumbItem.swift; sourceTree = "<group>"; };
|
||||
18B463A32BBD3C46005C4528 /* DropdownOptionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropdownOptionModel.swift; sourceTree = "<group>"; };
|
||||
@ -421,6 +425,8 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
18A3F1292BD9298900498E4A /* Calendar.swift */,
|
||||
18A3F1312BD944E800498E4A /* CalendarDateCollectionViewCell.swift */,
|
||||
18A3F1372BDA693000498E4A /* CalendarHeaderReusableView.swift */,
|
||||
);
|
||||
path = Calendar;
|
||||
sourceTree = "<group>";
|
||||
@ -1144,6 +1150,7 @@
|
||||
71ACE89C2BA0451200FB6ADC /* PaginationContainer.swift in Sources */,
|
||||
EAC71A1F2A2E173D00E47A9F /* RadioButton.swift in Sources */,
|
||||
EA33622C2891E73B0071C351 /* FontProtocol.swift in Sources */,
|
||||
18A3F1322BD944E800498E4A /* CalendarDateCollectionViewCell.swift in Sources */,
|
||||
EA596ABD2A16B4EC00300C4B /* Tab.swift in Sources */,
|
||||
71ACE89E2BA1CC1700FB6ADC /* TiletEyebrowModel.swift in Sources */,
|
||||
EAF7F11728A1475A00B287F5 /* RadioButtonItem.swift in Sources */,
|
||||
@ -1153,6 +1160,7 @@
|
||||
71FC86DC2B96F4C800700965 /* PaginationCellItem.swift in Sources */,
|
||||
EAC846F3294B95CE00F685BA /* ButtonGroupCollectionViewCell.swift in Sources */,
|
||||
EAF7F0952899861000B287F5 /* CheckboxItem.swift in Sources */,
|
||||
18A3F1382BDA693000498E4A /* CalendarHeaderReusableView.swift in Sources */,
|
||||
EA985BE82968951C00F2FF2E /* TileletTitleModel.swift in Sources */,
|
||||
71FC86DE2B9738B900700965 /* SurfaceConfigurationValue.swift in Sources */,
|
||||
EA297A5529FB07760031ED56 /* TooltipLabelAttribute.swift in Sources */,
|
||||
|
||||
@ -32,12 +32,35 @@ open class CalendarBase: View {
|
||||
//--------------------------------------------------
|
||||
// MARK: - Private Properties
|
||||
//--------------------------------------------------
|
||||
internal var containerSize: CGSize { CGSize(width: 290, height: 300) }
|
||||
internal var containerSize: CGSize { CGSize(width: 320, height: 376) } //width:320/328
|
||||
private let cellItemSize = CGSize(width: 40, height: 40)
|
||||
private let headerHeight = 104.0
|
||||
private let footerHeight = 56.0
|
||||
private let items = 35
|
||||
|
||||
internal var containerView = View().with {
|
||||
$0.clipsToBounds = true
|
||||
}
|
||||
|
||||
///Collectionview to render Breadcrumb Items
|
||||
private lazy var collectionView: UICollectionView = {
|
||||
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
|
||||
collectionView.isScrollEnabled = false
|
||||
collectionView.translatesAutoresizingMaskIntoConstraints = false
|
||||
collectionView.delegate = self
|
||||
collectionView.dataSource = self
|
||||
collectionView.showsHorizontalScrollIndicator = false
|
||||
collectionView.showsVerticalScrollIndicator = false
|
||||
collectionView.register(CalendarDateCollectionViewCell.self, forCellWithReuseIdentifier: CalendarDateCollectionViewCell.identifier)
|
||||
collectionView.register(CalendarHeaderReusableView.self,
|
||||
forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader,
|
||||
withReuseIdentifier: CalendarHeaderReusableView.identifier)
|
||||
collectionView.register(CalendarFooterReusableView.self,
|
||||
forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter,
|
||||
withReuseIdentifier: CalendarFooterReusableView.identifier)
|
||||
return collectionView
|
||||
}()
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Lifecycle
|
||||
//--------------------------------------------------
|
||||
@ -48,9 +71,84 @@ open class CalendarBase: View {
|
||||
open override func setup() {
|
||||
super.setup()
|
||||
isAccessibilityElement = false
|
||||
|
||||
addSubview(containerView)
|
||||
containerView
|
||||
.pinTop()
|
||||
.pinBottom()
|
||||
.pinLeadingGreaterThanOrEqualTo()
|
||||
.pinTrailingLessThanOrEqualTo()
|
||||
.height(containerSize.height)
|
||||
.width(containerSize.width)
|
||||
|
||||
containerView.centerXAnchor.constraint(equalTo: centerXAnchor).activate()
|
||||
|
||||
// Calendar View
|
||||
containerView.addSubview(collectionView)
|
||||
collectionView.pinToSuperView()
|
||||
}
|
||||
|
||||
override open func layoutSubviews() {
|
||||
super.layoutSubviews()
|
||||
}
|
||||
|
||||
open override func reset() {
|
||||
super.reset()
|
||||
}
|
||||
}
|
||||
|
||||
extension CalendarBase: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
|
||||
//--------------------------------------------------
|
||||
// MARK: - UICollectionView Delegate & Datasource
|
||||
//--------------------------------------------------
|
||||
public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
||||
items
|
||||
}
|
||||
|
||||
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
||||
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CalendarDateCollectionViewCell.identifier, for: indexPath) as? CalendarDateCollectionViewCell else { return UICollectionViewCell() }
|
||||
return cell
|
||||
}
|
||||
|
||||
public func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
|
||||
if kind == UICollectionView.elementKindSectionHeader {
|
||||
// Header
|
||||
guard let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: CalendarHeaderReusableView.identifier, for: indexPath) as? CalendarHeaderReusableView else {
|
||||
return UICollectionReusableView()
|
||||
}
|
||||
header.configure(with: true)
|
||||
return header
|
||||
} else {
|
||||
// Footer
|
||||
if kind == UICollectionView.elementKindSectionFooter {
|
||||
guard let footer = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: CalendarFooterReusableView.identifier, for: indexPath) as? CalendarFooterReusableView else {
|
||||
return UICollectionReusableView()
|
||||
}
|
||||
footer.configure(with: true)
|
||||
return footer
|
||||
}
|
||||
}
|
||||
return UICollectionReusableView()
|
||||
}
|
||||
|
||||
public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
|
||||
return CGSize(width: collectionView.frame.size.width, height: headerHeight)
|
||||
}
|
||||
|
||||
public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
|
||||
return CGSize(width: collectionView.frame.size.width, height: footerHeight)
|
||||
}
|
||||
|
||||
public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
|
||||
return VDSLayout.space1X
|
||||
}
|
||||
|
||||
public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
|
||||
return VDSLayout.space1X
|
||||
}
|
||||
|
||||
public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
|
||||
return cellItemSize
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
54
VDS/Components/Calendar/CalendarDateCollectionViewCell.swift
Normal file
54
VDS/Components/Calendar/CalendarDateCollectionViewCell.swift
Normal file
@ -0,0 +1,54 @@
|
||||
//
|
||||
// CalendarDateCollectionViewCell.swift
|
||||
// VDS
|
||||
//
|
||||
// Created by Kanamarlapudi, Vasavi on 24/04/24.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
import VDSTokens
|
||||
|
||||
///This is customised view for Calendar cell item
|
||||
final class CalendarDateCollectionViewCell: UICollectionViewCell {
|
||||
|
||||
///Identifier for the Calendar Date Cell
|
||||
static let identifier: String = String(describing: CalendarDateCollectionViewCell.self)
|
||||
|
||||
//--------------------------------------------------
|
||||
// MARK: - Private Properties
|
||||
//--------------------------------------------------
|
||||
// internal var stackView: UIStackView = {
|
||||
// return UIStackView().with {
|
||||
// $0.translatesAutoresizingMaskIntoConstraints = false
|
||||
// $0.axis = .horizontal
|
||||
// $0.distribution = .fill
|
||||
// $0.alignment = .center
|
||||
// $0.spacing = VDSLayout.space2X
|
||||
// $0.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
|
||||
// $0.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
||||
// }
|
||||
// }()
|
||||
//
|
||||
// private lazy var selectionBackgroundView = View().with {
|
||||
// $0.translatesAutoresizingMaskIntoConstraints = false
|
||||
// $0.clipsToBounds = true
|
||||
// $0.backgroundColor = .systemRed
|
||||
// }
|
||||
//
|
||||
// private lazy var numberLabel = Label().with {
|
||||
// $0.translatesAutoresizingMaskIntoConstraints = false
|
||||
// $0.textAlignment = .center
|
||||
// // $0.font
|
||||
// // $0.textColor
|
||||
// }
|
||||
|
||||
override init(frame:CGRect) {
|
||||
super.init(frame: frame)
|
||||
contentView.backgroundColor = .link
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
}
|
||||
57
VDS/Components/Calendar/CalendarHeaderReusableView.swift
Normal file
57
VDS/Components/Calendar/CalendarHeaderReusableView.swift
Normal file
@ -0,0 +1,57 @@
|
||||
//
|
||||
// CalendarHeaderReusableView.swift
|
||||
// VDS
|
||||
//
|
||||
// Created by Kanamarlapudi, Vasavi on 24/04/24.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
/// Custom header view
|
||||
class CalendarHeaderReusableView: UICollectionReusableView {
|
||||
|
||||
///Identifier for the Calendar Header Reusable View
|
||||
static let identifier: String = String(describing: CalendarHeaderReusableView.self)
|
||||
|
||||
override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
func configure(with color: Bool) {
|
||||
// Make a view and make in generic and dynamic
|
||||
self.backgroundColor = .orange
|
||||
}
|
||||
|
||||
override func layoutSubviews() {
|
||||
super.layoutSubviews()
|
||||
}
|
||||
}
|
||||
|
||||
/// Custom footer view
|
||||
class CalendarFooterReusableView: UICollectionReusableView {
|
||||
|
||||
///Identifier for the Calendar Footer Reusable View
|
||||
static let identifier: String = String(describing: CalendarFooterReusableView.self)
|
||||
|
||||
override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
func configure(with color: Bool) {
|
||||
// Make a view and make in generic and dynamic
|
||||
self.backgroundColor = .green
|
||||
}
|
||||
|
||||
override func layoutSubviews() {
|
||||
super.layoutSubviews()
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user