diff --git a/src/bindings/escpresshandler.js b/src/bindings/escpresshandler.js deleted file mode 100644 index dda2a644..00000000 --- a/src/bindings/escpresshandler.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md. - */ - -/** - * @module ui/bindings/escpresshandler - */ - -/* global document */ - -import { keyCodes } from '@ckeditor/ckeditor5-utils/src/keyboard'; - -/** - * Detects Esc `keydown` DOM event and fires an action. - * - * @param {Object} options Configuration options. - * @param {module:utils/dom/emittermixin~Emitter} options.emitter The emitter to which this behavior should be added. - * @param {Function} options.activator Function returning a `Boolean`, to determine whether handler is active. - * @param {Function} options.callback Function fired after Esc is pressed. - */ -export default function escPressHandler( { emitter, activator, callback } ) { - emitter.listenTo( document, 'keydown', ( evt, { keyCode } ) => { - if ( keyCode == keyCodes.esc && activator() ) { - callback(); - } - } ); -} diff --git a/tests/bindings/escpresshandler.js b/tests/bindings/escpresshandler.js deleted file mode 100644 index 9548f017..00000000 --- a/tests/bindings/escpresshandler.js +++ /dev/null @@ -1,141 +0,0 @@ -/** - * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md. - */ - -/* global document */ - -import escPressHandler from '../../src/bindings/escpresshandler'; - -import DomEmitterMixin from '@ckeditor/ckeditor5-utils/src/dom/emittermixin'; -import { keyCodes } from '@ckeditor/ckeditor5-utils/src/keyboard'; - -import testUtils from '@ckeditor/ckeditor5-core/tests/_utils/utils'; - -testUtils.createSinonSandbox(); - -describe( 'escPressHandler', () => { - let emitter, actionSpy, activator; - - beforeEach( () => { - activator = testUtils.sinon.stub().returns( false ); - actionSpy = testUtils.sinon.spy(); - emitter = Object.create( DomEmitterMixin ); - - escPressHandler( { - emitter, - activator, - callback: actionSpy - } ); - } ); - - afterEach( () => { - emitter.stopListening(); - } ); - - it( 'should fired callback after pressing `Esc` when listener is active', () => { - activator.returns( true ); - - dispatchKeyboardEvent( document, 'keydown', keyCodes.esc ); - - sinon.assert.calledOnce( actionSpy ); - } ); - - it( 'should not fired callback after pressing a key different than `Esc`', () => { - activator.returns( true ); - - dispatchKeyboardEvent( document, 'keydown', keyCodes.ctrlKey ); - - sinon.assert.notCalled( actionSpy ); - } ); - - it( 'should not fired callback after pressing Esc when listener is not active', () => { - activator.returns( false ); - - dispatchKeyboardEvent( document, 'keydown', keyCodes.enter ); - - sinon.assert.notCalled( actionSpy ); - } ); - - it( 'should not fired callback after pressing other than Esc key when listener is active', () => { - activator.returns( false ); - - dispatchKeyboardEvent( document, 'keydown', keyCodes.esc ); - - sinon.assert.notCalled( actionSpy ); - } ); - - it( 'should listen when model initial `ifActive` value was `true`', () => { - const spy = testUtils.sinon.spy(); - - activator.returns( true ); - - emitter = Object.create( DomEmitterMixin ); - - escPressHandler( { - emitter, - activator, - callback: spy - } ); - - dispatchKeyboardEvent( document, 'keydown', keyCodes.esc ); - - sinon.assert.calledOnce( spy ); - } ); - - it( 'should not listen when model initial `ifActive` value was `false`', () => { - const spy = testUtils.sinon.spy(); - - activator.returns( false ); - - emitter = Object.create( DomEmitterMixin ); - - escPressHandler( { - emitter, - activator, - callback: spy - } ); - - dispatchKeyboardEvent( document, 'keydown', keyCodes.esc ); - - sinon.assert.notCalled( spy ); - } ); - - it( 'should react on model `ifActive` property change', () => { - activator.returns( true ); - - dispatchKeyboardEvent( document, 'keydown', keyCodes.esc ); - - sinon.assert.calledOnce( actionSpy ); - - activator.returns( false ); - - dispatchKeyboardEvent( document, 'keydown', keyCodes.esc ); - - // Still called once, was not called second time. - sinon.assert.calledOnce( actionSpy ); - - activator.returns( true ); - - dispatchKeyboardEvent( document, 'keydown', keyCodes.esc ); - - // Called one more time. - sinon.assert.calledTwice( actionSpy ); - } ); -} ); - -// Creates and dispatches keyboard event with specified keyCode. -// -// @private -// @param {EventTarget} eventTarget -// @param {String} eventName -// @param {Number} keyCode -function dispatchKeyboardEvent( eventTarget, eventName, keyCode ) { - const event = document.createEvent( 'Events' ); - - event.initEvent( eventName, true, true ); - event.which = keyCode; - event.keyCode = keyCode; - - eventTarget.dispatchEvent( event ); -}