123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <template>
- <button
- class="
- cursor-pointer
- flex flex-1
- py-2
- px-6
- transition
- items-center
- search-entry
- focus:outline-none
- "
- :class="{ active: active }"
- tabindex="-1"
- @click="$emit('action', shortcut.action)"
- @keydown.enter="$emit('action', shortcut.action)"
- >
- <SmartIcon
- class="mr-4 opacity-50 transition svg-icons"
- :class="{ 'opacity-100 text-secondaryDark': active }"
- :name="shortcut.icon"
- />
- <span
- class="flex flex-1 mr-4 font-medium transition"
- :class="{ 'text-secondaryDark': active }"
- >
- {{ $t(shortcut.label) }}
- </span>
- <span
- v-for="(key, keyIndex) in shortcut.keys"
- :key="`key-${String(keyIndex)}`"
- class="shortcut-key"
- >
- {{ key }}
- </span>
- </button>
- </template>
- <script setup lang="ts">
- defineProps<{
- shortcut: Object
- active: Boolean
- }>()
- </script>
- <style lang="scss" scoped>
- .search-entry {
- @apply relative;
- &::after {
- @apply absolute;
- @apply top-0;
- @apply left-0;
- @apply bottom-0;
- @apply bg-transparent;
- @apply z-2;
- @apply w-0.5;
- @apply transition;
- content: "";
- }
- &.active {
- @apply outline-none;
- @apply bg-primaryLight;
- &::after {
- @apply bg-accentLight;
- }
- }
- }
- .shortcut-key {
- @apply bg-dividerLight;
- @apply rounded;
- @apply ml-2;
- @apply py-1;
- @apply px-2;
- @apply inline-flex;
- }
- </style>
|