Skip to content

Commit

Permalink
Add beforeDrop callback
Browse files Browse the repository at this point in the history
  • Loading branch information
JimLiu committed May 5, 2014
1 parent 28ccee1 commit 1fb2f63
Show file tree
Hide file tree
Showing 11 changed files with 46 additions and 8 deletions.
6 changes: 6 additions & 0 deletions README.md
Expand Up @@ -229,6 +229,12 @@ The `dragStop` function is called when the user stop dragging the node.
**Parameters:**
Same as [Parameters](#eventParam) of dropped.

##### beforeDrop(event)
The `beforeDrop` function is called before the dragging node is dropped.

**Parameters:**
Same as [Parameters](#eventParam) of dropped.

### ui-tree-nodes
`ui-tree-nodes` is the container of nodes. Every `ui-tree-node` should have a `ui-tree-nodes` as it's container, a `ui-tree-nodes` can have multiple child nodes.

Expand Down
2 changes: 1 addition & 1 deletion bower.json
@@ -1,6 +1,6 @@
{
"name": "angular-ui-tree",
"version": "2.0.12",
"version": "2.1.0",
"homepage": "https://github.com/JimLiu/angular-ui-tree",
"authors": [
"Jim Liu <https://github.com/JimLiu>",
Expand Down
15 changes: 14 additions & 1 deletion demo/dist/angular-ui-tree.js
Expand Up @@ -679,6 +679,10 @@

};

callbacks.beforeDrop = function(event) {

};

scope.$watch(attrs.uiTree, function(newVal, oldVal){
angular.forEach(newVal, function(value, key){
if (callbacks[key]) {
Expand Down Expand Up @@ -749,6 +753,10 @@
scope.nodrop = ((typeof val) != "undefined");
});

attrs.$observe('horizontal', function(val) {
scope.horizontal = ((typeof val) != "undefined");
});

}
};
}
Expand Down Expand Up @@ -857,6 +865,7 @@
}
pos = $uiTreeHelper.positionStarted(eventObj, scope.$element);
placeElm.css('height', $uiTreeHelper.height(scope.$element) + 'px');
placeElm.css('width', $uiTreeHelper.width(scope.$element) + 'px');
dragElm = angular.element($window.document.createElement(scope.$parentNodesScope.$element.prop('tagName')))
.addClass(scope.$parentNodesScope.$element.attr('class')).addClass(config.dragClass);
dragElm.css('width', $uiTreeHelper.width(scope.$element) + 'px');
Expand Down Expand Up @@ -1029,7 +1038,8 @@
} else if (targetNode.dragEnabled()){ // drag enabled
targetElm = targetNode.$element; // Get the element of ui-tree-node
var targetOffset = $uiTreeHelper.offset(targetElm);
targetBefore = eventObj.pageY < (targetOffset.top + $uiTreeHelper.height(targetElm) / 2);
targetBefore = targetNode.horizontal ? eventObj.pageX < (targetOffset.left + $uiTreeHelper.width(targetElm) / 2)
: eventObj.pageY < (targetOffset.top + $uiTreeHelper.height(targetElm) / 2);

if (targetNode.$parentNodesScope.accept(scope, targetNode.index())) {
if (targetBefore) {
Expand Down Expand Up @@ -1058,6 +1068,9 @@
e.preventDefault();

if (dragElm) {
scope.$treeScope.$apply(function() {
scope.$callbacks.beforeDrop(dragInfo.eventArgs(elements, pos));
});
// roll back elements changed
hiddenPlaceElm.replaceWith(scope.$element);
placeElm.remove();
Expand Down
2 changes: 1 addition & 1 deletion demo/dist/angular-ui-tree.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion demo/index.html
Expand Up @@ -40,7 +40,7 @@ <h2>Examples</h2>
<li><a href="tree.html">Unlimited nesting</a></li>
<li><a href="trees.html">Connected trees</a></li>
<li><a href="groups.html">Groups &amp; Categories</a></li>
<!-- <li><a href="accept.html">Limited drag &amp; drop</a></li> -->
<li><a href="filter.html">Filter</a></li>
</ol>
</div>
</div>
Expand Down
5 changes: 5 additions & 0 deletions demo/js/groups.js
Expand Up @@ -129,6 +129,11 @@
} else { // save all
$scope.saveGroups();
}
},
beforeDrop: function(event) {
if (!window.confirm('Are you sure you want to drop it here?')) {
event.source.nodeScope.$$apply = false;
}
}
};

Expand Down
9 changes: 8 additions & 1 deletion dist/angular-ui-tree.js
@@ -1,5 +1,5 @@
/**
* @license Angular UI Tree v2.0.13
* @license Angular UI Tree v2.0.12
* (c) 2010-2014. https://github.com/JimLiu/angular-ui-tree
* License: MIT
*/
Expand Down Expand Up @@ -679,6 +679,10 @@

};

callbacks.beforeDrop = function(event) {

};

scope.$watch(attrs.uiTree, function(newVal, oldVal){
angular.forEach(newVal, function(value, key){
if (callbacks[key]) {
Expand Down Expand Up @@ -1064,6 +1068,9 @@
e.preventDefault();

if (dragElm) {
scope.$treeScope.$apply(function() {
scope.$callbacks.beforeDrop(dragInfo.eventArgs(elements, pos));
});
// roll back elements changed
hiddenPlaceElm.replaceWith(scope.$element);
placeElm.remove();
Expand Down
4 changes: 2 additions & 2 deletions dist/angular-ui-tree.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "Angular-NestedSortable",
"version": "2.0.12",
"version": "2.1.0",
"dependencies": {
"grunt": "~0.4.2",
"grunt-contrib-jshint": "~0.8.0",
Expand Down
4 changes: 4 additions & 0 deletions source/directives/uiTree.js
Expand Up @@ -79,6 +79,10 @@

};

callbacks.beforeDrop = function(event) {

};

scope.$watch(attrs.uiTree, function(newVal, oldVal){
angular.forEach(newVal, function(value, key){
if (callbacks[key]) {
Expand Down
3 changes: 3 additions & 0 deletions source/directives/uiTreeNode.js
Expand Up @@ -303,6 +303,9 @@
e.preventDefault();

if (dragElm) {
scope.$treeScope.$apply(function() {
scope.$callbacks.beforeDrop(dragInfo.eventArgs(elements, pos));
});
// roll back elements changed
hiddenPlaceElm.replaceWith(scope.$element);
placeElm.remove();
Expand Down

0 comments on commit 1fb2f63

Please sign in to comment.