Преглед на файлове

Split parent on Enter press according to schema.

Oskar Wróbel преди 6 години
родител
ревизия
21ccddbc60
променени са 2 файла, в които са добавени 16 реда и са изтрити 5 реда
  1. 3 1
      packages/ckeditor5-widget/src/widget.js
  2. 13 4
      packages/ckeditor5-widget/tests/widget.js

+ 3 - 1
packages/ckeditor5-widget/src/widget.js

@@ -276,7 +276,9 @@ export default class Widget extends Plugin {
 				const paragraph = writer.createElement( 'paragraph' );
 
 				if ( !model.schema.isLimit( objectElement.parent ) ) {
-					position = writer.split( position ).position;
+					const paragraphLimit = model.schema.findAllowedParent( position, paragraph );
+
+					position = writer.split( position, paragraphLimit ).position;
 				}
 
 				writer.insert( paragraph, position );

+ 13 - 4
packages/ckeditor5-widget/tests/widget.js

@@ -730,16 +730,25 @@ describe( 'Widget', () => {
 			);
 
 			it( 'should split parent when widget is inside block element', () => {
-				model.schema.register( 'parent', {
+				model.schema.register( 'allowP', {
 					inheritAllFrom: '$block'
 				} );
+				model.schema.register( 'disallowP', {
+					inheritAllFrom: '$block',
+					allowIn: [ 'allowP' ]
+				} );
 				model.schema.extend( 'widget', {
-					allowIn: [ 'parent' ]
+					allowIn: [ 'allowP', 'disallowP' ]
+				} );
+				model.schema.extend( 'paragraph', {
+					allowIn: [ 'allowP' ]
 				} );
 
 				editor.conversion.for( 'downcast' ).elementToElement( { model: 'parent', view: 'parent' } );
+				editor.conversion.for( 'downcast' ).elementToElement( { model: 'allowP', view: 'allowP' } );
+				editor.conversion.for( 'downcast' ).elementToElement( { model: 'disallowP', view: 'disallowP' } );
 
-				setModelData( model, '<parent>[<widget></widget>]</parent>' );
+				setModelData( model, '<allowP><disallowP>[<widget></widget>]</disallowP></allowP>' );
 
 				viewDocument.fire( 'keydown', new DomEventData(
 					viewDocument,
@@ -748,7 +757,7 @@ describe( 'Widget', () => {
 				) );
 
 				expect( getModelData( model ) ).to.equal(
-					'<parent><widget></widget></parent><paragraph>[]</paragraph><parent></parent>'
+					'<allowP><disallowP><widget></widget></disallowP><paragraph>[]</paragraph><disallowP></disallowP></allowP>'
 				);
 			} );
 		} );