Files
hoppscotch/pages/graphql.vue
2021-08-11 08:23:49 +05:30

79 lines
1.9 KiB
Vue

<template>
<div>
<Splitpanes :dbl-click-splitter="false" vertical>
<Pane class="hide-scrollbar !overflow-auto">
<Splitpanes :dbl-click-splitter="false" horizontal>
<Pane class="hide-scrollbar !overflow-auto">
<GraphqlURLBar :conn="gqlConn" />
<GraphqlContentArea :conn="gqlConn" />
</Pane>
<Pane class="hide-scrollbar !overflow-auto">
<GraphqlResponseSection :conn="gqlConn" />
</Pane>
</Splitpanes>
</Pane>
<Pane
v-if="RIGHT_SIDEBAR"
max-size="35"
size="25"
min-size="20"
class="hide-scrollbar !overflow-auto"
>
<GraphqlSidebar :conn="gqlConn" />
</Pane>
</Splitpanes>
</div>
</template>
<script lang="ts">
import { defineComponent, watch } from "@nuxtjs/composition-api"
import { Splitpanes, Pane } from "splitpanes"
import "splitpanes/dist/splitpanes.css"
import { useSetting } from "~/newstore/settings"
import { GQLConnection } from "~/helpers/GQLConnection"
import { useNuxt, useReadonlyStream } from "~/helpers/utils/composables"
export default defineComponent({
components: { Splitpanes, Pane },
beforeRouteLeave(_to, _from, next) {
if (this.gqlConn.connected$.value) {
this.gqlConn.disconnect()
}
next()
},
setup() {
const nuxt = useNuxt()
const gqlConn = new GQLConnection()
const isLoading = useReadonlyStream(gqlConn.isLoading$, false)
watch(isLoading, () => {
if (isLoading) nuxt.value.$loading.start()
else nuxt.value.$loading.finish()
})
return {
RIGHT_SIDEBAR: useSetting("RIGHT_SIDEBAR"),
gqlConn,
}
},
head() {
return {
title: `GraphQL • Hoppscotch`,
}
},
})
</script>
<style lang="scss" scoped>
.shortcut-key {
@apply bg-dividerLight;
@apply rounded;
@apply ml-2;
@apply py-1;
@apply px-2;
@apply inline-flex;
}
</style>