43 lines
783 B
Vue
43 lines
783 B
Vue
<template>
|
|
<span
|
|
:class="{ 'cursor-pointer': !isScalar }"
|
|
class="font-mono font-normal text-acColor"
|
|
@click="jumpToType"
|
|
>
|
|
{{ typeString }}
|
|
</span>
|
|
</template>
|
|
|
|
<script>
|
|
import { GraphQLScalarType } from "graphql"
|
|
|
|
export default {
|
|
props: {
|
|
gqlType: null,
|
|
// (typeName: string) => void
|
|
jumpTypeCallback: Function,
|
|
},
|
|
|
|
computed: {
|
|
typeString() {
|
|
return this.gqlType.toString()
|
|
},
|
|
isScalar() {
|
|
return this.resolveRootType(this.gqlType) instanceof GraphQLScalarType
|
|
},
|
|
},
|
|
|
|
methods: {
|
|
jumpToType() {
|
|
if (this.isScalar) return
|
|
this.jumpTypeCallback(this.gqlType)
|
|
},
|
|
resolveRootType(type) {
|
|
let t = type
|
|
while (t.ofType != null) t = t.ofType
|
|
return t
|
|
},
|
|
},
|
|
}
|
|
</script>
|