Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(509)

Side by Side Diff: third_party/pkg/angular/lib/directive/ng_events.dart

Issue 124053002: Adding Angular and dependent packages for testing (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 part of angular.directive;
2
3 // NOTE(deboer): onXX functions are now typed as 'var' instead of 'Getter'
4 // to work-around https://code.google.com/p/dart/issues/detail?id=13519
5
6 /**
7 * Allows you to specify custom behavior for DOM UI events such as mouse,
8 * keyboard and touch events.
9 *
10 * The custom behavior is specified via an Angular binding expression specified
11 * on the `ng-`*event* directive (e.g. `ng-click`). This expression is evaluate d
12 * on the correct `scope` every time the event occurs. The event is available
13 * to the expression as `$event`.
14 *
15 * This is more secure than inline DOM handlers in HTML that execute arbitrary
16 * JavaScript code and have access to globals instead of the scope without the
17 * safety constraints of the Angular expression language.
18 *
19 * Example:
20 *
21 * <button ng-click="lastEvent='Click'"
22 * ng-doubleclick="lastEvent='DblClick'">
23 * Button
24 * </button>
25 *
26 * The full list of supported handlers are:
27 *
28 * - [ng-blur]
29 * - [ng-change]
30 * - [ng-click]
31 * - [ng-contextmenu]
32 * - [ng-doubleclick]
33 * - [ng-drag]
34 * - [ng-dragend]
35 * - [ng-dragenter]
36 * - [ng-dragleave]
37 * - [ng-dragover]
38 * - [ng-dragstart]
39 * - [ng-drop]
40 * - [ng-focus]
41 * - [ng-keydown]
42 * - [ng-keypress]
43 * - [ng-keyup]
44 * - [ng-mousedown]
45 * - [ng-mouseenter]
46 * - [ng-mouseleave]
47 * - [ng-mousemove]
48 * - [ng-mouseout]
49 * - [ng-mouseover]
50 * - [ng-mouseup]
51 * - [ng-mousewheel]
52 * - [ng-scroll]
53 * - [ng-submit]
54 * - [ng-touchcancel]
55 * - [ng-touchend]
56 * - [ng-touchmove]
57 * - [ng-touchstart]
58 */
59 @NgDirective(selector: '[ng-blur]', map: const {'ng-blur': '&onBlu r'})
60 @NgDirective(selector: '[ng-change]', map: const {'ng-change': '&onCha nge'})
61 @NgDirective(selector: '[ng-click]', map: const {'ng-click': '&onCli ck'})
62 @NgDirective(selector: '[ng-contextmenu]', map: const {'ng-contextmenu': '&onCon textMenu'})
63 @NgDirective(selector: '[ng-doubleclick]', map: const {'ng-doubleclick': '&onDou bleClick'})
64 @NgDirective(selector: '[ng-drag]', map: const {'ng-drag': '&onDra g'})
65 @NgDirective(selector: '[ng-dragend]', map: const {'ng-dragend': '&onDra gEnd'})
66 @NgDirective(selector: '[ng-dragenter]', map: const {'ng-dragenter': '&onDra gEnter'})
67 @NgDirective(selector: '[ng-dragleave]', map: const {'ng-dragleave': '&onDra gLeave'})
68 @NgDirective(selector: '[ng-dragover]', map: const {'ng-dragover': '&onDra gOver'})
69 @NgDirective(selector: '[ng-dragstart]', map: const {'ng-dragstart': '&onDra gStart'})
70 @NgDirective(selector: '[ng-drop]', map: const {'ng-drop': '&onDro p'})
71 @NgDirective(selector: '[ng-focus]', map: const {'ng-focus': '&onFoc us'})
72 @NgDirective(selector: '[ng-keydown]', map: const {'ng-keydown': '&onKey Down'})
73 @NgDirective(selector: '[ng-keypress]', map: const {'ng-keypress': '&onKey Press'})
74 @NgDirective(selector: '[ng-keyup]', map: const {'ng-keyup': '&onKey Up'})
75 @NgDirective(selector: '[ng-mousedown]', map: const {'ng-mousedown': '&onMou seDown'})
76 @NgDirective(selector: '[ng-mouseenter]', map: const {'ng-mouseenter': '&onMou seEnter'})
77 @NgDirective(selector: '[ng-mouseleave]', map: const {'ng-mouseleave': '&onMou seLeave'})
78 @NgDirective(selector: '[ng-mousemove]', map: const {'ng-mousemove': '&onMou seMove'})
79 @NgDirective(selector: '[ng-mouseout]', map: const {'ng-mouseout': '&onMou seOut'})
80 @NgDirective(selector: '[ng-mouseover]', map: const {'ng-mouseover': '&onMou seOver'})
81 @NgDirective(selector: '[ng-mouseup]', map: const {'ng-mouseup': '&onMou seUp'})
82 @NgDirective(selector: '[ng-mousewheel]', map: const {'ng-mousewheel': '&onMou seWheel'})
83 @NgDirective(selector: '[ng-scroll]', map: const {'ng-scroll': '&onScr oll'})
84 @NgDirective(selector: '[ng-submit]', map: const {'ng-submit': '&onSub mit'})
85 @NgDirective(selector: '[ng-touchcancel]', map: const {'ng-touchcancel': '&onTou chCancel'})
86 @NgDirective(selector: '[ng-touchend]', map: const {'ng-touchend': '&onTou chEnd'})
87 @NgDirective(selector: '[ng-touchmove]', map: const {'ng-touchmove': '&onTou chMove'})
88 @NgDirective(selector: '[ng-touchstart]', map: const {'ng-touchstart': '&onTou chStart'})
89 class NgEventDirective {
90
91 // NOTE: Do not use the element.on['some_event'].listen(...) syntax. Doing so
92 // has two downsides:
93 // - it loses the event typing
94 // - some DOM events may have multiple platform-dependent event names
95 // under the covers. The standard Stream getters you will get the
96 // platform specific event name automatically but you're on your own if
97 // you use the on[] syntax. This also applies to $dom_addEventListener.
98 // Ref: http://api.dartlang.org/docs/releases/latest/dart_html/Events.html
99 initListener(var stream, var handler) {
100 int key = stream.hashCode;
101 if (!listeners.containsKey(key)) {
102 listeners[key] = handler;
103 stream.listen((event) => scope.$apply(() {
104 handler({r"$event": event});
105 }));
106 }
107 }
108
109 set onBlur(value) => initListener(element.onBlur, value);
110 set onChange(value) => initListener(element.onChange, value);
111 set onClick(value) => initListener(element.onClick, value);
112 set onContextMenu(value) => initListener(element.onContextMenu, value);
113 set onDoubleClick(value) => initListener(element.onDoubleClick, value);
114 set onDrag(value) => initListener(element.onDrag, value);
115 set onDragEnd(value) => initListener(element.onDragEnd, value);
116 set onDragEnter(value) => initListener(element.onDragEnter, value);
117 set onDragLeave(value) => initListener(element.onDragLeave, value);
118 set onDragOver(value) => initListener(element.onDragOver, value);
119 set onDragStart(value) => initListener(element.onDragStart, value);
120 set onDrop(value) => initListener(element.onDrop, value);
121 set onFocus(value) => initListener(element.onFocus, value);
122 set onKeyDown(value) => initListener(element.onKeyDown, value);
123 set onKeyPress(value) => initListener(element.onKeyPress, value);
124 set onKeyUp(value) => initListener(element.onKeyUp, value);
125 set onMouseDown(value) => initListener(element.onMouseDown, value);
126 set onMouseEnter(value) => initListener(element.onMouseEnter, value);
127 set onMouseLeave(value) => initListener(element.onMouseLeave, value);
128 set onMouseMove(value) => initListener(element.onMouseMove, value);
129 set onMouseOut(value) => initListener(element.onMouseOut, value);
130 set onMouseOver(value) => initListener(element.onMouseOver, value);
131 set onMouseUp(value) => initListener(element.onMouseUp, value);
132 set onMouseWheel(value) => initListener(element.onMouseWheel, value);
133 set onScroll(value) => initListener(element.onScroll, value);
134 set onSubmit(value) => initListener(element.onSubmit, value);
135 set onTouchCancel(value) => initListener(element.onTouchCancel, value);
136 set onTouchEnd(value) => initListener(element.onTouchEnd, value);
137 set onTouchMove(value) => initListener(element.onTouchMove, value);
138 set onTouchStart(value) => initListener(element.onTouchStart, value);
139
140 // Is it better to use a map of listeners or have 29 properties on this
141 // object? One would pretty much only assign to one or two of those
142 // properties. I'm opting for the map since it's less boilerplate code.
143 var listeners = {};
144 dom.Element element;
145 Scope scope;
146
147 NgEventDirective(this.element, this.scope);
148 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698