浏览代码

Fix: List items should handle Enter and Space key press when focused. Closes #153.

Aleksander Nowodzinski 8 年之前
父节点
当前提交
f96835c521
共有 2 个文件被更改,包括 31 次插入1 次删除
  1. 11 1
      packages/ckeditor5-ui/src/list/listitemview.js
  2. 20 0
      packages/ckeditor5-ui/tests/list/listitemview.js

+ 11 - 1
packages/ckeditor5-ui/src/list/listitemview.js

@@ -53,7 +53,17 @@ export default class ListItemView extends View {
 			],
 
 			on: {
-				click: bind.to( 'execute' )
+				// Execute on mouse click.
+				click: bind.to( 'execute' ),
+
+				// Execute on Enter and Space key press.
+				keydown: bind.to( evt => {
+					const keyCode = evt.keyCode;
+
+					if ( keyCode == 13 || keyCode == 32 ) {
+						this.fire( 'execute' );
+					}
+				} )
 			}
 		} );
 

+ 20 - 0
packages/ckeditor5-ui/tests/list/listitemview.js

@@ -86,6 +86,26 @@ describe( 'ListItemView', () => {
 				view.element.dispatchEvent( new Event( 'click' ) );
 				expect( spy.calledOnce ).to.be.true;
 			} );
+
+			// https://github.com/ckeditor/ckeditor5-ui/issues/153
+			it( 'triggers view#execute event when Enter or Space key is pressed', () => {
+				const spy = sinon.spy();
+				const evt = new Event( 'keydown' );
+
+				view.on( 'execute', spy );
+
+				evt.keyCode = 10;
+				view.element.dispatchEvent( evt );
+				expect( spy.calledOnce ).to.be.false;
+
+				evt.keyCode = 13;
+				view.element.dispatchEvent( evt );
+				expect( spy.calledOnce ).to.be.true;
+
+				evt.keyCode = 32;
+				view.element.dispatchEvent( evt );
+				expect( spy.calledTwice ).to.be.true;
+			} );
 		} );
 	} );