Skip to content

Commit

Permalink
Try avoiding the deprecated findDOMNode API
Browse files Browse the repository at this point in the history
  • Loading branch information
youknowriad committed Nov 1, 2018
1 parent 85d58bb commit 6a049e5
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 10 deletions.
17 changes: 8 additions & 9 deletions packages/components/src/drop-zone/provider.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { isEqual, find, some, filter, throttle, includes } from 'lodash';
/**
* WordPress dependencies
*/
import { Component, createContext, findDOMNode } from '@wordpress/element';
import { Component, createContext, createRef } from '@wordpress/element';
import isShallowEqual from '@wordpress/is-shallow-equal';

const { Provider, Consumer } = createContext( {
Expand Down Expand Up @@ -61,6 +61,7 @@ class DropZoneProvider extends Component {
this.resetDragState = this.resetDragState.bind( this );
this.toggleDraggingOverDocument = throttle( this.toggleDraggingOverDocument.bind( this ), 200 );

this.container = createRef();
this.dropZones = [];
this.dropZoneCallbacks = {
addDropZone: this.addDropZone,
Expand All @@ -79,10 +80,6 @@ class DropZoneProvider extends Component {
window.addEventListener( 'dragover', this.onDragOver );
window.addEventListener( 'drop', this.onDrop );
window.addEventListener( 'mouseup', this.resetDragState );

// Disable reason: Can't use a ref since this component just renders its children
// eslint-disable-next-line react/no-find-dom-node
this.container = findDOMNode( this );
}

componentWillUnmount() {
Expand Down Expand Up @@ -212,7 +209,7 @@ class DropZoneProvider extends Component {
const { position, hoveredDropZone } = this.state;
const dragEventType = getDragEventType( event );
const dropZone = this.dropZones[ hoveredDropZone ];
const isValidDropzone = !! dropZone && this.container.contains( event.target );
const isValidDropzone = !! dropZone && this.container.current.contains( event.target );
this.resetDragState();

if ( isValidDropzone ) {
Expand All @@ -234,9 +231,11 @@ class DropZoneProvider extends Component {

render() {
return (
<Provider value={ this.dropZoneCallbacks }>
{ this.props.children }
</Provider>
<div ref={ this.container } className="components-drop-zone__provider">
<Provider value={ this.dropZoneCallbacks }>
{ this.props.children }
</Provider>
</div>
);
}
}
Expand Down
4 changes: 4 additions & 0 deletions packages/components/src/drop-zone/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,7 @@
.components-drop-zone__content-text {
font-family: $default-font;
}

.components-drop-zone__provider {
height: 100%;
}
16 changes: 15 additions & 1 deletion test/e2e/specs/adding-blocks.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,23 @@ describe( 'adding blocks', () => {
await newPost();
} );

/**
* Given a Puppeteer ElementHandle, clicks below its bounding box.
*
* @param {Puppeteer.ElementHandle} elementHandle Element handle.
*
* @return {Promise} Promise resolving when click occurs.
*/
async function clickBelow( elementHandle ) {
const box = await elementHandle.boundingBox();
const x = box.x + ( box.width / 2 );
const y = box.y + box.height + 100;
return page.mouse.click( x, y );
}

it( 'Should insert content using the placeholder and the regular inserter', async () => {
// Click below editor to focus last field (block appender)
await page.click( '.editor-writing-flow__click-redirect' );
await clickBelow( await page.$( '.editor-default-block-appender' ) );
expect( await page.$( '[data-type="core/paragraph"]' ) ).not.toBeNull();
await page.keyboard.type( 'Paragraph block' );

Expand Down

0 comments on commit 6a049e5

Please sign in to comment.