@beisen/ethos
Version:
beisencloud pc react components
77 lines (59 loc) • 1.93 kB
JavaScript
'use strict';
var ReactDOM = require('react-dom');
var Region = require('region');
var DragHelper = require('drag-helper');
var findIndexByName = require('../utils/findIndexByName');
module.exports = function (header, props, column, event) {
event.preventDefault();
var columns = props.columns;
var index = findIndexByName(columns, column.name);
var proxyLeft = Region.from(event.target).right;
var headerNode = ReactDOM.findDOMNode(header);
var constrainTo = Region.from(headerNode);
DragHelper(event, {
constrainTo: constrainTo,
onDragStart: function onDragStart(event, config) {
header.onResizeDragStart({
resizing: true,
resizeColumn: column,
resizeProxyLeft: proxyLeft
});
},
onDrag: function onDrag(event, config) {
var diff = config.diff.left;
header.onResizeDrag({
resizeProxyDiff: diff
}, event);
},
onDrop: function onDrop(event, config) {
var diff = config.diff.left;
var columnHeaders = headerNode.querySelectorAll('.' + props.mainClassName)[0].querySelectorAll('.' + props.cellClassName);
var nextColumn = diff > 0 ? null : columns[index + 1];
var columnSize = Region.from(columnHeaders[index]).width;
var nextColumnSize;
var firstSize = columnSize + diff;
var secondSize = 0;
if (nextColumn) {
nextColumnSize = nextColumn ? Region.from(columnHeaders[index + 1]).width : 0;
secondSize = nextColumnSize - diff;
}
var resizeInfo = [{
name: column.name,
size: firstSize,
diff: diff
}];
if (nextColumn) {
resizeInfo.push({
name: nextColumn.name,
size: secondSize,
diff: -diff
});
}
header.onResizeDrop({
resizing: false,
resizeColumn: null,
resizeProxyLeft: null
}, resizeInfo, event);
}
});
};