UNPKG

@emsipl/react-data-grid-addons

Version:

A set of addons for react-data-grid

51 lines (44 loc) 1.35 kB
import React, { Component } from 'react'; import PropTypes from 'prop-types'; import html5DragDropContext from '../shared/html5DragDropContext'; import DraggableHeaderCell from './DraggableHeaderCell'; import RowDragLayer from './RowDragLayer'; import { isColumnsImmutable } from 'common/utils'; class DraggableContainer extends Component { getRows(rowsCount, rowGetter) { const rows = []; for (let j = 0; j < rowsCount; j++) { rows.push(rowGetter(j)); } return rows; } renderGrid() { return React.cloneElement( React.Children.only(this.props.children), { draggableHeaderCell: DraggableHeaderCell } ); } render() { const grid = this.renderGrid(); const rowGetter = this.props.getDragPreviewRow || grid.props.rowGetter; const rowsCount = grid.props.rowsCount; const columns = grid.props.columns; const rows = this.getRows(rowsCount, rowGetter); return ( <div> {grid} <RowDragLayer rowSelection={grid.props.rowSelection} rows={rows} columns={isColumnsImmutable(columns) ? columns.toArray() : columns} /> </div> ); } } DraggableContainer.propTypes = { children: PropTypes.element.isRequired, getDragPreviewRow: PropTypes.func }; export default html5DragDropContext(DraggableContainer);