Skip to content

Commit c39f3d5

Browse files
committed
fix: improve prop optionality and a11y for theme button
1 parent 3857598 commit c39f3d5

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

.vscode/extensions.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"recommendations": ["johnsoncodehk.volar", "dbaeumer.vscode-eslint"]
2+
"recommendations": ["Vue.volar", "dbaeumer.vscode-eslint"]
33
}

src/components/Icon/UnoCSSIconButton.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script setup lang="ts">
22
withDefaults(
3-
defineProps<{ icon: string; size?: string }>(),
3+
defineProps<{ icon?: string; size?: string }>(),
44
{
55
icon: "i-mdi-alert ",
66
size: "5",

src/layouts/Navbar/components/ThemeChange/index.vue

+12-3
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,13 @@ function changeTheme(event: MouseEvent, theme: CustomTheme) {
7878
mode.value = theme;
7979
}
8080
}
81+
82+
function handleKeyDown(event: KeyboardEvent, theme: CustomTheme) {
83+
if (event.key === "Enter" || event.key === " ") {
84+
event.preventDefault();
85+
changeTheme(event as unknown as MouseEvent, theme);
86+
}
87+
}
8188
</script>
8289

8390
<template>
@@ -91,12 +98,14 @@ function changeTheme(event: MouseEvent, theme: CustomTheme) {
9198
class="dropdown-content scrollbar top-px mt-16 h-[70vh] max-h-96 w-52 overflow-y-auto bg-base-200 text-base-content shadow-2xl rounded-t-box rounded-b-box"
9299
>
93100
<div class="grid grid-cols-1 gap-3 p-3" tabindex="0">
94-
<div
101+
<button
95102
v-for="theme in themeList"
96103
:key="theme.id"
97-
class="overflow-hidden rounded-lg outline-2 outline-base-content outline-offset-2 hover:outline"
104+
class="overflow-hidden rounded-lg text-left outline-2 outline-base-content outline-offset-2 hover:outline"
98105
:class="mode === theme.id ? 'outline' : ''"
106+
type="button"
99107
@click="changeTheme($event, theme.id)"
108+
@keydown="handleKeyDown($event, theme.id)"
100109
>
101110
<div
102111
:data-theme="theme.id"
@@ -116,7 +125,7 @@ function changeTheme(event: MouseEvent, theme: CustomTheme) {
116125
</div>
117126
</div>
118127
</div>
119-
</div>
128+
</button>
120129
</div>
121130
</div>
122131
</div>

0 commit comments

Comments
 (0)