26
26
* | {@link ng.directive:ngDisabled ngDisabled} | aria-disabled |
27
27
* | {@link ng.directive:ngShow ngShow} | aria-hidden |
28
28
* | {@link ng.directive:ngHide ngHide} | aria-hidden |
29
- * | {@link ng.directive:ngClick ngClick} | tabindex |
29
+ * | {@link ng.directive:ngClick ngClick} | tabindex, keypress event |
30
30
* | {@link ng.directive:ngDblclick ngDblclick} | tabindex |
31
31
* | {@link module:ngMessages ngMessages} | aria-live |
32
32
*
@@ -82,7 +82,8 @@ function $AriaProvider() {
82
82
ariaInvalid : true ,
83
83
ariaMultiline : true ,
84
84
ariaValue : true ,
85
- tabindex : true
85
+ tabindex : true ,
86
+ bindKeypress : true
86
87
} ;
87
88
88
89
/**
@@ -99,6 +100,7 @@ function $AriaProvider() {
99
100
* - **ariaMultiline** – `{boolean}` – Enables/disables aria-multiline tags
100
101
* - **ariaValue** – `{boolean}` – Enables/disables aria-valuemin, aria-valuemax and aria-valuenow tags
101
102
* - **tabindex** – `{boolean}` – Enables/disables tabindex tags
103
+ * - **bindKeypress** – `{boolean}` – Enables/disables keypress event binding on ng-click
102
104
*
103
105
* @description
104
106
* Enables/disables various ARIA attributes
@@ -183,13 +185,6 @@ function $AriaProvider() {
183
185
} ;
184
186
}
185
187
186
- var ngAriaTabindex = [ '$aria' , function ( $aria ) {
187
- return function ( scope , elem , attr ) {
188
- if ( $aria . config ( 'tabindex' ) && ! elem . attr ( 'tabindex' ) ) {
189
- elem . attr ( 'tabindex' , 0 ) ;
190
- }
191
- } ;
192
- } ] ;
193
188
194
189
ngAriaModule . directive ( 'ngShow' , [ '$aria' , function ( $aria ) {
195
190
return $aria . $$watchExpr ( 'ngShow' , 'aria-hidden' , true ) ;
@@ -309,5 +304,28 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
309
304
}
310
305
} ;
311
306
} )
312
- . directive ( 'ngClick' , ngAriaTabindex )
313
- . directive ( 'ngDblclick' , ngAriaTabindex ) ;
307
+ . directive ( 'ngClick' , [ '$aria' , function ( $aria ) {
308
+ return {
309
+ restrict : 'A' ,
310
+ link : function ( scope , elem , attr ) {
311
+ if ( $aria . config ( 'tabindex' ) && ! elem . attr ( 'tabindex' ) ) {
312
+ elem . attr ( 'tabindex' , 0 ) ;
313
+ }
314
+
315
+ if ( $aria . config ( 'bindKeypress' ) && ! elem . attr ( 'ng-keypress' ) ) {
316
+ elem . on ( 'keypress' , function ( event ) {
317
+ if ( event . keyCode === 32 || event . keyCode === 13 ) {
318
+ scope . $eval ( attr . ngClick ) ;
319
+ }
320
+ } ) ;
321
+ }
322
+ }
323
+ } ;
324
+ } ] )
325
+ . directive ( 'ngDblclick' , [ '$aria' , function ( $aria ) {
326
+ return function ( scope , elem , attr ) {
327
+ if ( $aria . config ( 'tabindex' ) && ! elem . attr ( 'tabindex' ) ) {
328
+ elem . attr ( 'tabindex' , 0 ) ;
329
+ }
330
+ } ;
331
+ } ] ) ;
0 commit comments