diff --git a/packages/block-editor/src/components/use-on-block-drop/index.js b/packages/block-editor/src/components/use-on-block-drop/index.js index 859b294fd533c0..450340b122b4c9 100644 --- a/packages/block-editor/src/components/use-on-block-drop/index.js +++ b/packages/block-editor/src/components/use-on-block-drop/index.js @@ -259,10 +259,14 @@ export default function useOnBlockDrop( targetRootClientId, targetBlockIndex ) { const files = getFilesFromDataTransfer( event.dataTransfer ); const html = event.dataTransfer.getData( 'text/html' ); - if ( files.length ) { - _onFilesDrop( files ); - } else if ( html ) { + /** + * From Windows Chrome 96, the `event.dataTransfer` returns both file object and HTML. + * The order of the checks is important to recognise the HTML drop. + */ + if ( html ) { _onHTMLDrop( html ); + } else if ( files.length ) { + _onFilesDrop( files ); } else { _onDrop( event ); } diff --git a/packages/components/src/drop-zone/index.js b/packages/components/src/drop-zone/index.js index 6ab5c5141fa403..3fedf13e717afa 100644 --- a/packages/components/src/drop-zone/index.js +++ b/packages/components/src/drop-zone/index.js @@ -39,10 +39,14 @@ export default function DropZoneComponent( { const files = getFilesFromDataTransfer( event.dataTransfer ); const html = event.dataTransfer.getData( 'text/html' ); - if ( files.length && onFilesDrop ) { - onFilesDrop( files ); - } else if ( html && onHTMLDrop ) { + /** + * From Windows Chrome 96, the `event.dataTransfer` returns both file object and HTML. + * The order of the checks is important to recognise the HTML drop. + */ + if ( html && onHTMLDrop ) { onHTMLDrop( html ); + } else if ( files.length && onFilesDrop ) { + onFilesDrop( files ); } else if ( onDrop ) { onDrop( event ); } @@ -52,15 +56,19 @@ export default function DropZoneComponent( { let _type = 'default'; - if ( + /** + * From Windows Chrome 96, the `event.dataTransfer` returns both file object and HTML. + * The order of the checks is important to recognise the HTML drop. + */ + if ( includes( event.dataTransfer.types, 'text/html' ) ) { + _type = 'html'; + } else if ( // Check for the types because sometimes the files themselves // are only available on drop. includes( event.dataTransfer.types, 'Files' ) || getFilesFromDataTransfer( event.dataTransfer ).length > 0 ) { _type = 'file'; - } else if ( includes( event.dataTransfer.types, 'text/html' ) ) { - _type = 'html'; } setType( _type );