import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import bindAll from 'lodash.bindall'; import {FormattedMessage} from 'react-intl'; import styles from './monitor.css'; import {List} from 'react-virtualized'; import DOMElementRenderer from '../../containers/dom-element-renderer.jsx'; class ListMonitorScroller extends React.Component { constructor (props) { super(props); bindAll(this, [ 'rowRenderer', 'noRowsRenderer', 'handleEventFactory' ]); } handleEventFactory (index) { return () => this.props.onActivate(index); } noRowsRenderer () { return (
); } rowRenderer ({index, key, style}) { const item = this.props.values[index]; const renderedValue = item.toListItem ? item.toListItem() : item.toMonitorContent ? item.toMonitorContent() : item.toReporterContent ? item.toReporterContent() : item; const value = item.isHTML ? () : String(item); return (
{index + 1 /* one indexed */}
{this.props.draggable && this.props.activeIndex === index ? (
{'✖︎'}
) : (
{value}
)}
); } render () { const {height, values, width, activeIndex, activeValue} = this.props; // Keep the active index in view if defined, else must be undefined for List component const scrollToIndex = activeIndex === null ? undefined : activeIndex; /* eslint-disable-line no-undefined */ return ( ); } } ListMonitorScroller.propTypes = { activeIndex: PropTypes.number, activeValue: PropTypes.string, categoryColor: PropTypes.string, draggable: PropTypes.bool, height: PropTypes.number, onActivate: PropTypes.func, onDeactivate: PropTypes.func, onFocus: PropTypes.func, onInput: PropTypes.func, onKeyPress: PropTypes.func, onRemove: PropTypes.func, values: PropTypes.arrayOf(PropTypes.oneOfType([ PropTypes.string, PropTypes.number ])), width: PropTypes.number }; export default ListMonitorScroller;