Ver Fonte

TreeView events should be fired with view elements.

Piotrek Koszuliński há 9 anos atrás
pai
commit
e499fceca8

+ 13 - 3
packages/ckeditor5-engine/src/treeview/observer/focusobserver.js

@@ -21,7 +21,15 @@ export default class FocusObserver extends DomEventObserver {
 	}
 
 	onDomEvent( domEvt ) {
-		this.fire( domEvt.type, domEvt.target );
+		const treeView = this.treeView;
+
+		this.fire( domEvt.type, {
+			get viewTarget() {
+				return treeView.domConverter.getCorrespondingViewElement( domEvt.target );
+			},
+
+			domTarget: domEvt.target
+		} );
 	}
 }
 
@@ -29,12 +37,14 @@ export default class FocusObserver extends DomEventObserver {
  * Fired when one of the editables gets focus.
  *
  * @event core.treeView.TreeView#focus
- * @param {HTMLElement} The event target (editable element that was focused).
+ * @param {core.treeView.Element} data.viewTarget The event view target (editable element that was focused).
+ * @param {HTMLElement} data.domTarget The event DOM target (editable element that was focused).
  */
 
 /**
  * Fired when one of the editables loses focus.
  *
  * @event core.treeView.TreeView#blur
- * @param {HTMLElement} The event target (editable element that was blurred).
+ * @param {core.treeView.Element} data.viewTarget The event view target (editable element that was blurred).
+ * @param {HTMLElement} data.domTarget The event DOM target (editable element that was blurred).
  */

+ 2 - 2
packages/ckeditor5-engine/tests/treeview/manual/focusobserver.js

@@ -12,8 +12,8 @@ import FocusObserver from '/ckeditor5/core/treeview/observer/focusobserver.js';
 
 const treeView = new TreeView();
 
-treeView.on( 'focus', ( evt, target ) => console.log( 'focus', target ) );
-treeView.on( 'blur', ( evt, target ) => console.log( 'blur', target ) );
+treeView.on( 'focus', ( evt, data ) => console.log( 'focus', data.domTarget ) );
+treeView.on( 'blur', ( evt, data ) => console.log( 'blur', data.domTarget ) );
 
 treeView.addObserver( FocusObserver );
 

+ 11 - 3
packages/ckeditor5-engine/tests/treeview/observer/focusobserver.js

@@ -11,12 +11,14 @@ import FocusObserver from '/ckeditor5/core/treeview/observer/focusobserver.js';
 import TreeView from '/ckeditor5/core/treeview/treeview.js';
 
 describe( 'FocusObserver', () => {
-	let treeView, observer;
+	let treeView, viewBody, observer;
 
 	beforeEach( () => {
 		treeView = new TreeView();
 		treeView.addObserver( FocusObserver );
 
+		viewBody = treeView.domConverter.domToView( document.body, { bind: true } );
+
 		observer = Array.from( treeView._observers )[ 0 ];
 	} );
 
@@ -33,7 +35,10 @@ describe( 'FocusObserver', () => {
 			observer.onDomEvent( { type: 'focus', target: document.body } );
 
 			expect( spy.calledOnce ).to.be.true;
-			expect( spy.calledWith( document.body ) );
+
+			const data = spy.args[ 0 ][ 1 ];
+			expect( data.viewTarget ).to.equal( viewBody );
+			expect( data.domTarget ).to.equal( document.body );
 		} );
 
 		it( 'should fire blur with the target', () => {
@@ -44,7 +49,10 @@ describe( 'FocusObserver', () => {
 			observer.onDomEvent( { type: 'blur', target: document.body } );
 
 			expect( spy.calledOnce ).to.be.true;
-			expect( spy.calledWith( document.body ) );
+
+			const data = spy.args[ 0 ][ 1 ];
+			expect( data.viewTarget ).to.equal( viewBody );
+			expect( data.domTarget ).to.equal( document.body );
 		} );
 	} );
 } );