Procházet zdrojové kódy

Added KeyEventInfo.keystroke.

Piotrek Koszuliński před 9 roky
rodič
revize
54d5b171fd

+ 12 - 0
packages/ckeditor5-engine/src/treeview/observer/keyobserver.js

@@ -6,6 +6,7 @@
 'use strict';
 
 import DomEventObserver from './domeventobserver.js';
+import { getCode } from '../../../utils/keyboard.js';
 
 /**
  * {@link engine.treeView.TreeView#keydown Key down} event observer.
@@ -27,6 +28,10 @@ export default class KeyObserver extends DomEventObserver {
 			altKey: domEvt.altKey,
 			ctrlKey: domEvt.ctrlKey || domEvt.metaKey,
 			shiftKey: domEvt.shiftKey,
+
+			get keystroke() {
+				return getCode( this );
+			}
 		} );
 	}
 }
@@ -45,3 +50,10 @@ export default class KeyObserver extends DomEventObserver {
  * @extends engine.treeView.observer.DomEventData
  * @implements utils.keyboard.KeystrokeInfo
  */
+
+/**
+ * Code of the whole keystroke. See {@link utils.keyboard.getCode}.
+ *
+ * @readonly
+ * @member {Number} engine.treeView.observer.keyObserver.KeyEventInfo#keystroke
+ */

+ 19 - 10
packages/ckeditor5-engine/tests/treeview/observer/keyobserver.js

@@ -9,6 +9,7 @@
 
 import KeyObserver from '/ckeditor5/engine/treeview/observer/keyobserver.js';
 import TreeView from '/ckeditor5/engine/treeview/treeview.js';
+import { getCode } from '/ckeditor5/utils/keyboard.js';
 
 describe( 'KeyObserver', () => {
 	let treeView, observer;
@@ -35,11 +36,15 @@ describe( 'KeyObserver', () => {
 			expect( spy.calledOnce ).to.be.true;
 
 			const data = spy.args[ 0 ][ 1 ];
-			expect( data.domTarget ).to.equal( document.body );
-			expect( data.keyCode ).to.equal( 111 );
-			expect( data.altKey ).to.equal( false );
-			expect( data.ctrlKey ).to.equal( false );
-			expect( data.shiftKey ).to.equal( false );
+			expect( data ).to.have.property( 'domTarget', document.body );
+			expect( data ).to.have.property( 'keyCode', 111 );
+			expect( data ).to.have.property( 'altKey', false );
+			expect( data ).to.have.property( 'ctrlKey', false );
+			expect( data ).to.have.property( 'shiftKey', false );
+			expect( data ).to.have.property( 'keystroke', getCode( data ) );
+
+			// Just to be sure.
+			expect( getCode( data ) ).to.equal( 111 );
 		} );
 
 		it( 'should fire keydown with proper key modifiers info', () => {
@@ -50,10 +55,14 @@ describe( 'KeyObserver', () => {
 			observer.onDomEvent( { target: document.body, keyCode: 111, altKey: true, ctrlKey: true, metaKey: false, shiftKey: true } );
 
 			const data = spy.args[ 0 ][ 1 ];
-			expect( data.keyCode ).to.equal( 111 );
-			expect( data.altKey ).to.equal( true );
-			expect( data.ctrlKey ).to.equal( true );
-			expect( data.shiftKey ).to.equal( true );
+			expect( data ).to.have.property( 'keyCode', 111 );
+			expect( data ).to.have.property( 'altKey', true );
+			expect( data ).to.have.property( 'ctrlKey', true );
+			expect( data ).to.have.property( 'shiftKey', true );
+			expect( data ).to.have.property( 'keystroke', getCode( data ) );
+
+			// Just to be sure.
+			expect( getCode( data ) ).to.be.greaterThan( 111 );
 		} );
 
 		it( 'should fire keydown ctrlKey set to true one meta (cmd) was pressed', () => {
@@ -64,7 +73,7 @@ describe( 'KeyObserver', () => {
 			observer.onDomEvent( { target: document.body, keyCode: 111, metaKey: true } );
 
 			const data = spy.args[ 0 ][ 1 ];
-			expect( data.ctrlKey ).to.equal( true );
+			expect( data ).to.have.property( 'ctrlKey', true );
 		} );
 	} );
 } );