@6thquake/react-material
Version:
React components that implement Google's Material Design.
68 lines (58 loc) • 1.45 kB
JavaScript
/**
* @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);