Skip to content

Commit

Permalink
Merge pull request #15112 from ckeditor/ck/15085-preview-is-blackened…
Browse files Browse the repository at this point in the history
…-when-using-the-block-balloon

Internal (clipboard): Drag and drop preview should not have black background on iOS. Closes #15085.
  • Loading branch information
arkflpc authored Oct 4, 2023
2 parents 256eb37 + 7816f00 commit 4146775
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 0 deletions.
8 changes: 8 additions & 0 deletions packages/ckeditor5-clipboard/src/dragdrop.ts
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,14 @@ export default class DragDrop extends Plugin {
preview.style.width = computedStyle.width;
preview.style.paddingLeft = `${ domRect.left - clientX + domEditablePaddingLeft }px`;

/**
* Set white background in drag and drop preview if iOS.
* Check: https://github.com/ckeditor/ckeditor5/issues/15085
*/
if ( env.isiOS ) {
preview.style.backgroundColor = 'white';
}

preview.innerHTML = dataTransfer.getData( 'text/html' );

dataTransfer.setDragImage( preview, 0, 0 );
Expand Down
64 changes: 64 additions & 0 deletions packages/ckeditor5-clipboard/tests/dragdropblocktoolbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,70 @@ describe( 'Drag and Drop Block Toolbar', () => {

expect( dragDropBlockToolbar._isBlockDragging ).to.be.false;
} );

it( 'should show preview with white background on iOS', () => {
const originalEnviOs = env.isiOS;

env.isiOS = true;

setModelData( model, '<paragraph>[foo]bar</paragraph>' );

const dataTransfer = new DataTransfer();
const spy = sinon.spy( dataTransfer, 'setDragImage' );

const dragStartEvent = new DragEvent( 'dragstart', {
dataTransfer
} );

blockToolbarButton.dispatchEvent( dragStartEvent );

sinon.assert.calledOnce( spy );

sinon.assert.calledWith( spy, sinon.match( {
style: {
backgroundColor: 'white'
},
className: 'ck ck-content',
firstChild: sinon.match( {
tagName: 'P',
innerHTML: 'foobar'
} )
} ), 0, 0 );

env.isiOS = originalEnviOs;
} );

it( 'should show preview without white background if not iOS', () => {
const originalEnviOs = env.isiOS;

env.isiOS = false;

setModelData( model, '<paragraph>[foo]bar</paragraph>' );

const dataTransfer = new DataTransfer();
const spy = sinon.spy( dataTransfer, 'setDragImage' );

const dragStartEvent = new DragEvent( 'dragstart', {
dataTransfer
} );

blockToolbarButton.dispatchEvent( dragStartEvent );

sinon.assert.calledOnce( spy );

sinon.assert.calledWith( spy, sinon.match( {
style: {
backgroundColor: ''
},
className: 'ck ck-content',
firstChild: sinon.match( {
tagName: 'P',
innerHTML: 'foobar'
} )
} ), 0, 0 );

env.isiOS = originalEnviOs;
} );
} );

function expectDraggingMarker( targetPositionOrRange ) {
Expand Down

0 comments on commit 4146775

Please sign in to comment.