diff --git a/angular-tree-control.js b/angular-tree-control.js index af952bd..9dc5503 100644 --- a/angular-tree-control.js +++ b/angular-tree-control.js @@ -88,6 +88,7 @@ if (typeof module !== "undefined" && typeof exports !== "undefined" && module.ex $scope.options = $scope.options || {}; ensureDefault($scope.options, "multiSelection", false); + ensureDefault($scope.options, "recursiveSelection", false); ensureDefault($scope.options, "nodeChildren", "children"); ensureDefault($scope.options, "dirSelectable", "true"); ensureDefault($scope.options, "injectClasses", {}); @@ -176,7 +177,7 @@ if (typeof module !== "undefined" && typeof exports !== "undefined" && module.ex } }; - $scope.selectNodeLabel = function( selectedNode){ + $scope.selectNodeLabel = function( selectedNode, value){ var transcludedScope = this; if(!$scope.options.isLeaf(selectedNode) && (!$scope.options.dirSelectable || !$scope.options.isSelectable(selectedNode))) { // Branch node is not selectable, expand @@ -196,12 +197,20 @@ if (typeof module !== "undefined" && typeof exports !== "undefined" && module.ex break; } } - if (pos === -1) { + if (pos === -1 && (value === undefined || value === true)) { $scope.selectedNodes.push(selectedNode); selected = true; - } else { + } else if (pos !== -1 && value === true) { + selected = true; + } else if (pos !== -1 && (value === undefined || value === false)) { $scope.selectedNodes.splice(pos, 1); } + if($scope.options.recursiveSelection) { + var children = selectedNode[$scope.options.nodeChildren] || []; + for(var i=0; i