updated default implementation

Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
Matt Bruce 2022-08-31 09:57:35 -05:00
parent c6ae09f730
commit a9a3aeee18

View File

@ -8,7 +8,31 @@
import Foundation
import UIKit
public class RadioSwatchGroup: RadioSwatchGroupBase<DefaultRadioSwatchGroupModel, RadioSwatch> {}
public class RadioSwatchGroup: RadioSwatchGroupBase<DefaultRadioSwatchGroupModel, RadioSwatch> {
//default implementation
open override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
guard let cell = collectionView.cellForItem(at: indexPath) as? CollectionViewCell<RadioSwatch> else { return }
//reset the old model
if let selectedModel {
let oldSelectedModel = selectedModel.copyWith {
$0.selected = false
}
replace(viewModel: oldSelectedModel)
}
//set the new model
let newSelectedModel = cell.model.copyWith {
$0.selected = true
}
label.text = newSelectedModel.text
replace(viewModel: newSelectedModel)
selectedModel = newSelectedModel
}
}
public class RadioSwatchGroupBase<GroupModelType: RadioSwatchGroupModel, ModelHandlerType: ModelHandlerable & UIView>: Control<GroupModelType>, Changable, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UICollectionViewDelegate where GroupModelType.SelectorModelType == ModelHandlerType.ModelType {
@ -27,7 +51,7 @@ public class RadioSwatchGroupBase<GroupModelType: RadioSwatchGroupModel, ModelHa
//--------------------------------------------------
// MARK: - Private Properties
//--------------------------------------------------
private var label = Label()
public var label = Label()
private let cellSize: CGFloat = 48.0
private let lineSpacing: CGFloat = 12.0
@ -132,25 +156,7 @@ public class RadioSwatchGroupBase<GroupModelType: RadioSwatchGroupModel, ModelHa
}
open func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
guard let cell = collectionView.cellForItem(at: indexPath) as? CollectionViewCell<ModelHandlerType> else { return }
//reset the old model
if let selectedModel {
let oldSelectedModel = selectedModel.copyWith {
$0.selected = false
}
replace(viewModel: oldSelectedModel)
}
//set the new model
let newSelectedModel = cell.model.copyWith {
$0.selected = true
}
label.text = newSelectedModel.text
replace(viewModel: newSelectedModel)
selectedModel = newSelectedModel
//implement click event
}
open func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {