Move DOM event listener to directive

This commit is contained in:
Marliana Lara
2017-09-25 11:56:26 -04:00
parent 8d9ef4445a
commit bb625264d4
3 changed files with 28 additions and 19 deletions

View File

@@ -2,28 +2,39 @@ const templateUrl = require('~components/layout/side-nav.partial.html');
function atSideNavLink (scope, element, attrs, ctrl) {
scope.layoutVm = ctrl;
document.on('click', (e) => {
if ($(e.target).parents('.at-Layout-side').length === 0) {
scope.$emit('clickOutsideSideNav');
}
});
}
function AtSideNavController ($scope) {
function AtSideNavController ($scope, $window) {
let vm = this || {};
const breakpoint = 700;
vm.isExpanded = false;
vm.toggleExpansion = () => {
vm.isExpanded = !vm.isExpanded;
}
};
document.body.onclick = (e) => {
if ($(e.target).parents(".at-Layout-side").length === 0) {
$scope.$watch('layoutVm.currentState', () => {
if ($window.innerWidth <= breakpoint) {
vm.isExpanded = false;
}
}
});
$scope.$on('$locationChangeStart', function(event) {
vm.isExpanded = false;
$scope.$on('clickOutsideSideNav', () => {
if ($window.innerWidth <= breakpoint) {
vm.isExpanded = false;
}
});
}
AtSideNavController.$inject = ['$scope', '$window'];
function atSideNav () {
return {
restrict: 'E',