|
@@ -3311,19 +3311,24 @@ describe( 'ListEngine', () => {
|
|
|
|
|
|
|
|
describe( 'other', () => {
|
|
describe( 'other', () => {
|
|
|
it( 'model insert converter should not fire if change was already consumed', () => {
|
|
it( 'model insert converter should not fire if change was already consumed', () => {
|
|
|
- editor.editing.modelToView.on( 'insert:listItem', ( evt, data, consumable ) => {
|
|
|
|
|
- consumable.consume( data.item, 'insert' );
|
|
|
|
|
|
|
+ editor.editing.modelToView.on( 'insert:listItem', ( evt, data, consumable, conversionApi ) => {
|
|
|
|
|
+ consumable.consume( data.item, 'attribute:type' );
|
|
|
|
|
+ consumable.consume( data.item, 'attribute:indent' );
|
|
|
|
|
+
|
|
|
|
|
+ const converter = insertElement( new ViewContainerElement( 'p' ) );
|
|
|
|
|
+
|
|
|
|
|
+ return converter( evt, data, consumable, conversionApi );
|
|
|
}, { priority: 'highest' } );
|
|
}, { priority: 'highest' } );
|
|
|
|
|
|
|
|
// Paragraph is needed, otherwise selection throws.
|
|
// Paragraph is needed, otherwise selection throws.
|
|
|
- setModelData( model, '<paragraph>x</paragraph><listItem indent="0" type="bulleted"></listItem>' );
|
|
|
|
|
|
|
+ setModelData( model, '<paragraph>x</paragraph><listItem indent="0" type="bulleted">y</listItem>' );
|
|
|
|
|
|
|
|
- expect( getViewData( editor.editing.view, { withoutSelection: true } ) ).to.equal( '<p>x</p>' );
|
|
|
|
|
|
|
+ expect( getViewData( editor.editing.view, { withoutSelection: true } ) ).to.equal( '<p>x</p><p>y</p>' );
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
- it( 'model remove converter should not fire if change was already consumed', () => {
|
|
|
|
|
- editor.editing.modelToView.on( 'remove:listItem', ( evt, data, consumable ) => {
|
|
|
|
|
- consumable.consume( data.item, 'remove' );
|
|
|
|
|
|
|
+ it( 'model remove converter should be possible to overwrite', () => {
|
|
|
|
|
+ editor.editing.modelToView.on( 'remove:listItem', evt => {
|
|
|
|
|
+ evt.stop();
|
|
|
}, { priority: 'highest' } );
|
|
}, { priority: 'highest' } );
|
|
|
|
|
|
|
|
// Paragraph is needed to prevent autoparagraphing of empty editor.
|
|
// Paragraph is needed to prevent autoparagraphing of empty editor.
|
|
@@ -3337,8 +3342,8 @@ describe( 'ListEngine', () => {
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
it( 'model change type converter should not fire if change was already consumed', () => {
|
|
it( 'model change type converter should not fire if change was already consumed', () => {
|
|
|
- editor.editing.modelToView.on( 'changeAttribute:type', ( evt, data, consumable ) => {
|
|
|
|
|
- consumable.consume( data.item, 'changeAttribute:type' );
|
|
|
|
|
|
|
+ editor.editing.modelToView.on( 'attribute:type', ( evt, data, consumable ) => {
|
|
|
|
|
+ consumable.consume( data.item, 'attribute:type' );
|
|
|
}, { priority: 'highest' } );
|
|
}, { priority: 'highest' } );
|
|
|
|
|
|
|
|
setModelData( model, '<listItem indent="0" type="bulleted"></listItem>' );
|
|
setModelData( model, '<listItem indent="0" type="bulleted"></listItem>' );
|
|
@@ -3351,8 +3356,8 @@ describe( 'ListEngine', () => {
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
it( 'model change indent converter should not fire if change was already consumed', () => {
|
|
it( 'model change indent converter should not fire if change was already consumed', () => {
|
|
|
- editor.editing.modelToView.on( 'changeAttribute:indent', ( evt, data, consumable ) => {
|
|
|
|
|
- consumable.consume( data.item, 'changeAttribute:indent' );
|
|
|
|
|
|
|
+ editor.editing.modelToView.on( 'attribute:indent', ( evt, data, consumable ) => {
|
|
|
|
|
+ consumable.consume( data.item, 'attribute:indent' );
|
|
|
}, { priority: 'highest' } );
|
|
}, { priority: 'highest' } );
|
|
|
|
|
|
|
|
setModelData( model, '<listItem indent="0" type="bulleted">a</listItem><listItem indent="0" type="bulleted">b</listItem>' );
|
|
setModelData( model, '<listItem indent="0" type="bulleted">a</listItem><listItem indent="0" type="bulleted">b</listItem>' );
|
|
@@ -3404,8 +3409,8 @@ describe( 'ListEngine', () => {
|
|
|
expect( getViewData( editor.editing.view, { withoutSelection: true } ) )
|
|
expect( getViewData( editor.editing.view, { withoutSelection: true } ) )
|
|
|
.to.equal( '<ul><li>Foo<span></span></li><li>Bar</li></ul>' );
|
|
.to.equal( '<ul><li>Foo<span></span></li><li>Bar</li></ul>' );
|
|
|
|
|
|
|
|
- // Change indent of the second list item.
|
|
|
|
|
model.change( writer => {
|
|
model.change( writer => {
|
|
|
|
|
+ // Change indent of the second list item.
|
|
|
writer.setAttribute( 'indent', 1, modelRoot.getChild( 1 ) );
|
|
writer.setAttribute( 'indent', 1, modelRoot.getChild( 1 ) );
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
@@ -3426,8 +3431,8 @@ describe( 'ListEngine', () => {
|
|
|
expect( getViewData( editor.editing.view, { withoutSelection: true } ) )
|
|
expect( getViewData( editor.editing.view, { withoutSelection: true } ) )
|
|
|
.to.equal( '<ul><li>Foo<span></span></li><li>Bar<ul><li>Xxx</li><li>Yyy</li></ul></li></ul>' );
|
|
.to.equal( '<ul><li>Foo<span></span></li><li>Bar<ul><li>Xxx</li><li>Yyy</li></ul></li></ul>' );
|
|
|
|
|
|
|
|
- // Remove second list item. Expect that its sub-list will be moved to first list item.
|
|
|
|
|
model.change( writer => {
|
|
model.change( writer => {
|
|
|
|
|
+ // Remove second list item. Expect that its sub-list will be moved to first list item.
|
|
|
writer.remove( modelRoot.getChild( 1 ) );
|
|
writer.remove( modelRoot.getChild( 1 ) );
|
|
|
} );
|
|
} );
|
|
|
|
|
|
|
@@ -3540,7 +3545,11 @@ describe( 'ListEngine', () => {
|
|
|
const newType = element.getAttribute( 'type' ) == 'numbered' ? 'bulleted' : 'numbered';
|
|
const newType = element.getAttribute( 'type' ) == 'numbered' ? 'bulleted' : 'numbered';
|
|
|
|
|
|
|
|
model.change( writer => {
|
|
model.change( writer => {
|
|
|
- writer.setAttribute( 'type', newType, modelDoc.selection.getFirstRange() );
|
|
|
|
|
|
|
+ const itemsToChange = Array.from( modelDoc.selection.getSelectedBlocks() );
|
|
|
|
|
+
|
|
|
|
|
+ for ( const item of itemsToChange ) {
|
|
|
|
|
+ writer.setAttribute( 'type', newType, item );
|
|
|
|
|
+ }
|
|
|
} );
|
|
} );
|
|
|
};
|
|
};
|
|
|
|
|
|