From bb6bc729ba6faa3262d27db0fcd6f54480b758ce Mon Sep 17 00:00:00 2001 From: karsten gebbert <k@ioctl.it> Date: Wed, 28 Jan 2015 13:36:33 +0100 Subject: [PATCH] add itemSelect option and associated test cases to tree.js --- js/tree.js | 12 ++++++++++-- test/tree-test.js | 24 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/js/tree.js b/js/tree.js index 16b6ef225..ae4029cd7 100644 --- a/js/tree.js +++ b/js/tree.js @@ -32,7 +32,10 @@ this.$element = $(element); this.options = $.extend({}, $.fn.tree.defaults, options); - this.$element.on('click.fu.tree', '.tree-item', $.proxy( function(ev) { this.selectItem(ev.currentTarget); } ,this)); + if( this.options.itemSelect ){ + this.$element.on('click.fu.tree', '.tree-item', $.proxy( function(ev) { this.selectItem(ev.currentTarget); } ,this)); + } + this.$element.on('click.fu.tree', '.tree-branch-name', $.proxy( function(ev) { this.openFolder(ev.currentTarget); }, this)); if( this.options.folderSelect ){ @@ -147,6 +150,8 @@ }, selectItem: function (el) { + if(!this.options.itemSelect) return; + var $el = $(el); var selData = $el.data(); var $all = this.$element.find('.tree-selected'); @@ -249,6 +254,8 @@ }, selectFolder: function (clickedElement) { + if(!this.options.folderSelect) return; + var $clickedElement = $(clickedElement); var $clickedBranch = $clickedElement.closest('.tree-branch'); var $selectedBranch = this.$element.find('.tree-branch.tree-selected'); @@ -349,7 +356,8 @@ dataSource: function(options, callback){}, multiSelect: false, cacheItems: true, - folderSelect: true + folderSelect: true, + itemSelect: true }; $.fn.tree.Constructor = Tree; diff --git a/test/tree-test.js b/test/tree-test.js index a40bde387..6f29ce9c9 100644 --- a/test/tree-test.js +++ b/test/tree-test.js @@ -142,6 +142,30 @@ define(function(require){ equal($tree.tree('selectedItems').length, 1, 'Return single selected value'); }); + test("should not allow selecting items if disabled", function() { + var $tree = $(html).find('#MyTree'); + + $tree.tree({ + dataSource: this.dataSource, + itemSelect: false + }); + + $tree.tree('selectItem', $tree.find('.tree-item:eq(1)')); + equal($tree.tree('selectedItems').length, 0, 'Return no value'); + }); + + test("should not allow selecting folders if disabled", function() { + var $tree = $(html).find('#MyTree'); + + $tree.tree({ + dataSource: this.dataSource, + folderSelect: false + }); + + $tree.tree('selectFolder', $tree.find('.tree-branch-name:eq(1)')); + equal($tree.tree('selectedItems').length, 0, 'Return no value'); + }); + test("should destroy control", function () { var $tree = $(html).find('#MyTree');