blob: 05edbf5ee687079c448ba0ee0a098c52ba254e43 [file] [log] [blame]
<script lang="ts">
import type { Chart, LegendItem } from "chart.js";
export let chart: Chart;
export let items: LegendItem[];
const handlerFactory = (item: LegendItem) => {
return (_: Event) => {
if (item.datasetIndex !== undefined) {
// https://www.chartjs.org/docs/latest/samples/legend/html.html
chart.setDatasetVisibility(
item.datasetIndex,
!chart.isDatasetVisible(item.datasetIndex)
);
chart.update();
}
};
};
</script>
<div class="legend">
<h6>Legend</h6>
{#each items as item (item)}
<div
class="item"
on:dblclick={handlerFactory(item)}
aria-label="legend"
role="listitem"
>
<span
class="box"
style="background: {item.fillStyle}; border-color: {item.strokeStyle}; border-width: {item.lineWidth}px;"
></span>
<span
class="label"
style="text-decoration: {item.hidden ? 'line-through' : ''};"
>
{item.text}
</span>
</div>
{/each}
</div>
<style>
.legend {
padding: 4px;
display: flex;
flex-direction: column;
row-gap: 3px;
}
.item {
display: flex;
flex-direction: row;
column-gap: 10px;
align-items: center;
}
.item .box {
display: inline-block;
width: 20px;
height: 20px;
}
</style>