Ver Fonte

Introduced ClickObserver.

Oskar Wrobel há 9 anos atrás
pai
commit
a92c6b96e3

+ 26 - 0
packages/ckeditor5-engine/src/view/observer/clickobserver.js

@@ -0,0 +1,26 @@
+/**
+ * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+import DomEventObserver from './domeventobserver.js';
+
+/**
+ * {@link engine.view.Document#click Click} event observer.
+ *
+ * Note that this observer is not attached by the {@link engine.view.Document} and is not available by default.
+ *
+ * @memberOf engine.view.observer
+ * @extends engine.view.observer.DomEventObserver
+ */
+export default class ClickObserver extends DomEventObserver {
+	constructor( document ) {
+		super( document );
+
+		this.domEventType = 'click';
+	}
+
+	onDomEvent( domEvent ) {
+		this.fire( domEvent.type, domEvent );
+	}
+}

+ 38 - 0
packages/ckeditor5-engine/tests/view/observer/clickobserver.js

@@ -0,0 +1,38 @@
+/**
+ * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* globals document */
+/* bender-tags: view, browser-only */
+
+import ClickObserver from '/ckeditor5/engine/view/observer/clickobserver.js';
+import ViewDocument from '/ckeditor5/engine/view/document.js';
+
+describe( 'ClickObserver', () => {
+	let viewDocument, observer;
+
+	beforeEach( () => {
+		viewDocument = new ViewDocument();
+		observer = viewDocument.getObserver( ClickObserver );
+	} );
+
+	it( 'should define domEventType', () => {
+		expect( observer.domEventType ).to.equal( 'click' );
+	} );
+
+	describe( 'onDomEvent', () => {
+		it( 'should fire click with the right event data', () => {
+			const spy = sinon.spy();
+
+			viewDocument.on( 'click', spy );
+
+			observer.onDomEvent( { type: 'click', target: document.body } );
+
+			expect( spy.calledOnce ).to.be.true;
+
+			const data = spy.args[ 0 ][ 1 ];
+			expect( data.domTarget ).to.equal( document.body );
+		} );
+	} );
+} );