diff --git a/packages/ckeditor5-engine/src/view/domconverter.js b/packages/ckeditor5-engine/src/view/domconverter.js index 8abeb1d6cf6..ce2ec97f1e9 100644 --- a/packages/ckeditor5-engine/src/view/domconverter.js +++ b/packages/ckeditor5-engine/src/view/domconverter.js @@ -82,7 +82,7 @@ export default class DomConverter { * @readonly * @member {Array.} module:engine/view/domconverter~DomConverter#blockElements */ - this.blockElements = [ 'p', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'dd', 'dt', 'figcaption' ]; + this.blockElements = [ 'p', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li', 'dd', 'dt', 'figcaption', 'td', 'th' ]; /** * Block {@link module:engine/view/filler filler} creator, which is used to create all block fillers during the diff --git a/packages/ckeditor5-table/tests/tableclipboard-paste.js b/packages/ckeditor5-table/tests/tableclipboard-paste.js index e7eac1472f4..63598d21b44 100644 --- a/packages/ckeditor5-table/tests/tableclipboard-paste.js +++ b/packages/ckeditor5-table/tests/tableclipboard-paste.js @@ -3553,6 +3553,32 @@ describe( 'table clipboard', () => { [ '02', '21', '22' ] ] ) ); } ); + + it( 'removes block fillers from empty cells (both td and th)', async () => { + await createEditor(); + + setModelData( model, modelTable( [ + [ '00', '01', '02' ], + [ '01', '11', '12' ], + [ '02', '21', '22' ] + ] ) ); + + tableSelection.setCellSelection( + modelRoot.getNodeByPath( [ 0, 0, 0 ] ), + modelRoot.getNodeByPath( [ 0, 1, 1 ] ) + ); + + pasteTable( [ + [ ' ', ' ' ], + [ ' ', ' ' ] + ], { headingRows: 1 } ); + + assertEqualMarkup( getModelData( model, { withoutSelection: true } ), modelTable( [ + [ '', '', '02' ], + [ '', '', '12' ], + [ '02', '21', '22' ] + ] ) ); + } ); } ); async function createEditor( extraPlugins = [] ) { @@ -3566,13 +3592,13 @@ describe( 'table clipboard', () => { tableSelection = editor.plugins.get( 'TableSelection' ); } - function pasteTable( tableData ) { + function pasteTable( tableData, attributes = {} ) { const data = { dataTransfer: createDataTransfer(), preventDefault: sinon.spy(), stopPropagation: sinon.spy() }; - data.dataTransfer.setData( 'text/html', viewTable( tableData ) ); + data.dataTransfer.setData( 'text/html', viewTable( tableData, attributes ) ); viewDocument.fire( 'paste', data ); return data;