Przeglądaj źródła

Fix: ImageStyleCommand should switch properly between any two non-null styles. Closes #132.

Aleksander Nowodzinski 8 lat temu
rodzic
commit
8724627010

+ 5 - 1
packages/ckeditor5-image/src/imagestyle/converters.js

@@ -30,7 +30,11 @@ export function modelToViewStyleAttribute( styles ) {
 		const oldStyle = getStyleByValue( data.attributeOldValue, styles );
 		const viewElement = conversionApi.mapper.toViewElement( data.item );
 
-		if ( handleRemoval( eventType, oldStyle, viewElement ) || handleAddition( eventType, newStyle, viewElement ) ) {
+		const isRemovalHandled = handleRemoval( eventType, oldStyle, viewElement );
+		const isAdditionHandled = handleAddition( eventType, newStyle, viewElement );
+
+		// https://github.com/ckeditor/ckeditor5-image/issues/132
+		if ( isRemovalHandled || isAdditionHandled ) {
 			consumable.consume( data.item, consumableType );
 		}
 	};

+ 16 - 0
packages/ckeditor5-image/tests/imagestyle/imagestyleengine.js

@@ -111,6 +111,22 @@ describe( 'ImageStyleEngine', () => {
 		} );
 
 		expect( editor.getData() ).to.equal( '<figure class="image side-class"><img src="foo.png"></figure>' );
+
+		// https://github.com/ckeditor/ckeditor5-image/issues/132
+		expect( getViewData( viewDocument, { withoutSelection: true } ) ).to.equal(
+			'<figure class="image ck-widget side-class" contenteditable="false"><img src="foo.png"></img></figure>'
+		);
+
+		document.enqueueChanges( () => {
+			batch.setAttribute( image, 'imageStyle', 'dummy' );
+		} );
+
+		expect( editor.getData() ).to.equal( '<figure class="image dummy-class"><img src="foo.png"></figure>' );
+
+		// https://github.com/ckeditor/ckeditor5-image/issues/132
+		expect( getViewData( viewDocument, { withoutSelection: true } ) ).to.equal(
+			'<figure class="image ck-widget dummy-class" contenteditable="false"><img src="foo.png"></img></figure>'
+		);
 	} );
 
 	it( 'should not convert from model to view if already consumed: adding attribute', () => {