UNPKG

@dgit/react-data-grid-addons

Version:

A set of addons for react-data-grid

53 lines (44 loc) 1.31 kB
const React = require('react'); import PropTypes from 'prop-types'; const { editors: { EditorBase } } = require('react-data-grid'); import ReactDOM from 'react-dom'; class DropDownEditor extends EditorBase { getInputNode() { return ReactDOM.findDOMNode(this); } onClick() { this.getInputNode().focus(); } onDoubleClick() { this.getInputNode().focus(); } render(): ?ReactElement { return ( <select style={this.getStyle()} defaultValue={this.props.value} onBlur={this.props.onBlur} onChange={this.onChange} > {this.renderOptions()} </select>); } renderOptions(): Array<ReactElement> { let options = []; this.props.options.forEach(function(name) { if (typeof(name) === 'string') { options.push(<option key={name} value={name}>{name}</option>); } else { options.push(<option key={name.id} value={name.value} title={name.title} >{name.text || name.value}</option>); } }, this); return options; } } DropDownEditor.propTypes = { options: PropTypes.arrayOf(PropTypes.oneOfType([ PropTypes.string, PropTypes.shape({ id: PropTypes.string, title: PropTypes.string, value: PropTypes.string, text: PropTypes.string }) ])).isRequired }; module.exports = DropDownEditor;