Skip to content

Commit

Permalink
Merge pull request zurb#403 from zurb/actionsheet-toggle-off
Browse files Browse the repository at this point in the history
Action sheet toggle off
  • Loading branch information
AntJanus committed Jan 14, 2015
2 parents 6d8019d + 30f31bc commit 95021ec
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 8 deletions.
5 changes: 4 additions & 1 deletion js/angular/components/actionsheet/actionsheet-content.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<div
class="action-sheet {{ position }}"
ng-class="{'is-active': active}"
ng-transclude>
>
<div
ng-transclude>
</div>
</div>
51 changes: 44 additions & 7 deletions js/angular/components/actionsheet/actionsheet.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
var controller = this;
var content = controller.content = $scope.content;
var container = controller.container = $scope.container;
var body = angular.element(document.body);

controller.registerContent = function(scope) {
content = scope;
Expand All @@ -25,21 +26,49 @@
container.active = false;
};

controller.toggle = function() {
content.toggle();
container.toggle();
controller.toggle = toggle;
controller.hide = hide;

content.$apply();
container.$apply();
controller.registerListener = function() {
document.body.addEventListener('click', listenerLogic);
};

controller.hide = function() {
controller.deregisterListener = function() {
document.body.removeEventListener('click', listenerLogic);
}

function listenerLogic(e) {
var el = e.target;
var insideActionSheet = false;

do {
if(el.classList && el.classList.contains('action-sheet-container')) {
insideActionSheet = true;
break;
}

} while ((el = el.parentNode));

if(!insideActionSheet) {
hide();
}
}

function hide() {
content.hide();
container.hide();

content.$apply();
container.$apply();
};
}

function toggle() {
content.toggle();
container.toggle();

content.$apply();
container.$apply();
}
}

zfActionSheet.$inject = ['FoundationApi'];
Expand Down Expand Up @@ -123,11 +152,19 @@

scope.toggle = function() {
scope.active = !scope.active;

if(scope.active) {
controller.registerListener();
} else {
controller.deregisterListener();
}

return;
};

scope.hide = function() {
scope.active = false;
controller.deregisterListener();
return;
};
}
Expand Down

0 comments on commit 95021ec

Please sign in to comment.