From aebdef39cd0791ee4d026c835a520315259ea556 Mon Sep 17 00:00:00 2001 From: Kevin Verfaille Date: Mon, 24 Apr 2017 15:49:29 +0200 Subject: [PATCH 1/3] Make sure that when an tree item text contains a link, the link is followed --- src/js/bootstrap-treeview.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/js/bootstrap-treeview.js b/src/js/bootstrap-treeview.js index 7a82a2eeb..3fe68a888 100644 --- a/src/js/bootstrap-treeview.js +++ b/src/js/bootstrap-treeview.js @@ -315,8 +315,13 @@ }; Tree.prototype.clickHandler = function (event) { - - if (!this.options.enableLinks) event.preventDefault(); + if (!this.options.enableLinks) { + if (event.target.nodeName == "A") { + return; // Handle link inside node + } + //Normal collapse behavior + event.preventDefault(); + } var target = $(event.target); var node = this.findNode(target); From 74ce139568b6562bd98f1cadc4e1a1d56a06e1c6 Mon Sep 17 00:00:00 2001 From: Kevin Verfaille Date: Tue, 25 Apr 2017 14:33:12 +0200 Subject: [PATCH 2/3] Fix: Anything clicked within an A-element should be followed. So we search for an A element in the parent hierarchy till we find our tree item root. --- src/js/bootstrap-treeview.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/js/bootstrap-treeview.js b/src/js/bootstrap-treeview.js index 3fe68a888..0090e7463 100644 --- a/src/js/bootstrap-treeview.js +++ b/src/js/bootstrap-treeview.js @@ -316,11 +316,24 @@ Tree.prototype.clickHandler = function (event) { if (!this.options.enableLinks) { - if (event.target.nodeName == "A") { - return; // Handle link inside node + //walk to parents till we find our list item + var bFoundLink = false; + var currentTarget = event.target; + + console.log(event); + return; + + while (!bFoundLink //Found link + && currentTarget //No target + && !currentTarget.classList.contains('list-group-item') //tree item root + ) { + bFoundLink = currentTarget.nodeName == "A"; + currentTarget = currentTarget.parentElement; } - //Normal collapse behavior - event.preventDefault(); + if (bFoundLink) { + return; // Handle link + } + event.preventDefault(); //Normal collapse behavior } var target = $(event.target); From 81079dd31896de157a63615acbbd960a34307b48 Mon Sep 17 00:00:00 2001 From: Kevin Verfaille Date: Tue, 25 Apr 2017 14:38:08 +0200 Subject: [PATCH 3/3] Removed debug code! --- src/js/bootstrap-treeview.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/js/bootstrap-treeview.js b/src/js/bootstrap-treeview.js index 0090e7463..11704dcc7 100644 --- a/src/js/bootstrap-treeview.js +++ b/src/js/bootstrap-treeview.js @@ -320,9 +320,6 @@ var bFoundLink = false; var currentTarget = event.target; - console.log(event); - return; - while (!bFoundLink //Found link && currentTarget //No target && !currentTarget.classList.contains('list-group-item') //tree item root