feat: placement option (center, top) in modals

This commit is contained in:
liyasthomas
2021-08-10 20:45:45 +05:30
parent b612feea41
commit ba5d1666d6
4 changed files with 60 additions and 3 deletions

View File

@@ -1,8 +1,9 @@
<template>
<SmartModal v-if="show" @close="$emit('hide-modal')">
<SmartModal v-if="show" placement="top" @close="$emit('hide-modal')">
<template #body>
<input
id="command"
v-model="search"
v-focus
type="text"
name="command"
@@ -30,7 +31,10 @@
hide-scrollbar
"
>
<div v-for="(map, mapIndex) in mappings" :key="`map-${mapIndex}`">
<div
v-for="(map, mapIndex) in filteredMappings"
:key="`map-${mapIndex}`"
>
<h5 class="font-normal my-2 text-secondaryLight py-2 px-4">
{{ map.section }}
</h5>
@@ -83,9 +87,21 @@ export default {
},
data() {
return {
search: "",
mappings: spotlight,
}
},
computed: {
filteredMappings() {
return this.mappings.filter((map) =>
map.shortcuts.find((shortcut) =>
shortcut.keywords.find((key) =>
key.includes(this.search.toLowerCase())
)
)
)
},
},
methods: {
hideModal() {
this.$emit("hide-modal")

View File

@@ -2,6 +2,7 @@
<SmartModal
v-if="show"
:title="$t('support.title')"
placement="top"
@close="$emit('hide-modal')"
>
<template #body>

View File

@@ -17,6 +17,7 @@
></div>
</transition>
<span
v-if="placement === 'center'"
class="hidden sm:h-screen sm:inline-block sm:align-middle"
aria-hidden="true"
>&#8203;</span
@@ -44,8 +45,8 @@
align-bottom
overflow-hidden
sm:max-w-md sm:align-middle
md:m-4
"
:class="{ 'mt-24': placement === 'top' }"
>
<div
v-if="title"
@@ -109,6 +110,10 @@ export default defineComponent({
type: Boolean,
default: true,
},
placement: {
type: String,
default: "center",
},
},
setup() {
const { disableKeybindings, enableKeybindings } = useKeybindingDisabler()

View File

@@ -82,12 +82,26 @@ export const spotlight = [
label: "shortcut.general.help_menu",
action: "modals.support.toggle",
icon: "support",
keywords: [
"help",
"support",
"documentation",
"troubleshooting",
"chat",
"community",
"feedback",
"report",
"bug",
"issue",
"ticket",
],
},
{
keys: [getPlatformSpecialKey(), "K"],
label: "shortcut.general.show_all",
action: "flyouts.keybinds.toggle",
icon: "keyboard",
keywords: ["keyboard", "shortcuts"],
},
],
},
@@ -99,30 +113,51 @@ export const spotlight = [
label: "shortcut.navigation.rest",
action: "navigation.rest.jump",
icon: "arrow_forward",
keywords: ["rest", "jump", "page", "navigation"],
},
{
keys: [getPlatformAlternateKey(), "Q"],
label: "shortcut.navigation.graphql",
action: "navigation.graphql.jump",
icon: "arrow_forward",
keywords: ["graphql", "jump", "page", "navigation"],
},
{
keys: [getPlatformAlternateKey(), "W"],
label: "shortcut.navigation.realtime",
action: "navigation.realtime.jump",
icon: "arrow_forward",
keywords: [
"realtime",
"jump",
"page",
"navigation",
"websocket",
"socket",
"mqtt",
"sse",
],
},
{
keys: [getPlatformAlternateKey(), "D"],
label: "shortcut.navigation.documentation",
action: "navigation.documentation.jump",
icon: "arrow_forward",
keywords: ["documentation", "jump", "page", "navigation"],
},
{
keys: [getPlatformAlternateKey(), "S"],
label: "shortcut.navigation.settings",
action: "navigation.settings.jump",
icon: "arrow_forward",
keywords: [
"settings",
"jump",
"page",
"navigation",
"account",
"theme",
],
},
],
},