@emsipl/react-data-grid-addons
Version:
A set of addons for react-data-grid
48 lines • 2.17 kB
JavaScript
import { __assign, __extends } from "tslib";
import React from 'react';
import ReactDOM from 'react-dom';
import { DropTarget } from 'react-dnd';
import { rowComparer } from 'react-data-grid';
var rowDropTarget = function (Row) { return /** @class */ (function (_super) {
__extends(class_1, _super);
function class_1() {
return _super !== null && _super.apply(this, arguments) || this;
}
class_1.prototype.shouldComponentUpdate = function (nextProps) {
return rowComparer(nextProps, this.props);
};
class_1.prototype.moveRow = function () {
ReactDOM.findDOMNode(this).classList.add('slideUp');
};
class_1.prototype.render = function () {
var _this = this;
var _a = this.props, connectDropTarget = _a.connectDropTarget, isOver = _a.isOver, canDrop = _a.canDrop;
var overlayTop = this.props.idx * this.props.height;
return connectDropTarget(React.createElement("div", null,
React.createElement(Row, __assign({ ref: function (node) { return _this.row = node; } }, this.props)),
isOver && canDrop && (React.createElement("div", { className: "rowDropTarget", style: {
top: overlayTop,
height: this.props.height
} }))));
};
return class_1;
}(React.Component)); };
var target = {
drop: function (props, monitor, component) {
// Obtain the dragged item
component.moveRow();
var rowSource = monitor.getItem();
var rowTarget = { idx: props.idx, data: props.row };
props.onRowDrop({ rowSource: rowSource, rowTarget: rowTarget });
}
};
function collect(connect, monitor) {
return {
connectDropTarget: connect.dropTarget(),
isOver: monitor.isOver(),
canDrop: monitor.canDrop(),
draggedRow: monitor.getItem()
};
}
export default (function (Row) { return DropTarget('Row', target, collect, { arePropsEqual: function (nextProps, currentProps) { return !rowComparer(nextProps, currentProps); } })(rowDropTarget(Row)); });
//# sourceMappingURL=DropTargetRowContainer.js.map