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;