|
1173 | 1173 | }
|
1174 | 1174 |
|
1175 | 1175 | pointer.addClass('rz-active');
|
| 1176 | + pointer[0].focus(); |
1176 | 1177 |
|
1177 | 1178 | ehMove = angular.bind(this, this.dragging.active ? this.onDragMove : this.onMove, pointer);
|
1178 | 1179 | ehEnd = angular.bind(this, this.onEnd, ehMove);
|
|
1211 | 1212 | this.positionTrackingHandle(newValue, newOffset);
|
1212 | 1213 | },
|
1213 | 1214 |
|
| 1215 | + /** |
| 1216 | + * onEnd event handler |
| 1217 | + * |
| 1218 | + * @param {Event} event The event |
| 1219 | + * @param {Function} ehMove The the bound move event handler |
| 1220 | + * @returns {undefined} |
| 1221 | + */ |
| 1222 | + onEnd: function(ehMove, event) { |
| 1223 | + var moveEventName = this.getEventNames(event).moveEvent; |
| 1224 | + |
| 1225 | + //this.minH.removeClass('rz-active'); |
| 1226 | + //this.maxH.removeClass('rz-active'); |
| 1227 | + |
| 1228 | + $document.off(moveEventName, ehMove); |
| 1229 | + |
| 1230 | + this.scope.$emit('slideEnded'); |
| 1231 | + //this.tracking = ''; |
| 1232 | + |
| 1233 | + this.dragging.active = false; |
| 1234 | + this.callOnEnd(); |
| 1235 | + }, |
| 1236 | + |
1214 | 1237 | onPointerFocus: function(pointer, ref, event) {
|
| 1238 | + //if (this.tracking === ref) return; |
1215 | 1239 | this.tracking = ref;
|
| 1240 | + console.info('focused', ref); |
1216 | 1241 | pointer.one('blur', angular.bind(this, this.onPointerBlur, pointer));
|
1217 | 1242 | pointer.on('keydown', angular.bind(this, this.onKeyboardEvent));
|
1218 | 1243 | pointer.addClass('rz-active');
|
1219 | 1244 | },
|
1220 | 1245 |
|
1221 | 1246 | onPointerBlur: function(pointer, event) {
|
1222 |
| - this.tracking = ''; |
| 1247 | + console.info('focused', this.tracking); |
1223 | 1248 | pointer.off('keydown');
|
| 1249 | + this.tracking = ''; |
1224 | 1250 | pointer.removeClass('rz-active');
|
1225 | 1251 | },
|
1226 | 1252 |
|
1227 | 1253 | onKeyboardEvent: function(event) {
|
1228 |
| - var keyCode = event.keyCode || event.which, |
| 1254 | + var currentValue = this.scope[this.tracking], |
| 1255 | + keyCode = event.keyCode || event.which, |
1229 | 1256 | keys = {
|
1230 | 1257 | 38: 'UP',
|
1231 | 1258 | 40: 'DOWN',
|
1232 | 1259 | 37: 'LEFT',
|
1233 |
| - 39: 'RIGHT' |
| 1260 | + 39: 'RIGHT', |
| 1261 | + 33: 'PAGEUP', |
| 1262 | + 34: 'PAGEDOWN', |
| 1263 | + 36: 'HOME', |
| 1264 | + 35: 'END' |
1234 | 1265 | },
|
1235 | 1266 | actions = {
|
1236 |
| - UP: 5, |
1237 |
| - DOWN: -5, |
1238 |
| - LEFT: -1, |
1239 |
| - RIGHT: 1 |
| 1267 | + UP: currentValue + this.step, |
| 1268 | + DOWN: currentValue - this.step, |
| 1269 | + LEFT: currentValue - this.step, |
| 1270 | + RIGHT: currentValue + this.step, |
| 1271 | + PAGEUP: currentValue + this.valueRange / 10, |
| 1272 | + PAGEDOWN: currentValue - this.valueRange / 10, |
| 1273 | + HOME: this.minValue, |
| 1274 | + END: this.maxValue |
1240 | 1275 | },
|
1241 | 1276 | key = keys[keyCode],
|
1242 | 1277 | action = actions[key];
|
1243 |
| - |
1244 |
| - if (!key || !this.tracking) return; |
| 1278 | + if (action == null || this.tracking === '') return; |
1245 | 1279 | event.preventDefault();
|
1246 | 1280 |
|
1247 |
| - var value = this.scope[this.tracking], |
1248 |
| - newValue = this.roundStep(this.sanitizeValue(value + action)), |
| 1281 | + var newValue = this.roundStep(this.sanitizeValue(action)), |
1249 | 1282 | newOffset = this.valueToOffset(newValue);
|
1250 | 1283 | var switched = this.positionTrackingHandle(newValue, newOffset);
|
1251 | 1284 | if (switched) {
|
|
1382 | 1415 | return switched;
|
1383 | 1416 | },
|
1384 | 1417 |
|
1385 |
| - /** |
1386 |
| - * onEnd event handler |
1387 |
| - * |
1388 |
| - * @param {Event} event The event |
1389 |
| - * @param {Function} ehMove The the bound move event handler |
1390 |
| - * @returns {undefined} |
1391 |
| - */ |
1392 |
| - onEnd: function(ehMove, event) { |
1393 |
| - var moveEventName = this.getEventNames(event).moveEvent; |
1394 |
| - |
1395 |
| - this.minH.removeClass('rz-active'); |
1396 |
| - this.maxH.removeClass('rz-active'); |
1397 |
| - |
1398 |
| - $document.off(moveEventName, ehMove); |
1399 |
| - |
1400 |
| - this.scope.$emit('slideEnded'); |
1401 |
| - this.tracking = ''; |
1402 |
| - |
1403 |
| - this.dragging.active = false; |
1404 |
| - this.callOnEnd(); |
1405 |
| - }, |
1406 |
| - |
1407 | 1418 | /**
|
1408 | 1419 | * Get event names for move and event end
|
1409 | 1420 | *
|
|
0 commit comments