Skip to content

Commit e21dcb5

Browse files
committed
feat: highlight scatter datapoints from its legend
1 parent c4976f7 commit e21dcb5

1 file changed

Lines changed: 36 additions & 7 deletions

File tree

app/components/Compare/FacetScatterChart.vue

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -395,19 +395,27 @@ onMounted(async () => {
395395
:aria-label="datapoint.name"
396396
type="button"
397397
class="flex gap-1.5 place-items-center"
398-
@click="datapoint.segregate()"
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()"
399412
>
400413
<div class="h-3 w-3" aria-hidden="true">
401414
<svg viewBox="0 0 2 2" class="w-full">
402415
<circle cx="1" cy="1" r="1" :fill="datapoint.color" />
403416
</svg>
404417
</div>
405-
<span
406-
class="text-fg"
407-
:style="{
408-
textDecoration: datapoint.isSegregated ? 'line-through' : undefined,
409-
}"
410-
>
418+
<span class="text-fg">
411419
{{ datapoint.name }}
412420
</span>
413421
</button>
@@ -559,14 +567,35 @@ onMounted(async () => {
559567
</template>
560568

561569
<style scoped>
570+
:deep(.vue-data-ui-component) {
571+
--super-ease-out: cubic-bezier(0.15, 0.75, 0.35, 1);
572+
}
573+
562574
:deep(.vue-data-ui-component svg:focus-visible) {
563575
outline: 1px solid var(--accent) !important;
564576
border-radius: 0.1rem;
565577
outline-offset: 0;
566578
}
579+
567580
:deep(.vue-ui-user-options-button:focus-visible),
568581
:deep(.vue-ui-user-options :first-child:focus-visible) {
569582
outline: 0.1rem solid var(--accent) !important;
570583
border-radius: 0.25rem;
571584
}
585+
586+
:deep(.vue-ui-scatter-scale-group),
587+
:deep(.vue-ui-scatter-datapoint text),
588+
:deep(.vue-ui-scatter-datapoint circle),
589+
:deep(.vue-ui-scatter-datapoint-label) {
590+
transition: all 0.5s var(--super-ease-out) !important;
591+
}
592+
593+
@media (prefers-reduced-motion: reduce) {
594+
:deep(.vue-ui-scatter-scale-group),
595+
:deep(.vue-ui-scatter-datapoint text),
596+
:deep(.vue-ui-scatter-datapoint circle),
597+
:deep(.vue-ui-scatter-datapoint-label) {
598+
transition: none !important;
599+
}
600+
}
572601
</style>

0 commit comments

Comments
 (0)