import React, { MouseEvent, PureComponent } from 'react'; import classNames from 'classnames'; import { TimeSeries } from 'app/core/core'; interface LegendProps { data: TimeSeries[]; hiddenSeries: Set; onToggleSeries?: (series: TimeSeries, exclusive: boolean) => void; } interface LegendItemProps { hidden: boolean; onClickLabel?: (series: TimeSeries, event: MouseEvent) => void; series: TimeSeries; } class LegendItem extends PureComponent { onClickLabel = e => this.props.onClickLabel(this.props.series, e); render() { const { hidden, series } = this.props; const seriesClasses = classNames({ 'graph-legend-series-hidden': hidden, }); return (
{series.alias}
); } } export default class Legend extends PureComponent { static defaultProps = { onToggleSeries: () => {}, }; onClickLabel = (series: TimeSeries, event: MouseEvent) => { const { onToggleSeries } = this.props; const exclusive = event.ctrlKey || event.metaKey || event.shiftKey; onToggleSeries(series, !exclusive); }; render() { const { data, hiddenSeries } = this.props; const items = data || []; return (
{items.map((series, i) => (
); } }