From b69cf15b00ac93e618f69a4add011da62791b2f8 Mon Sep 17 00:00:00 2001 From: viveleroi Date: Thu, 8 Feb 2024 08:47:35 -0800 Subject: [PATCH] Unsets lastSelectedNode if that node is deselected --- src/treenode.js | 4 ++++ test/tree/lastSelectedNode.spec.js | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/treenode.js b/src/treenode.js index cce08ffc..65d3ccbb 100644 --- a/src/treenode.js +++ b/src/treenode.js @@ -374,6 +374,10 @@ class TreeNode { baseStateChange('selected', false, 'deselected', this, deep); + if (this._tree._lastSelectedNode === this) { + this._tree._lastSelectedNode = null; + } + this.context().end(); } diff --git a/test/tree/lastSelectedNode.spec.js b/test/tree/lastSelectedNode.spec.js index 14b3b073..1ccb56cc 100644 --- a/test/tree/lastSelectedNode.spec.js +++ b/test/tree/lastSelectedNode.spec.js @@ -13,7 +13,11 @@ describe('Tree.lastSelectedNode', function() { }, { text: 'B', id: 2 - }] + }], + selection: { + autoDeselect: false, + multiple: true + } }); }); @@ -36,4 +40,16 @@ describe('Tree.lastSelectedNode', function() { expect(tree.lastSelectedNode().id).to.equal(2); }); + + it('returns last selected node even when another node is deselected', function() { + tree.node(1).deselect(); + + expect(tree.lastSelectedNode().id).to.equal(2); + }); + + it('returns undefined if last selected node is deselected', function() { + tree.node(2).deselect(); + + expect(tree.lastSelectedNode()).to.be.null; + }); });