@@ -1287,7 +1287,8 @@ function MdKeyboardProvider($$interimElementProvider, $injector, keyboardLayouts
1287
1287
options . restoreScroll = $mdUtil . disableScrollAround ( keyboard . element , options . parent ) ;
1288
1288
}
1289
1289
1290
- return $animate . enter ( keyboard . element , options . parent )
1290
+ return $animate
1291
+ . enter ( keyboard . element , options . parent )
1291
1292
. then ( function ( ) {
1292
1293
if ( options . escapeToClose ) {
1293
1294
options . rootElementKeyupCallback = function ( e ) {
@@ -1302,18 +1303,20 @@ function MdKeyboardProvider($$interimElementProvider, $injector, keyboardLayouts
1302
1303
}
1303
1304
1304
1305
function onRemove ( scope , element , options ) {
1305
-
1306
1306
var keyboard = options . keyboard ;
1307
1307
1308
- return $animate . leave ( keyboard . element ) . then ( function ( ) {
1309
- if ( options . disableParentScroll ) {
1310
- options . restoreScroll ( ) ;
1311
- delete options . restoreScroll ;
1308
+ return $animate
1309
+ . leave ( keyboard . element )
1310
+ . then ( function ( ) {
1312
1311
VISIBLE = false ;
1313
- }
1314
1312
1315
- keyboard . cleanup ( ) ;
1316
- } ) ;
1313
+ if ( options . disableParentScroll ) {
1314
+ options . restoreScroll ( ) ;
1315
+ delete options . restoreScroll ;
1316
+ }
1317
+
1318
+ keyboard . cleanup ( ) ;
1319
+ } ) ;
1317
1320
}
1318
1321
1319
1322
/**
@@ -1393,7 +1396,7 @@ function MdKeyboardDirective($mdKeyboard, $mdTheming) {
1393
1396
} ;
1394
1397
}
1395
1398
1396
- function useKeyboardDirective ( $mdKeyboard , $injector , $timeout , $log , $rootScope ) {
1399
+ function useKeyboardDirective ( $mdKeyboard , $injector , $timeout , $animate , $ log, $rootScope ) {
1397
1400
return {
1398
1401
restrict : 'A' ,
1399
1402
require : '?ngModel' ,
@@ -1429,11 +1432,14 @@ function useKeyboardDirective($mdKeyboard, $injector, $timeout, $log, $rootScope
1429
1432
if ( $rootScope . keyboardTimeout ) {
1430
1433
$timeout . cancel ( $rootScope . keyboardTimeout ) ;
1431
1434
}
1435
+ if ( $rootScope . keyboardAnimation ) {
1436
+ $animate . cancel ( $rootScope . keyboardAnimation ) ;
1437
+ }
1432
1438
1433
1439
// no keyboard active, so add new
1434
1440
if ( ! $mdKeyboard . isVisible ( ) ) {
1435
1441
$mdKeyboard . currentModel = ngModelCtrl ;
1436
- $mdKeyboard . show ( {
1442
+ $rootScope . keyboardAnimation = $ mdKeyboard. show ( {
1437
1443
template :'<md-keyboard class=md-grid layout=column ng-cloak><div ng-repeat="row in keyboard.keys" layout=row><div flex ng-repeat="key in row" ng-switch=key[0] ng-class=getKeyClass(key)><span ng-switch-when=Bksp><md-button class="md-raised key-bksp" ng-mousedown="pressed($event, key[0])" aria-label={{key[0]}}><md-icon>keyboard_backspace</md-icon></md-button></span> <span ng-switch-when=Tab><md-button class="md-raised key-tab" ng-mousedown="pressed($event, key[0])" aria-label={{key[0]}}><md-icon>keyboard_tab</md-icon></md-button></span> <span ng-switch-when=Caps><md-button class="md-raised key-caps" ng-class="{\'locked\': capsLocked, \'md-focused\': capsLocked}" ng-mousedown="pressed($event, key[0])" ng-click=toggleCapsLock() aria-label={{key[0]}}><md-icon>keyboard_capslock</md-icon></md-button></span> <span ng-switch-when=Enter><md-button class="md-raised key-enter" ng-mousedown="pressed($event, key[0])" aria-label={{key[0]}}><md-icon>keyboard_return</md-icon></md-button></span> <span ng-switch-when=Shift><md-button class="md-raised key-shift" ng-mousedown="pressed($event, key[0]); toggleCaps()" aria-label={{key[0]}}>{{key[0]}}</md-button></span> <span ng-switch-when=Spacer></span> <span ng-switch-default><md-button class="md-raised key-char" ng-mousedown="pressed($event, key[!capsLocked && !caps ? 0 : 1])" aria-label="{{key[!capsLocked && !caps ? 0 : 1]}}">{{key[!capsLocked && !caps ? 0 : 1]}}</md-button></span></div></div></md-keyboard>' ,
1438
1444
controller : mdKeyboardController ,
1439
1445
bindToController : true
@@ -1513,7 +1519,7 @@ function useKeyboardDirective($mdKeyboard, $injector, $timeout, $log, $rootScope
1513
1519
1514
1520
function triggerKey ( $event , key ) {
1515
1521
$event . preventDefault ( ) ;
1516
- $log . debug ( 'key pressed: ' + key ) ;
1522
+ $log . info ( 'key pressed: %s (%s)' , key , key . charCodeAt ( 0 ) ) ;
1517
1523
1518
1524
switch ( key ) {
1519
1525
case "Caps" :
@@ -1526,6 +1532,7 @@ function useKeyboardDirective($mdKeyboard, $injector, $timeout, $log, $rootScope
1526
1532
break ;
1527
1533
1528
1534
case "Tab" :
1535
+
1529
1536
// cycle through elements
1530
1537
// or insert \t tab
1531
1538
//if (self.VKI_activeTab) {
@@ -1554,6 +1561,7 @@ function useKeyboardDirective($mdKeyboard, $injector, $timeout, $log, $rootScope
1554
1561
break ;
1555
1562
1556
1563
case "Bksp" :
1564
+
1557
1565
// backspace
1558
1566
//self.VKI_target.focus();
1559
1567
//if (self.VKI_target.setSelectionRange && hasSelectionStartEnd(self.VKI_target) && !self.VKI_target.readOnly) {
@@ -1583,22 +1591,10 @@ function useKeyboardDirective($mdKeyboard, $injector, $timeout, $log, $rootScope
1583
1591
break ;
1584
1592
1585
1593
case "Enter" :
1586
- // submit form or insert \n new line
1587
- //if (self.VKI_target.nodeName != "TEXTAREA") {
1588
- // if (typeof self.VKI_enterSubmit === 'function') {
1589
- // self.VKI_enterSubmit.apply({}, [self.VKI_target.value]);
1590
- // } else if (self.VKI_enterSubmit && self.VKI_target.form) {
1591
- // for (var z = 0, subm = false; z < self.VKI_target.form.elements.length; z++)
1592
- // if (self.VKI_target.form.elements[z].type == "submit") subm = true;
1593
- // if (!subm) self.VKI_target.form.submit();
1594
- // }
1595
- // self.VKI_close(false);
1596
- //} else self.VKI_insert("\n");
1597
- //return true;
1598
-
1599
1594
if ( element [ 0 ] . nodeName . toUpperCase ( ) != 'TEXTAREA' ) {
1600
- scope . $broadcast ( '$submit' ) ;
1601
- scope . $root . $broadcast ( '$submit' ) ;
1595
+ $timeout ( function ( ) {
1596
+ angular . element ( element [ 0 ] . form ) . triggerHandler ( 'submit' ) ;
1597
+ } ) ;
1602
1598
} else {
1603
1599
$mdKeyboard . currentModel . $setViewValue ( ( $mdKeyboard . currentModel . $viewValue || '' ) + "\n" ) ;
1604
1600
$mdKeyboard . currentModel . $validate ( ) ;
@@ -1608,13 +1604,16 @@ function useKeyboardDirective($mdKeyboard, $injector, $timeout, $log, $rootScope
1608
1604
break ;
1609
1605
1610
1606
default :
1611
- //var event = new window.KeyboardEvent('keydown', {
1607
+
1608
+ //$timeout(function () {
1609
+ //var event = new window.KeyboardEvent('keypress', {
1612
1610
// bubbles: true,
1613
1611
// cancelable: true,
1614
1612
// shiftKey: true,
1615
- // keyCode: key[0].charCodeAt(0)
1613
+ // keyCode: key.charCodeAt(0)
1614
+ //});
1615
+ // element[0].dispatchEvent(event);
1616
1616
//});
1617
- //element[0].dispatchEvent(event);
1618
1617
1619
1618
$mdKeyboard . currentModel . $setViewValue ( ( $mdKeyboard . currentModel . $viewValue || '' ) + key [ 0 ] ) ;
1620
1619
$mdKeyboard . currentModel . $validate ( ) ;
@@ -1628,9 +1627,8 @@ function useKeyboardDirective($mdKeyboard, $injector, $timeout, $log, $rootScope
1628
1627
if ( $rootScope . keyboardTimeout ) {
1629
1628
$timeout . cancel ( $rootScope . keyboardTimeout ) ;
1630
1629
}
1631
- //keyboard.hide();
1632
1630
$rootScope . keyboardTimeout = $timeout ( function ( ) {
1633
- $mdKeyboard . hide ( ) ;
1631
+ $rootScope . keyboardAnimation = $ mdKeyboard. hide ( ) ;
1634
1632
} , 500 ) ;
1635
1633
}
1636
1634
}
0 commit comments