UNPKG

@6thquake/react-material

Version:

React components that implement Google's Material Design.

68 lines (58 loc) 1.45 kB
/** * @ignore - do not document. */ import React from 'react'; import ReactDOM from 'react-dom'; import withStyles from '../styles/withStyles'; import { DropTarget as DropTargetBase } from 'react-dnd'; import update from 'immutability-helper'; import PropTypes from 'prop-types'; const styles = {}; const boxTarget = { drop(props, monitor, component) { if (component.state.acceptSource.indexOf(monitor.getItem().sourceType) === -1) { return; } component.state.comp.drop(props, monitor, component); } }; class _DropTarget extends React.Component { constructor(props) { super(props); this.accept = items => { this.setState(preState => ({ acceptSource: [...items] })); }; this.register = comp => { this.state.comp = comp; }; this.state = { acceptSource: '' }; } render() { // console.log(this.state.acceptSource) const { connect, monitor, classes, children } = this.props; return connect.dropTarget()(React.createElement("div", null, React.cloneElement(children, { accept: this.accept, register: this.register.bind(this), connect, monitor }))); } } function collect(connect, monitor) { return { connect, monitor, itemType: monitor.getItemType() }; } const DropTarget = DropTargetBase('*', boxTarget, collect)(_DropTarget); export default withStyles(styles)(DropTarget);