ice-frontend-react-mobx
Version:
ICE Frontend REACT+MobX
68 lines (57 loc) • 1.8 kB
JavaScript
// File generated on 2016-12-02 by Jay
var debug = require('debug')('ice:DragDropRackBuilder: '); // eslint-disable-line no-unused-vars
import React, { Component } from 'react';
import { DropTarget } from 'react-dnd';
import DeviceTypes from '../../../common/constants/DeviceTypes';
const AllDevices = Object.keys(DeviceTypes).map((type) => (DeviceTypes[type]));
import ClassNames from 'classnames/bind';
let styles = require('./GroupBuilder.css');
var classBind = ClassNames.bind(styles);
const GroupDeviceTarget = {
drop (props, monitor) {
let item = monitor.getItem();
debug('drop()', item);
props.onDrop(item.id);
// props.onDrop(monitor.getItem());
}
};
// *** TARGETS ***//
(AllDevices, GroupDeviceTarget, (connect, monitor) => ({
connectDropTarget: connect.dropTarget(),
isOver: monitor.isOver(),
canDrop: monitor.canDrop()
}))
export default class GroupBuilderTarget extends Component {
render () {
const accepts = AllDevices;
const { isOver, canDrop, connectDropTarget } = this.props;
const isActive = isOver && canDrop;
// conditional styling
let dropTargetStyles = () => {
if (isActive) {
return classBind({
targetStyle: true,
activeTarget: true
});
} else if (canDrop) {
return classBind({
targetStyle: true,
canDropStyle: true
});
} else {
return classBind({
targetStyle: true,
targetInactive: true
});
}
};
return connectDropTarget(
<div className={dropTargetStyles()} data-qa-tag='group-drop-target'>
{isActive ? 'Release device to drop' : (accepts.join(', ')).toUpperCase()}
<div>
{this.props.children}
</div>
</div>
);
}
}