import React from 'react'; import classNames from 'classnames'; import Dot from 'components/common/Dot'; import useLocale from 'hooks/useLocale'; import styles from './Legend.module.css'; import useForceUpdate from '../../hooks/useForceUpdate'; export default function Legend({ chart }) { const [locale] = useLocale(); const forceUpdate = useForceUpdate(); function handleClick(index) { const meta = chart.getDatasetMeta(index); meta.hidden = meta.hidden === null ? !chart.data.datasets[index].hidden : null; chart.update(); forceUpdate(); } if (!chart?.legend?.legendItems.find(({ text }) => text)) { return null; } return ( <div className={styles.legend}> {chart.legend.legendItems.map(({ text, fillStyle, datasetIndex, hidden }) => ( <div key={text} className={classNames(styles.label, { [styles.hidden]: hidden })} onClick={() => handleClick(datasetIndex)} > <Dot color={fillStyle} /> <span className={locale}>{text}</span> </div> ))} </div> ); }