Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

51 строка
1.3 KiB

  1. import React, { Component } from 'react';
  2. import PropTypes from 'prop-types';
  3. import html5DragDropContext from '../shared/html5DragDropContext';
  4. import DraggableHeaderCell from './DraggableHeaderCell';
  5. import RowDragLayer from './RowDragLayer';
  6. import { isColumnsImmutable } from 'common/utils';
  7. class DraggableContainer extends Component {
  8. getRows(rowsCount, rowGetter) {
  9. const rows = [];
  10. for (let j = 0; j < rowsCount; j++) {
  11. rows.push(rowGetter(j));
  12. }
  13. return rows;
  14. }
  15. renderGrid() {
  16. return React.cloneElement(
  17. React.Children.only(this.props.children), {
  18. draggableHeaderCell: DraggableHeaderCell
  19. }
  20. );
  21. }
  22. render() {
  23. const grid = this.renderGrid();
  24. const rowGetter = this.props.getDragPreviewRow || grid.props.rowGetter;
  25. const rowsCount = grid.props.rowsCount;
  26. const columns = grid.props.columns;
  27. const rows = this.getRows(rowsCount, rowGetter);
  28. return (
  29. <div>
  30. {grid}
  31. <RowDragLayer
  32. rowSelection={grid.props.rowSelection}
  33. rows={rows}
  34. columns={isColumnsImmutable(columns) ? columns.toArray() : columns}
  35. />
  36. </div>
  37. );
  38. }
  39. }
  40. DraggableContainer.propTypes = {
  41. children: PropTypes.element.isRequired,
  42. getDragPreviewRow: PropTypes.func
  43. };
  44. export default html5DragDropContext(DraggableContainer);