@@ -72,20 +72,10 @@ function useKeyboardDirective($mdKeyboard, $timeout, $animate, $rootScope) {
72
72
}
73
73
74
74
function mdKeyboardController ( $scope ) {
75
- if ( attrs . useKeyboard ) {
76
- $mdKeyboard . useLayout ( attrs . useKeyboard ) ;
77
- }
78
-
79
- var toggleCaps = function ( ) {
80
- $scope . caps = ! $scope . caps ;
81
- } ;
82
-
83
- var toggleCapsLock = function ( ) {
84
- $scope . capsLocked = ! $scope . capsLocked ;
85
- } ;
75
+ $mdKeyboard . useLayout ( attrs . useKeyboard ) ;
86
76
87
77
var getKeyClass = function ( key ) {
88
- var k = key [ 0 ] . toLowerCase ( ) ;
78
+ var k = ( key [ 0 ] || ' ' ) . toLowerCase ( ) ;
89
79
var keys = [ 'bksp' , 'tab' , 'caps' , 'enter' , 'shift' , 'alt' , 'altgr' , 'altlk' ] ;
90
80
91
81
// space bar
@@ -104,14 +94,114 @@ function useKeyboardDirective($mdKeyboard, $timeout, $animate, $rootScope) {
104
94
return 'key-' + k ;
105
95
} ;
106
96
97
+ var triggerKey = function ( $event , key ) {
98
+ $event . preventDefault ( ) ;
99
+
100
+ switch ( key ) {
101
+ case "Caps" :
102
+ $scope . capsLocked = ! $scope . capsLocked ;
103
+ $scope . caps = false ;
104
+ break ;
105
+
106
+ case "Shift" :
107
+ $scope . caps = ! $scope . caps ;
108
+ break ;
109
+
110
+ case "Alt" :
111
+ case "AltGr" :
112
+ case "AltLk" :
113
+ // modify input, visualize
114
+ //self.VKI_modify(type);
115
+ break ;
116
+
117
+ case "Tab" :
118
+ // TODO: handle text selection
119
+
120
+ // cycle through elements
121
+ // or insert \t tab
122
+ //if (self.VKI_activeTab) {
123
+ // if (self.VKI_target.form) {
124
+ // var target = self.VKI_target, elems = target.form.elements;
125
+ // self.VKI_close(false);
126
+ // for (var z = 0, me = false, j = -1; z < elems.length; z++) {
127
+ // if (j == -1 && elems[z].getAttribute("VKI_attached")) j = z;
128
+ // if (me) {
129
+ // if (self.VKI_activeTab == 1 && elems[z]) break;
130
+ // if (elems[z].getAttribute("VKI_attached")) break;
131
+ // } else if (elems[z] == target) me = true;
132
+ // }
133
+ // if (z == elems.length) z = Math.max(j, 0);
134
+ // if (elems[z].getAttribute("VKI_attached")) {
135
+ // self.VKI_show(elems[z]);
136
+ // } else elems[z].focus();
137
+ // } else self.VKI_target.focus();
138
+ //} else self.VKI_insert("\t");
139
+ //return false;
140
+
141
+ $mdKeyboard . currentModel . $setViewValue ( ( $mdKeyboard . currentModel . $viewValue || '' ) + "\t" ) ;
142
+ $mdKeyboard . currentModel . $validate ( ) ;
143
+ $mdKeyboard . currentModel . $render ( ) ;
144
+
145
+ break ;
146
+
147
+ case "Bksp" :
148
+ // TODO: handle text selection
149
+
150
+ // backspace
151
+ //self.VKI_target.focus();
152
+ //if (self.VKI_target.setSelectionRange && hasSelectionStartEnd(self.VKI_target) && !self.VKI_target.readOnly) {
153
+ // var rng = [self.VKI_target.selectionStart, self.VKI_target.selectionEnd];
154
+ // if (rng[0] < rng[1]) rng[0]++;
155
+ // self.VKI_target.value = self.VKI_target.value.substr(0, rng[0] - 1) + self.VKI_target.value.substr(rng[1]);
156
+ // self.VKI_target.setSelectionRange(rng[0] - 1, rng[0] - 1);
157
+ //} else if (self.VKI_target.createTextRange && !self.VKI_target.readOnly) {
158
+ // try {
159
+ // self.VKI_target.range.select();
160
+ // } catch (e) {
161
+ // self.VKI_target.range = document.selection.createRange();
162
+ // }
163
+ // if (!self.VKI_target.range.text.length) self.VKI_target.range.moveStart('character', -1);
164
+ // self.VKI_target.range.text = "";
165
+ //} else self.VKI_target.value = self.VKI_target.value.substr(0, self.VKI_target.value.length - 1);
166
+ //if (self.VKI_shift) self.VKI_modify("Shift");
167
+ //if (self.VKI_altgr) self.VKI_modify("AltGr");
168
+ //self.VKI_target.focus();
169
+ //self.keyInputCallback();
170
+ //return true;
171
+
172
+ $mdKeyboard . currentModel . $setViewValue ( ( $mdKeyboard . currentModel . $viewValue || '' ) . slice ( 0 , - 1 ) ) ;
173
+ $mdKeyboard . currentModel . $validate ( ) ;
174
+ $mdKeyboard . currentModel . $render ( ) ;
175
+
176
+ break ;
177
+
178
+ case "Enter" :
179
+ if ( element [ 0 ] . nodeName . toUpperCase ( ) != 'TEXTAREA' ) {
180
+ $timeout ( function ( ) {
181
+ angular . element ( element [ 0 ] . form ) . triggerHandler ( 'submit' ) ;
182
+ } ) ;
183
+ } else {
184
+ $mdKeyboard . currentModel . $setViewValue ( ( $mdKeyboard . currentModel . $viewValue || '' ) + "\n" ) ;
185
+ $mdKeyboard . currentModel . $validate ( ) ;
186
+ $mdKeyboard . currentModel . $render ( ) ;
187
+ }
188
+
189
+ break ;
190
+
191
+ default :
192
+ $mdKeyboard . currentModel . $setViewValue ( ( $mdKeyboard . currentModel . $viewValue || '' ) + key [ 0 ] ) ;
193
+ $mdKeyboard . currentModel . $validate ( ) ;
194
+ $mdKeyboard . currentModel . $render ( ) ;
195
+
196
+ $scope . caps = false ;
197
+ }
198
+ } ;
199
+
107
200
var _init = function ( ) {
108
201
$scope . resolve = function ( ) {
109
202
$mdKeyboard . hide ( 'ok' ) ;
110
203
} ;
111
204
$scope . getKeyClass = getKeyClass ;
112
- $scope . keyboard = $mdKeyboard . getLayout ( ) ;
113
- $scope . toggleCaps = toggleCaps ;
114
- $scope . toggleCapsLock = toggleCapsLock ;
115
205
$scope . keyboard = $mdKeyboard . getCurrentLayout ( ) ;
116
206
$scope . pressed = triggerKey ;
117
207
@@ -134,115 +224,6 @@ function useKeyboardDirective($mdKeyboard, $timeout, $animate, $rootScope) {
134
224
sel . moveStart ( 'character' , - element . value . length ) ;
135
225
return sel . text . length - selLen ;
136
226
}
137
- } ;
138
-
139
- function triggerKey ( $event , key ) {
140
- $event . preventDefault ( ) ;
141
- $log . info ( 'key pressed: %s (%s)' , key , key . charCodeAt ( 0 ) ) ;
142
-
143
- switch ( key ) {
144
- case "Caps" :
145
- case "Shift" :
146
- case "Alt" :
147
- case "AltGr" :
148
- case "AltLk" :
149
- // modify input, visualize
150
- //self.VKI_modify(type);
151
- break ;
152
-
153
- case "Tab" :
154
- // TODO: handle text selection
155
-
156
- // cycle through elements
157
- // or insert \t tab
158
- //if (self.VKI_activeTab) {
159
- // if (self.VKI_target.form) {
160
- // var target = self.VKI_target, elems = target.form.elements;
161
- // self.VKI_close(false);
162
- // for (var z = 0, me = false, j = -1; z < elems.length; z++) {
163
- // if (j == -1 && elems[z].getAttribute("VKI_attached")) j = z;
164
- // if (me) {
165
- // if (self.VKI_activeTab == 1 && elems[z]) break;
166
- // if (elems[z].getAttribute("VKI_attached")) break;
167
- // } else if (elems[z] == target) me = true;
168
- // }
169
- // if (z == elems.length) z = Math.max(j, 0);
170
- // if (elems[z].getAttribute("VKI_attached")) {
171
- // self.VKI_show(elems[z]);
172
- // } else elems[z].focus();
173
- // } else self.VKI_target.focus();
174
- //} else self.VKI_insert("\t");
175
- //return false;
176
-
177
- $mdKeyboard . currentModel . $setViewValue ( ( $mdKeyboard . currentModel . $viewValue || '' ) + "\t" ) ;
178
- $mdKeyboard . currentModel . $validate ( ) ;
179
- $mdKeyboard . currentModel . $render ( ) ;
180
-
181
- break ;
182
-
183
- case "Bksp" :
184
- // TODO: handle text selection
185
-
186
- // backspace
187
- //self.VKI_target.focus();
188
- //if (self.VKI_target.setSelectionRange && hasSelectionStartEnd(self.VKI_target) && !self.VKI_target.readOnly) {
189
- // var rng = [self.VKI_target.selectionStart, self.VKI_target.selectionEnd];
190
- // if (rng[0] < rng[1]) rng[0]++;
191
- // self.VKI_target.value = self.VKI_target.value.substr(0, rng[0] - 1) + self.VKI_target.value.substr(rng[1]);
192
- // self.VKI_target.setSelectionRange(rng[0] - 1, rng[0] - 1);
193
- //} else if (self.VKI_target.createTextRange && !self.VKI_target.readOnly) {
194
- // try {
195
- // self.VKI_target.range.select();
196
- // } catch (e) {
197
- // self.VKI_target.range = document.selection.createRange();
198
- // }
199
- // if (!self.VKI_target.range.text.length) self.VKI_target.range.moveStart('character', -1);
200
- // self.VKI_target.range.text = "";
201
- //} else self.VKI_target.value = self.VKI_target.value.substr(0, self.VKI_target.value.length - 1);
202
- //if (self.VKI_shift) self.VKI_modify("Shift");
203
- //if (self.VKI_altgr) self.VKI_modify("AltGr");
204
- //self.VKI_target.focus();
205
- //self.keyInputCallback();
206
- //return true;
207
-
208
- $mdKeyboard . currentModel . $setViewValue ( ( $mdKeyboard . currentModel . $viewValue || '' ) . slice ( 0 , - 1 ) ) ;
209
- $mdKeyboard . currentModel . $validate ( ) ;
210
- $mdKeyboard . currentModel . $render ( ) ;
211
-
212
- break ;
213
-
214
- case "Enter" :
215
- if ( element [ 0 ] . nodeName . toUpperCase ( ) != 'TEXTAREA' ) {
216
- $timeout ( function ( ) {
217
- angular . element ( element [ 0 ] . form ) . triggerHandler ( 'submit' ) ;
218
- } ) ;
219
- } else {
220
- $mdKeyboard . currentModel . $setViewValue ( ( $mdKeyboard . currentModel . $viewValue || '' ) + "\n" ) ;
221
- $mdKeyboard . currentModel . $validate ( ) ;
222
- $mdKeyboard . currentModel . $render ( ) ;
223
- }
224
-
225
- break ;
226
-
227
- default :
228
- // TODO: handle text selection
229
-
230
- //$timeout(function () {
231
- //var event = new window.KeyboardEvent('keypress', {
232
- // bubbles: true,
233
- // cancelable: true,
234
- // shiftKey: true,
235
- // keyCode: key.charCodeAt(0)
236
- //});
237
- // element[0].dispatchEvent(event);
238
- //});
239
-
240
- $mdKeyboard . currentModel . $setViewValue ( ( $mdKeyboard . currentModel . $viewValue || '' ) + key [ 0 ] ) ;
241
- $mdKeyboard . currentModel . $validate ( ) ;
242
- $mdKeyboard . currentModel . $render ( ) ;
243
-
244
- scope . caps = false ;
245
- }
246
227
}
247
228
248
229
function hideKeyboard ( ) {
0 commit comments