Explorar el Código

Added an instance of KeystrokeHandler to TextAlternativeFormView to get rid of escPressHandler helper.

Aleksander Nowodzinski hace 8 años
padre
commit
6bd168e6bd

+ 18 - 0
packages/ckeditor5-image/src/imagetextalternative/ui/textalternativeformview.js

@@ -13,6 +13,7 @@ import Template from '@ckeditor/ckeditor5-ui/src/template';
 import LabeledInputView from '@ckeditor/ckeditor5-ui/src/labeledinput/labeledinputview';
 import InputTextView from '@ckeditor/ckeditor5-ui/src/inputtext/inputtextview';
 import submitHandler from '@ckeditor/ckeditor5-ui/src/bindings/submithandler';
+import KeystrokeHandler from '@ckeditor/ckeditor5-utils/src/keystrokehandler';
 
 /**
  * TextAlternativeFormView class.
@@ -29,6 +30,14 @@ export default class TextAlternativeFormView extends View {
 		const t = this.locale.t;
 
 		/**
+		 * Instance of the {@link module:utils/keystrokehandler~KeystrokeHandler}.
+		 *
+		 * @readonly
+		 * @member {module:utils/keystrokehandler~KeystrokeHandler}
+		 */
+		this.keystrokes = new KeystrokeHandler();
+
+		/**
 		 * Text area with label.
 		 *
 		 * @member {module:ui/labeledinput/labeledinputview~LabeledInputView} #labeledTextarea
@@ -92,6 +101,15 @@ export default class TextAlternativeFormView extends View {
 	}
 
 	/**
+	 * @inheritDoc
+	 */
+	init() {
+		super.init();
+
+		this.keystrokes.listenTo( this.element );
+	}
+
+	/**
 	 * Creates button view.
 	 *
 	 * @private

+ 17 - 0
packages/ckeditor5-image/tests/imagetextalternative/ui/textalternativeformview.js

@@ -7,6 +7,7 @@
 
 import TextAlternativeFormView from '../../../src/imagetextalternative/ui/textalternativeformview';
 import View from '@ckeditor/ckeditor5-ui/src/view';
+import KeystrokeHandler from '@ckeditor/ckeditor5-utils/src/keystrokehandler';
 
 describe( 'TextAlternativeFormView', () => {
 	let view;
@@ -22,6 +23,10 @@ describe( 'TextAlternativeFormView', () => {
 			expect( view.element.classList.contains( 'cke-text-alternative-form' ) ).to.be.true;
 		} );
 
+		it( 'should create #keystrokes instance', () => {
+			expect( view.keystrokes ).to.be.instanceOf( KeystrokeHandler );
+		} );
+
 		it( 'should create child views', () => {
 			expect( view.labeledInput ).to.be.instanceOf( View );
 			expect( view.saveButtonView ).to.be.instanceOf( View );
@@ -37,6 +42,18 @@ describe( 'TextAlternativeFormView', () => {
 		} );
 	} );
 
+	describe( 'init()', () => {
+		it( 'starts listening for #keystrokes coming from #element', () => {
+			view = new TextAlternativeFormView( { t: () => {} } );
+
+			const spy = sinon.spy( view.keystrokes, 'listenTo' );
+
+			view.init();
+			sinon.assert.calledOnce( spy );
+			sinon.assert.calledWithExactly( spy, view.element );
+		} );
+	} );
+
 	describe( 'DOM bindings', () => {
 		describe( 'submit event', () => {
 			it( 'should trigger submit event', () => {