-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathionic.ion.showwhen.js
98 lines (77 loc) · 1.99 KB
/
ionic.ion.showwhen.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
angular.module('ionic.ion.showWhen', ['ionic'])
.directive('showWhen', ['$window', function($window) {
return {
restrict: 'A',
link: function($scope, $element, $attr) {
function checkExpose() {
var mq = $attr.showWhen == 'large' ? '(min-width:768px)' : $attr.showWhen;
if($window.matchMedia(mq).matches){
$element.removeClass('ng-hide');
} else {
$element.addClass('ng-hide');
}
}
function onResize() {
debouncedCheck();
}
var debouncedCheck = ionic.debounce(function() {
$scope.$apply(function(){
checkExpose();
});
}, 300, false);
checkExpose();
ionic.on('resize', onResize, $window);
$scope.$on('$destroy', function(){
ionic.off('resize', onResize, $window);
});
}
};
}])
.directive('hideWhen', ['$window', function($window) {
return {
restrict: 'A',
link: function($scope, $element, $attr) {
function checkExpose() {
var mq = $attr.hideWhen == 'large' ? '(min-width:768px)' : $attr.hideWhen;
if($window.matchMedia(mq).matches){
$element.addClass('ng-hide');
} else {
$element.removeClass('ng-hide');
}
}
function onResize() {
debouncedCheck();
}
var debouncedCheck = ionic.debounce(function() {
$scope.$apply(function(){
checkExpose();
});
}, 300, false);
checkExpose();
ionic.on('resize', onResize, $window);
$scope.$on('$destroy', function(){
ionic.off('resize', onResize, $window);
});
}
};
}])
.directive('showWhenState', ['$window','$state','$rootScope', function($window,$state,$rootScope) {
return {
restrict: 'A',
link: function($scope, $element, $attr) {
function checkExpose(){
var state = $state.current.name;
var statesToMatch = $attr.showWhenState.split(" || ");
if(statesToMatch.indexOf(state) > -1){
$element.removeClass('ng-hide');
} else {
$element.addClass('ng-hide');
}
}
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
checkExpose();
})
checkExpose();
}
};
}]);