fix: cell configuration
This commit is contained in:
parent
95a0045582
commit
373b0db19e
|
|
@ -29,7 +29,6 @@ public protocol FilterViewModelProtocol: AnyObject {
|
|||
|
||||
typealias Change = (indexPath: IndexPath, viewModel: CellViewModel)
|
||||
|
||||
|
||||
var properties: [Property] { get set }
|
||||
var selectedProperties: Set<Property> { get set }
|
||||
|
||||
|
|
|
|||
|
|
@ -31,8 +31,6 @@ open class BaseFilterViewModel<CellViewModelType: FilterCellViewModelProtocol &
|
|||
public typealias Property = PropertyValue
|
||||
public typealias CellViewModel = CellViewModelType
|
||||
|
||||
private var cellsViewModels: [CellViewModelType] = []
|
||||
|
||||
public var properties: [PropertyValue] = [] {
|
||||
didSet {
|
||||
filtersCollection?.updateView()
|
||||
|
|
@ -58,21 +56,28 @@ open class BaseFilterViewModel<CellViewModelType: FilterCellViewModelProtocol &
|
|||
.filter { isFilterInArray($0.element, filters: selected) || isFilterInArray($0.element, filters: deselected) }
|
||||
|
||||
for (offset, element) in changedFilters {
|
||||
cellsViewModels[offset].isSelected = selectedProperties.contains(element)
|
||||
guard !getCellsViewModels().isEmpty else { return [] }
|
||||
|
||||
setSelectedCell(atIndex: offset, isSelected: selectedProperties.contains(element))
|
||||
properties[offset].isSelected = selectedProperties.contains(element)
|
||||
}
|
||||
|
||||
let changedItems = changedFilters
|
||||
.map {
|
||||
Change(indexPath: IndexPath(item: $0.offset, section: .zero),
|
||||
viewModel: cellsViewModels[$0.offset])
|
||||
viewModel: getCellsViewModels()[$0.offset])
|
||||
}
|
||||
|
||||
return changedItems
|
||||
}
|
||||
|
||||
open func setSelectedCell(atIndex index: Int, isSelected: Bool) {
|
||||
// override in subclasses
|
||||
}
|
||||
|
||||
open func getCellsViewModels() -> [CellViewModelType] {
|
||||
cellsViewModels
|
||||
// override in subclasses
|
||||
return []
|
||||
}
|
||||
|
||||
// MARK: - Public methods
|
||||
|
|
|
|||
|
|
@ -32,4 +32,12 @@ open class DefaultFilterViewModel: BaseFilterViewModel<DefaultFilterCellViewMode
|
|||
isSelected: $0.isSelected)
|
||||
}
|
||||
}
|
||||
|
||||
open override func setSelectedCell(atIndex index: Int, isSelected: Bool) {
|
||||
cellsViewModels[index].isSelected = isSelected
|
||||
}
|
||||
|
||||
open override func getCellsViewModels() -> [DefaultFilterCellViewModel] {
|
||||
cellsViewModels
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue