soiz1's picture
Upload 2891 files
6bcb42f verified
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import {FormattedMessage} from 'react-intl';
import styles from './monitor.css';
import ListMonitorScroller from './list-monitor-scroller.jsx';
const ListMonitor = ({draggable, label, width, height, value, onResizeMouseDown, onAdd, ...rowProps}) => (
<div
className={styles.listMonitor}
style={{
width: `${width}px`,
height: `${height}px`
}}
>
<div className={styles.listHeader}>
{label}
</div>
<div className={styles.listBody}>
<ListMonitorScroller
draggable={draggable}
height={height}
values={value}
width={width}
{...rowProps}
/>
</div>
<div className={styles.listFooter}>
<div
className={classNames(draggable ? styles.addButton : null, 'no-drag')}
onClick={draggable ? onAdd : null}
>
{'+' /* TODO waiting on asset */}
</div>
<div className={styles.footerLength}>
<FormattedMessage
defaultMessage="length {length}"
description="Length label on list monitors. DO NOT translate {length} (with brackets)."
id="gui.monitor.listMonitor.listLength"
values={{
length: value.length
}}
/>
</div>
<div
className={classNames(draggable ? styles.resizeHandle : null, 'no-drag')}
onMouseDown={draggable ? onResizeMouseDown : null}
>
{'=' /* TODO waiting on asset */}
</div>
</div>
</div>
);
ListMonitor.propTypes = {
activeIndex: PropTypes.number,
categoryColor: PropTypes.string.isRequired,
draggable: PropTypes.bool.isRequired,
height: PropTypes.number,
label: PropTypes.string.isRequired,
onActivate: PropTypes.func,
onAdd: PropTypes.func,
onResizeMouseDown: PropTypes.func,
value: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
PropTypes.arrayOf(PropTypes.oneOfType([
PropTypes.string,
PropTypes.number
]))
]),
width: PropTypes.number
};
ListMonitor.defaultProps = {
width: 110,
height: 200
};
export default ListMonitor;