graphql.vue 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <template>
  2. <Splitpanes
  3. class="smart-splitter"
  4. :dbl-click-splitter="false"
  5. :horizontal="!(windowInnerWidth.x.value >= 768)"
  6. >
  7. <Pane class="hide-scrollbar !overflow-auto">
  8. <Splitpanes class="smart-splitter" :dbl-click-splitter="false" horizontal>
  9. <Pane class="hide-scrollbar !overflow-auto">
  10. <GraphqlRequest :conn="gqlConn" />
  11. <GraphqlRequestOptions :conn="gqlConn" />
  12. </Pane>
  13. <Pane class="hide-scrollbar !overflow-auto">
  14. <GraphqlResponse :conn="gqlConn" />
  15. </Pane>
  16. </Splitpanes>
  17. </Pane>
  18. <Pane
  19. v-if="RIGHT_SIDEBAR"
  20. max-size="35"
  21. size="25"
  22. min-size="20"
  23. class="hide-scrollbar !overflow-auto"
  24. >
  25. <GraphqlSidebar :conn="gqlConn" />
  26. </Pane>
  27. </Splitpanes>
  28. </template>
  29. <script lang="ts">
  30. import { defineComponent, watch } from "@nuxtjs/composition-api"
  31. import { Splitpanes, Pane } from "splitpanes"
  32. import "splitpanes/dist/splitpanes.css"
  33. import { useSetting } from "~/newstore/settings"
  34. import { GQLConnection } from "~/helpers/GQLConnection"
  35. import { useNuxt, useReadonlyStream } from "~/helpers/utils/composables"
  36. import useWindowSize from "~/helpers/utils/useWindowSize"
  37. export default defineComponent({
  38. components: { Splitpanes, Pane },
  39. beforeRouteLeave(_to, _from, next) {
  40. if (this.gqlConn.connected$.value) {
  41. this.gqlConn.disconnect()
  42. }
  43. next()
  44. },
  45. setup() {
  46. const nuxt = useNuxt()
  47. const gqlConn = new GQLConnection()
  48. const isLoading = useReadonlyStream(gqlConn.isLoading$, false)
  49. watch(isLoading, () => {
  50. if (isLoading) nuxt.value.$loading.start()
  51. else nuxt.value.$loading.finish()
  52. })
  53. return {
  54. windowInnerWidth: useWindowSize(),
  55. RIGHT_SIDEBAR: useSetting("RIGHT_SIDEBAR"),
  56. gqlConn,
  57. }
  58. },
  59. head() {
  60. return {
  61. title: `${this.$t("navigation.graphql")} • Hoppscotch`,
  62. }
  63. },
  64. })
  65. </script>