Parcourir la source

Fixed: Region class inserting child views at the wrong position.

Aleksander Nowodzinski il y a 9 ans
Parent
commit
573bc0a65f
2 fichiers modifiés avec 15 ajouts et 2 suppressions
  1. 1 1
      packages/ckeditor5-ui/src/region.js
  2. 14 1
      packages/ckeditor5-ui/tests/region.js

+ 1 - 1
packages/ckeditor5-ui/src/region.js

@@ -51,7 +51,7 @@ export default class Region {
 
 		if ( regionElement ) {
 			this.views.on( 'add', ( evt, childView, index ) => {
-				regionElement.insertBefore( childView.element, regionElement.childNodes[ index + 1 ] );
+				regionElement.insertBefore( childView.element, regionElement.childNodes[ index ] );
 			} );
 
 			this.views.on( 'remove', ( evt, childView ) => {

+ 14 - 1
packages/ckeditor5-ui/tests/region.js

@@ -35,15 +35,28 @@ describe( 'View', () => {
 
 	describe( 'views collection', () => {
 		it( 'updates DOM when adding views', () => {
+			let view;
+
 			region.init( el );
 
 			expect( region.element.childNodes.length ).to.be.equal( 0 );
 
-			region.views.add( new TestViewA() );
+			view = new TestViewA();
+			region.views.add( view, 0 );
 			expect( region.element.childNodes.length ).to.be.equal( 1 );
 
 			region.views.add( new TestViewA() );
 			expect( region.element.childNodes.length ).to.be.equal( 2 );
+
+			view = new TestViewA();
+			region.views.add( view, 1 );
+			expect( region.element.childNodes.length ).to.be.equal( 3 );
+			expect( region.element.childNodes[ 1 ] ).to.equal( view.element );
+
+			view = new TestViewA();
+			region.views.add( view, 0 );
+			expect( region.element.childNodes.length ).to.be.equal( 4 );
+			expect( region.element.childNodes[ 0 ] ).to.equal( view.element );
 		} );
 
 		it( 'does not update DOM when no region element', () => {