mirror of https://github.com/vuejs/vitepress
Merge 8dacfb7e24
into f0a37b4b84
commit
4304e3cb04
@ -0,0 +1,59 @@
|
|||||||
|
# API References
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { VPApiPage } from 'vitepress/theme'
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<VPApiPage :apis="[
|
||||||
|
{
|
||||||
|
type: 'namespace',
|
||||||
|
name: 'name',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
type: 'class',
|
||||||
|
name: 'ClassName',
|
||||||
|
link: '/home'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'namespace',
|
||||||
|
name: 'NameSpace1'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'function',
|
||||||
|
name: 'func',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'namespace',
|
||||||
|
name: 'name',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'type',
|
||||||
|
name: 'name',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'enum',
|
||||||
|
name: 'name',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'variable',
|
||||||
|
name: 'name',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'class',
|
||||||
|
name: 'name',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'interface',
|
||||||
|
name: 'name',
|
||||||
|
items: []
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
/>
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,228 @@
|
|||||||
|
<template>
|
||||||
|
<div class="VPApiPage" style="user-select: none;">
|
||||||
|
<div v-if="currentItem.some(item => item.type === 'namespace')">
|
||||||
|
<h2>Namespaces</h2>
|
||||||
|
<div v-for="item in currentItem">
|
||||||
|
<div class="item" v-if="item.type === 'namespace'" @click="whenClick(item.items!)">
|
||||||
|
<VPLink v-if="item.link" :href="item.link">
|
||||||
|
<div class="namespace">N</div> {{ item.name }}
|
||||||
|
</VPLink>
|
||||||
|
<div v-else>
|
||||||
|
<div class="namespace">N</div> {{ item.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="currentItem.some(item => item.type === 'function')">
|
||||||
|
<h2>Functions</h2>
|
||||||
|
<div v-for="item in currentItem">
|
||||||
|
<div class="item" v-if="item.type === 'function'" @click="whenClick(item.items!)">
|
||||||
|
<VPLink v-if="item.link" :href="item.link">
|
||||||
|
<div class="function">F</div> {{ item.name }}
|
||||||
|
</VPLink>
|
||||||
|
<div v-else>
|
||||||
|
<div class="function">F</div> {{ item.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="currentItem.some(item => item.type === 'enum')">
|
||||||
|
<h2>Enumerations</h2>
|
||||||
|
<div v-for="item in currentItem">
|
||||||
|
<div class="item" v-if="item.type === 'enum'" @click="whenClick(item.items!)">
|
||||||
|
<VPLink v-if="item.link" :href="item.link">
|
||||||
|
<div class="enum">E</div> {{ item.name }}
|
||||||
|
</VPLink>
|
||||||
|
<div v-else>
|
||||||
|
<div class="enum">E</div> {{ item.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="currentItem.some(item => item.type === 'class')">
|
||||||
|
<h2>Classes</h2>
|
||||||
|
<div v-for="item in currentItem">
|
||||||
|
<div class="item" v-if="item.type === 'class'" @click="whenClick(item.items!)">
|
||||||
|
<VPLink v-if="item.link" :href="item.link">
|
||||||
|
<div class="class">C</div> {{ item.name }}
|
||||||
|
</VPLink>
|
||||||
|
<div v-else>
|
||||||
|
<div class="class">C</div> {{ item.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="currentItem.some(item => item.type === 'interface')">
|
||||||
|
<h2>Interfaces</h2>
|
||||||
|
<div v-for="item in currentItem">
|
||||||
|
<div class="item" v-if="item.type === 'interface'" @click="whenClick(item.items!)">
|
||||||
|
<VPLink v-if="item.link" :href="item.link">
|
||||||
|
<div class="interface">I</div> {{ item.name }}
|
||||||
|
</VPLink>
|
||||||
|
<div v-else>
|
||||||
|
<div class="interface">I</div> {{ item.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="currentItem.some(item => item.type === 'variable')">
|
||||||
|
<h2>Variables</h2>
|
||||||
|
<div v-for="item in currentItem">
|
||||||
|
<div class="item" v-if="item.type === 'variable'" @click="whenClick(item.items!)">
|
||||||
|
<VPLink v-if="item.link" :href="item.link">
|
||||||
|
<div class="variable">V</div> {{ item.name }}
|
||||||
|
</VPLink>
|
||||||
|
<div v-else>
|
||||||
|
<div class="variable">V</div> {{ item.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="currentItem.some(item => item.type === 'type')">
|
||||||
|
<h2>Types</h2>
|
||||||
|
<div v-for="item in currentItem">
|
||||||
|
<div class="item" v-if="item.type === 'type'" @click="whenClick(item.items!)">
|
||||||
|
<VPLink v-if="item.link" :href="item.link">
|
||||||
|
<div class="type">T</div> {{ item.name }}
|
||||||
|
</VPLink>
|
||||||
|
<div v-else>
|
||||||
|
<div class="type">T</div> {{ item.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { defineProps, ref } from 'vue'
|
||||||
|
import VPLink from './VPLink.vue';
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
apis: ApiItem[]
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ApiItem {
|
||||||
|
type: 'namespace' | 'function' | 'enum' | 'class' | 'interface' | 'variable' | 'type',
|
||||||
|
name: string,
|
||||||
|
items?: ApiItem[],
|
||||||
|
link?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const props = defineProps<Props>()
|
||||||
|
|
||||||
|
const currentItem = ref(props.apis)
|
||||||
|
|
||||||
|
function whenClick(item: ApiItem[]) {
|
||||||
|
if (typeof item !== 'undefined') {
|
||||||
|
currentItem.value = item
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.VPApiPage .item:hover {
|
||||||
|
text-decoration: underline
|
||||||
|
}
|
||||||
|
|
||||||
|
.VPApiPage .item {
|
||||||
|
float: left;
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.VPApiPage .namespace {
|
||||||
|
border: solid purple 2px;
|
||||||
|
border-radius: 5px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
color: purple;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.VPApiPage .function {
|
||||||
|
border: solid yellow 2px;
|
||||||
|
border-radius: 5px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
color: yellow;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.VPApiPage .enum {
|
||||||
|
border: solid brown 2px;
|
||||||
|
border-radius: 5px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
color: brown;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.VPApiPage .class {
|
||||||
|
border: solid green 2px;
|
||||||
|
border-radius: 5px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
color: green;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.VPApiPage .interface {
|
||||||
|
border: solid skyblue 2px;
|
||||||
|
border-radius: 5px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
color: skyblue;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.VPApiPage .variable {
|
||||||
|
border: solid red 2px;
|
||||||
|
border-radius: 5px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
color: red;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.VPApiPage .type {
|
||||||
|
border: solid blue 2px;
|
||||||
|
border-radius: 5px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
color: blue;
|
||||||
|
float: left;
|
||||||
|
margin-right: 5px;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in new issue