import React from 'react'; import { ReactGrid, WaitIcon } from '../../../components'; import CrudCell from './crud-cell'; import controlWrapper from './crud-control-wrapper'; class CrudGrid extends React.Component { constructor(props) { super(props); this.cellRender = this.cellRender.bind(this); } eventHandler(evt) { if (evt === 'list' || evt === 'fetching-list') { this.forceUpdate(); } } cellRender(item, cell) { const controller = this.props.controller; const id = controller.resolveId(item); return React.createElement(CrudCell, { cell: cell, options: this.props.options, modal: this.props.modal, id: id, controller: controller, onRender: this.props.onRender, onExpandRender: this.props.onExpandRender, editorSchema: this.props.editorSchema }); } render() { const controller = this.props.controller; if (controller.isFetching()) { return React.createElement(WaitIcon, { type: 'card' }); } if (!controller.getList()) { return null; } return React.createElement(ReactGrid, { values: controller.getList(), onCellRender: this.cellRender, cellSize: this.props.cellSize }); } } CrudGrid.propTypes = { controller: React.PropTypes.object, onRender: React.PropTypes.func, onExpandRender: React.PropTypes.func, editorSchema: React.PropTypes.object, cellSize: React.PropTypes.object, options: React.PropTypes.any, modal: React.PropTypes.bool }; export default controlWrapper(CrudGrid);