diff --git a/MVMCoreUI/Atomic/Molecules/Items/AccordionListItemModel.swift b/MVMCoreUI/Atomic/Molecules/Items/AccordionListItemModel.swift index a864d1c2..1d07a6f5 100644 --- a/MVMCoreUI/Atomic/Molecules/Items/AccordionListItemModel.swift +++ b/MVMCoreUI/Atomic/Molecules/Items/AccordionListItemModel.swift @@ -18,7 +18,8 @@ class AccordionListItemModel: MoleculeListItemModel { public var molecules: [ListItemModelProtocol & MoleculeModelProtocol] public var hideLineWhenExpanded: Bool = false public var selected: Bool = false - + public var expandAction: ActionModelProtocol? + public var collapseAction: ActionModelProtocol? private var added: Bool = false //-------------------------------------------------- @@ -31,6 +32,8 @@ class AccordionListItemModel: MoleculeListItemModel { case molecule case hideLineWhenExpanded case selected + case expandAction + case collapseAction } //-------------------------------------------------- @@ -62,6 +65,8 @@ class AccordionListItemModel: MoleculeListItemModel { if let hideLine = try typeContainer.decodeIfPresent(Bool.self, forKey: .hideLineWhenExpanded) { hideLineWhenExpanded = hideLine } + expandAction = try typeContainer.decodeModelIfPresent(codingKey: .expandAction) + collapseAction = try typeContainer.decodeModelIfPresent(codingKey: .collapseAction) try super.init(from: decoder) } @@ -72,6 +77,8 @@ class AccordionListItemModel: MoleculeListItemModel { try container.encodeModels(molecules, forKey: .molecules) try container.encode(selected, forKey: .selected) try container.encodeIfPresent(hideLineWhenExpanded, forKey: .hideLineWhenExpanded) + try container.encodeModelIfPresent(expandAction, forKey: .expandAction) + try container.encodeModelIfPresent(collapseAction, forKey: .collapseAction) } } diff --git a/MVMCoreUI/Atomic/Molecules/Items/AccordionMoleculeTableViewCell.swift b/MVMCoreUI/Atomic/Molecules/Items/AccordionMoleculeTableViewCell.swift index c3d37ca9..6975f8cb 100644 --- a/MVMCoreUI/Atomic/Molecules/Items/AccordionMoleculeTableViewCell.swift +++ b/MVMCoreUI/Atomic/Molecules/Items/AccordionMoleculeTableViewCell.swift @@ -54,6 +54,10 @@ if (accordionListItemModel?.hideLineWhenExpanded ?? false) && (self.bottomSeparatorView?.shouldBeVisible() ?? false) { bottomSeparatorView?.isHidden = accordionButton.isSelected } + + if let actionModel = accordionButton.isSelected ? accordionListItemModel?.expandAction : accordionListItemModel?.collapseAction { + MVMCoreActionHandler.shared()?.asyncHandleAction(with: actionModel, additionalData: [KeySourceModel: model], delegateObject: delegateObject) + } } public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {