|
5 | 5 | VueUiScatter, |
6 | 6 | type VueUiScatterConfig, |
7 | 7 | type VueUiScatterDatasetItem, |
| 8 | + type VueUiScatterSeries, |
8 | 9 | } from 'vue-data-ui/vue-ui-scatter' |
9 | 10 | import { buildCompareScatterChartDataset } from '~/utils/compare-scatter-chart' |
10 | 11 | import { loadFile, copyAltTextForCompareScatterChart } from '~/utils/charts' |
@@ -285,6 +286,11 @@ function toggleAxisHighlight(state: AxisHighlight) { |
285 | 286 | highlightedAxis.value = state |
286 | 287 | } |
287 | 288 |
|
| 289 | +function toggleLegendItem(legendItem: VueUiScatterSeries) { |
| 290 | + legendItem.segregate() |
| 291 | + legendItem.onEnter() |
| 292 | +} |
| 293 | +
|
288 | 294 | const readyTeleport = shallowRef(false) |
289 | 295 |
|
290 | 296 | onMounted(async () => { |
@@ -389,34 +395,26 @@ onMounted(async () => { |
389 | 395 | : 'text-sm leading-6' |
390 | 396 | " |
391 | 397 | > |
392 | | - <li v-for="datapoint in legend" :key="datapoint.name"> |
| 398 | + <li v-for="legendItem in legend" :key="legendItem.name"> |
393 | 399 | <button |
394 | | - :aria-pressed="datapoint.isSegregated" |
395 | | - :aria-label="datapoint.name" |
| 400 | + :aria-pressed="legendItem.isSegregated" |
| 401 | + :aria-label="legendItem.name" |
396 | 402 | type="button" |
397 | 403 | class="flex gap-1.5 place-items-center" |
398 | | - :class="{ |
399 | | - 'hover:underline': !datapoint.isSegregated, |
400 | | - 'line-through': datapoint.isSegregated, |
401 | | - }" |
402 | | - @click=" |
403 | | - () => { |
404 | | - datapoint.segregate() |
405 | | - datapoint.onEnter() |
406 | | - } |
407 | | - " |
408 | | - @mouseenter="datapoint.onEnter()" |
409 | | - @mouseleave="datapoint.onLeave()" |
410 | | - @focus="datapoint.onEnter()" |
411 | | - @blur="datapoint.onLeave()" |
| 404 | + :class="legendItem.isSegregated ? 'line-through' : 'hover:underline'" |
| 405 | + @click="() => toggleLegendItem(legendItem)" |
| 406 | + @mouseenter="legendItem.onEnter()" |
| 407 | + @mouseleave="legendItem.onLeave()" |
| 408 | + @focus="legendItem.onEnter()" |
| 409 | + @blur="legendItem.onLeave()" |
412 | 410 | > |
413 | 411 | <div class="h-3 w-3" aria-hidden="true"> |
414 | 412 | <svg viewBox="0 0 2 2" class="w-full"> |
415 | | - <circle cx="1" cy="1" r="1" :fill="datapoint.color" /> |
| 413 | + <circle cx="1" cy="1" r="1" :fill="legendItem.color" /> |
416 | 414 | </svg> |
417 | 415 | </div> |
418 | 416 | <span class="text-fg"> |
419 | | - {{ datapoint.name }} |
| 417 | + {{ legendItem.name }} |
420 | 418 | </span> |
421 | 419 | </button> |
422 | 420 | </li> |
|
0 commit comments