This repository has been archived by the owner on Sep 5, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
/
swipe.js
128 lines (122 loc) · 3.64 KB
/
swipe.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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/**
* @ngdoc module
* @name material.components.swipe
* @description Swipe module!
*/
/**
* @ngdoc directive
* @module material.components.swipe
* @name mdSwipeLeft
*
* @restrict A
*
* @description
* The md-swipe-left directive allows you to specify custom behavior when an element is swiped
* left.
*
* ### Notes
* - The `$event.currentTarget` of the swiped element will be `null`, but you can get a
* reference to the element that actually holds the `md-swipe-left` directive by using
* `$target.current`
*
* > You can see this in action on the <a ng-href="demo/swipe">demo page</a> (Look at the Developer
* Tools console while swiping).
*
* @usage
* <hljs lang="html">
* <div md-swipe-left="onSwipeLeft($event, $target)">Swipe me left!</div>
* </hljs>
*/
/**
* @ngdoc directive
* @module material.components.swipe
* @name mdSwipeRight
*
* @restrict A
*
* @description
* The md-swipe-right directive allows you to specify custom behavior when an element is swiped
* right.
*
* ### Notes
* - The `$event.currentTarget` of the swiped element will be `null`, but you can get a
* reference to the element that actually holds the `md-swipe-right` directive by using
* `$target.current`
*
* > You can see this in action on the <a ng-href="demo/swipe">demo page</a> (Look at the Developer
* Tools console while swiping).
*
* @usage
* <hljs lang="html">
* <div md-swipe-right="onSwipeRight($event, $target)">Swipe me right!</div>
* </hljs>
*/
/**
* @ngdoc directive
* @module material.components.swipe
* @name mdSwipeUp
*
* @restrict A
*
* @description
* The md-swipe-up directive allows you to specify custom behavior when an element is swiped
* up.
*
* ### Notes
* - The `$event.currentTarget` of the swiped element will be `null`, but you can get a
* reference to the element that actually holds the `md-swipe-up` directive by using
* `$target.current`
*
* > You can see this in action on the <a ng-href="demo/swipe">demo page</a> (Look at the Developer
* Tools console while swiping).
*
* @usage
* <hljs lang="html">
* <div md-swipe-up="onSwipeUp($event, $target)">Swipe me up!</div>
* </hljs>
*/
/**
* @ngdoc directive
* @module material.components.swipe
* @name mdSwipeDown
*
* @restrict A
*
* @description
* The md-swipe-down directive allows you to specify custom behavior when an element is swiped
* down.
*
* ### Notes
* - The `$event.currentTarget` of the swiped element will be `null`, but you can get a
* reference to the element that actually holds the `md-swipe-down` directive by using
* `$target.current`
*
* > You can see this in action on the <a ng-href="demo/swipe">demo page</a> (Look at the Developer
* Tools console while swiping).
*
* @usage
* <hljs lang="html">
* <div md-swipe-down="onSwipeDown($event, $target)">Swipe me down!</div>
* </hljs>
*/
angular.module('material.components.swipe', ['material.core'])
.directive('mdSwipeLeft', getDirective('SwipeLeft'))
.directive('mdSwipeRight', getDirective('SwipeRight'))
.directive('mdSwipeUp', getDirective('SwipeUp'))
.directive('mdSwipeDown', getDirective('SwipeDown'));
function getDirective(name) {
var directiveName = 'md' + name;
var eventName = '$md.' + name.toLowerCase();
return DirectiveFactory;
/* @ngInject */
function DirectiveFactory($parse) {
return { restrict: 'A', link: postLink };
function postLink(scope, element, attr) {
var fn = $parse(attr[directiveName]);
element.on(eventName, function(ev) {
var currentTarget = ev.currentTarget;
scope.$applyAsync(function() { fn(scope, { $event: ev, $target: { current: currentTarget } }); });
});
}
}
}