Skip to content

Commit a110b4a

Browse files
committed
feat: update toc button style
1 parent 124c13e commit a110b4a

2 files changed

Lines changed: 11 additions & 9 deletions

File tree

app/components/Button/Base.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const el = useTemplateRef('el')
2525
2626
defineExpose({
2727
focus: () => el.value?.focus(),
28+
buttonRef: el,
2829
})
2930
</script>
3031

app/components/ReadmeTocDropdown.vue

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<script setup lang="ts">
2+
import type { ButtonBase } from '#components'
23
import type { TocItem } from '#shared/types/readme'
34
import { onClickOutside, useEventListener } from '@vueuse/core'
45
import { scrollToAnchor } from '~/utils/scrollToAnchor'
@@ -47,7 +48,7 @@ const idToIndex = computed(() => {
4748
})
4849
4950
const listRef = useTemplateRef('listRef')
50-
const triggerRef = useTemplateRef('triggerRef')
51+
const triggerRef = ref<InstanceType<typeof ButtonBase> | null>(null)
5152
const isOpen = shallowRef(false)
5253
const highlightedIndex = shallowRef(-1)
5354
@@ -79,8 +80,8 @@ function toggle() {
7980
if (isOpen.value) {
8081
close()
8182
} else {
82-
if (triggerRef.value) {
83-
const rect = triggerRef.value.getBoundingClientRect()
83+
if (triggerRef.value?.buttonRef) {
84+
const rect = triggerRef.value?.buttonRef.getBoundingClientRect()
8485
dropdownPosition.value = {
8586
top: rect.bottom + 4,
8687
right: rect.right,
@@ -101,7 +102,7 @@ function close() {
101102
function select(id: string) {
102103
scrollToAnchor(id, { scrollFn: props.scrollToHeading })
103104
close()
104-
triggerRef.value?.focus()
105+
triggerRef.value?.buttonRef?.focus()
105106
}
106107
107108
function getIndex(id: string): number {
@@ -138,25 +139,25 @@ function handleKeydown(event: KeyboardEvent) {
138139
}
139140
case 'Escape':
140141
close()
141-
triggerRef.value?.focus()
142+
triggerRef.value?.buttonRef?.focus()
142143
break
143144
}
144145
}
145146
</script>
146147

147148
<template>
148-
<button
149+
<ButtonBase
149150
ref="triggerRef"
150151
type="button"
151-
class="flex items-center gap-1.5 px-2 py-2 font-mono text-xs text-fg-muted bg-bg-subtle border border-border-subtle border-solid rounded-md transition-colors duration-150 hover:(text-fg border-border-hover) active:scale-95 focus:border-border-hover hover:text-fg"
152152
:aria-expanded="isOpen"
153153
aria-haspopup="listbox"
154154
:aria-label="$t('package.readme.toc_title')"
155155
:aria-controls="listboxId"
156156
@click="toggle"
157157
@keydown="handleKeydown"
158+
classicon="i-carbon:list"
159+
class="px-2.5 flex items-center"
158160
>
159-
<span class="i-carbon:list w-3.5 h-3.5" aria-hidden="true" />
160161
<span
161162
class="i-carbon:chevron-down w-3 h-3"
162163
:class="[
@@ -165,7 +166,7 @@ function handleKeydown(event: KeyboardEvent) {
165166
]"
166167
aria-hidden="true"
167168
/>
168-
</button>
169+
</ButtonBase>
169170

170171
<Teleport to="body">
171172
<Transition

0 commit comments

Comments
 (0)