api-client/components/graphql/Field.vue

94 lines
2.1 KiB
Vue
Raw Normal View History

2019-11-18 19:34:00 +00:00
<template>
2021-07-09 07:39:52 +00:00
<div>
<div
class="font-semibold field-title"
2021-07-09 07:39:52 +00:00
:class="{ 'field-highlighted': isHighlighted }"
>
{{ fieldName }}
<span v-if="fieldArgs.length > 0">
(
2021-07-13 23:49:08 +00:00
<span v-for="(field, index) in fieldArgs" :key="`field-${index}`">
2020-01-10 00:00:38 +00:00
{{ field.name }}:
2021-05-19 04:54:57 +00:00
<GraphqlTypeLink
:gql-type="field.type"
:jump-type-callback="jumpTypeCallback"
/>
2021-07-09 07:39:52 +00:00
<span v-if="index !== fieldArgs.length - 1">, </span>
2020-01-10 00:00:38 +00:00
</span>
) </span
>:
2021-05-19 04:54:57 +00:00
<GraphqlTypeLink
:gql-type="gqlField.type"
:jump-type-callback="jumpTypeCallback"
/>
</div>
2021-06-12 16:46:17 +00:00
<div
v-if="gqlField.description"
class="text-secondaryLight py-2 field-desc"
2021-06-12 16:46:17 +00:00
>
2019-11-18 19:34:00 +00:00
{{ gqlField.description }}
</div>
2020-09-22 17:06:37 +00:00
<div
2021-05-19 04:54:57 +00:00
v-if="gqlField.isDeprecated"
2021-05-15 12:43:31 +00:00
class="
2021-07-09 07:39:52 +00:00
rounded
2021-07-09 17:19:45 +00:00
font-semibold
2021-07-17 17:40:28 +00:00
bg-yellow-200
my-1
text-black
2021-07-17 17:40:28 +00:00
py-1
px-2
inline-block
2021-05-15 12:43:31 +00:00
field-deprecated
"
2020-09-22 17:06:37 +00:00
>
{{ $t("deprecated") }}
</div>
<div v-if="fieldArgs.length > 0">
<h5 class="my-2">Arguments:</h5>
2021-07-17 17:40:28 +00:00
<div class="border-divider border-l-2 pl-4">
2021-07-13 23:49:08 +00:00
<div v-for="(field, index) in fieldArgs" :key="`field-${index}`">
<span class="font-semibold">
2021-07-09 07:39:52 +00:00
{{ field.name }}:
<GraphqlTypeLink
:gql-type="field.type"
:jump-type-callback="jumpTypeCallback"
/>
</span>
2021-05-19 04:54:57 +00:00
<div
v-if="field.description"
class="text-secondaryLight py-2 field-desc"
2021-05-19 04:54:57 +00:00
>
{{ field.description }}
</div>
</div>
</div>
</div>
2019-11-18 19:34:00 +00:00
</div>
</template>
<script>
export default {
props: {
2021-05-19 04:54:57 +00:00
gqlField: { type: Object, default: () => {} },
jumpTypeCallback: { type: Function, default: () => {} },
2020-10-04 09:46:16 +00:00
isHighlighted: { type: Boolean, default: false },
2019-11-18 19:34:00 +00:00
},
computed: {
fieldName() {
2020-02-24 18:44:50 +00:00
return this.gqlField.name
},
fieldArgs() {
2020-02-24 18:44:50 +00:00
return this.gqlField.args || []
},
},
}
2019-11-18 19:34:00 +00:00
</script>
2021-05-19 04:54:57 +00:00
<style scoped lang="scss">
.field-highlighted {
2021-06-26 10:41:19 +00:00
@apply border-b-2 border-accent;
2021-05-19 04:54:57 +00:00
}
</style>