application/components/assignment/addons/dragAndDrop/DraggableEventWrapper.js
import PropTypes from 'prop-types';
import React from 'react'
import { DragSource } from 'react-dnd';
import cn from 'classnames';
import BigCalendar from 'react-big-calendar';
/* drag sources */
let eventSource = {
beginDrag(props) {
return props.event;
}
}
function collectSource(connect, monitor) {
return {
connectDragSource: connect.dragSource(),
isDragging: monitor.isDragging()
};
}
const propTypes = {
connectDragSource: PropTypes.func.isRequired,
isDragging: PropTypes.bool.isRequired,
event: PropTypes.object.isRequired,
}
class DraggableEventWrapper extends React.Component {
render() {
let { connectDragSource, isDragging, children, event } = this.props;
let EventWrapper = BigCalendar.components.eventWrapper;
children = React.cloneElement(children, {
className: cn(
children.props.className,
isDragging && 'rbc-addons-dnd-dragging'
)
})
if (event.type == 'issue' || event.lock) {
return (
<EventWrapper event={event}>
{children}
</EventWrapper>
)
}
return (
<EventWrapper event={event}>
{connectDragSource(children)}
</EventWrapper>
);
}
}
DraggableEventWrapper.propTypes = propTypes;
export default DragSource('event', eventSource, collectSource)(DraggableEventWrapper);