Skip to content

Commit 1fbab7e

Browse files
committed
WIP(command-bar): trrigger feedback
1 parent 727cc82 commit 1fbab7e

1 file changed

Lines changed: 31 additions & 2 deletions

File tree

app/components/CommandBar.vue

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@
2525
v-for="item in filteredCmdList"
2626
:key="item.id"
2727
class="flex-col items-center justify-between px-4 py-2 not-first:mt-2 hover:bg-bg-elevated select-none cursor-pointer rounded-md transition"
28-
:class="{ 'bg-bg-subtle': item.id === selected }"
28+
:class="{
29+
'bg-bg-subtle': item.id === selected,
30+
'trigger-anim': item.id === triggeringId,
31+
}"
2932
@click="triggerCommand(item.id)"
3033
>
3134
<div class="text-fg">{{ item.name }}</div>
@@ -68,6 +71,7 @@ const cmdList = [
6871
const selected = ref(cmdList[0]?.id || '')
6972
const inputVal = ref('')
7073
const show = ref(false)
74+
const triggeringId = ref('')
7175
const inputRef = useTemplateRef('inputRef')
7276
7377
const { focused: inputFocused } = useFocus(inputRef)
@@ -122,7 +126,11 @@ function toggle() {
122126
function triggerCommand(id: string) {
123127
const selectedItem = filteredCmdList.value.find(item => item.id === id)
124128
selectedItem?.handler?.()
125-
close()
129+
triggeringId.value = id
130+
setTimeout(() => {
131+
triggeringId.value = ''
132+
close()
133+
}, 100)
126134
}
127135
128136
const handleKeydown = useThrottleFn((e: KeyboardEvent) => {
@@ -169,4 +177,25 @@ defineExpose({
169177
opacity: 0;
170178
transform: translateY(-10px);
171179
}
180+
181+
@keyframes trigger-pulse {
182+
0% {
183+
transform: scale(1);
184+
background-color: var(--bg-subtle);
185+
}
186+
187+
50% {
188+
transform: scale(0.96);
189+
background-color: var(--bg-elevated);
190+
}
191+
192+
100% {
193+
transform: scale(1);
194+
background-color: var(--bg-subtle);
195+
}
196+
}
197+
198+
.trigger-anim {
199+
animation: trigger-pulse 0.1s ease-in-out;
200+
}
172201
</style>

0 commit comments

Comments
 (0)