Skip to content
This repository was archived by the owner on Jan 9, 2022. It is now read-only.

Commit 257232c

Browse files
committed
feat(docs): add template source to examples
1 parent af6cf6d commit 257232c

File tree

13 files changed

+271
-49
lines changed

13 files changed

+271
-49
lines changed

docs/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
"vitepress": "^0.16.1"
1616
},
1717
"dependencies": {
18+
"@vueuse/core": "^6.0.0",
1819
"gitart-vue-dialog": "^0.2.0-alpha.3",
20+
"prismjs": "^1.24.1",
1921
"sass": "^1.38.0"
2022
}
2123
}

docs/src/.vitepress/components/Components/Example.vue

Lines changed: 0 additions & 46 deletions
This file was deleted.

docs/src/.vitepress/theme/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { GDialog } from 'gitart-vue-dialog/dist/server'
33
import 'gitart-vue-dialog/dist/style.css'
44
import './custom.css'
55

6-
import BaseBtn from '@/.vitepress/components/Components/BaseBtn.vue'
7-
import BtnWrapper from '@/.vitepress/components/Components/BtnWrapper.vue'
8-
import Example from '@/.vitepress/components/Components/Example.vue'
6+
import BaseBtn from '@/components/Components/BaseBtn.vue'
7+
import BtnWrapper from '@/components/Components/BtnWrapper.vue'
8+
import Example from '@/components/Components/Example.vue'
99

1010
export default {
1111
...DefaultTheme,
File renamed without changes.
File renamed without changes.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<template>
2+
<div class="code-example">
3+
<div v-if="pen && pen.template">
4+
<Markup
5+
:code="pen.template"
6+
language="html"
7+
/>
8+
</div>
9+
10+
<div class="code-example__component">
11+
<VueFile :file="file" />
12+
</div>
13+
</div>
14+
</template>
15+
16+
<script lang="ts">
17+
import { defineComponent } from 'vue'
18+
import { usePen } from '../../composable/pen'
19+
import VueFile from './VueFile.vue'
20+
import Markup from './Markup.vue'
21+
22+
export default defineComponent({
23+
name: 'Example',
24+
components: {
25+
VueFile,
26+
Markup,
27+
},
28+
29+
props: {
30+
file: {
31+
type: String,
32+
required: true,
33+
},
34+
},
35+
36+
setup(props) {
37+
const pen = usePen(props.file)
38+
39+
return {
40+
pen,
41+
}
42+
},
43+
})
44+
</script>
45+
46+
<style lang="scss">
47+
.code-example {
48+
border: 1px solid rgba(0, 0, 0, 0.12);
49+
border-radius: 6px;
50+
overflow: hidden;
51+
52+
&__component {
53+
padding: 20px;
54+
border-top: 1px solid rgba(0, 0, 0, 0.12);
55+
}
56+
}
57+
</style>
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<template>
2+
<div class="app-code">
3+
<Prism
4+
ref="code"
5+
:code="code"
6+
:language="language"
7+
/>
8+
</div>
9+
</template>
10+
11+
<script lang="ts">
12+
import Prism from './Prism.vue'
13+
14+
export default {
15+
name: 'Markup',
16+
17+
components: {
18+
Prism,
19+
},
20+
21+
props: {
22+
code: {
23+
type: String,
24+
default: '',
25+
},
26+
language: {
27+
type: String,
28+
required: true,
29+
},
30+
},
31+
}
32+
</script>
33+
34+
<style lang="scss">
35+
.app-code {
36+
background-color: var(--code-bg-color);
37+
padding: 12px 50px 12px 16px;
38+
}
39+
</style>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<script lang="ts">
2+
import { h, defineComponent, toRefs } from 'vue'
3+
import Prism from 'prismjs'
4+
5+
export default defineComponent({
6+
props: {
7+
code: {
8+
type: String,
9+
required: true,
10+
},
11+
12+
language: {
13+
type: String,
14+
default: 'markup',
15+
},
16+
},
17+
setup(props, { attrs }) {
18+
const { language, code } = toRefs(props)
19+
20+
const prismLanguage = Prism.languages[language.value]
21+
const className = `language-${language.value}`
22+
23+
if (!prismLanguage) {
24+
console.warn(`Prism component for language "${language.value}" was not found, did you forget to register it?`)
25+
}
26+
return () => h(
27+
'pre',
28+
{
29+
...attrs,
30+
class: [attrs.class, className],
31+
},
32+
[
33+
h('code', {
34+
...attrs,
35+
class: [attrs.class, className],
36+
innerHTML: Prism.highlight(code.value, prismLanguage),
37+
}),
38+
],
39+
)
40+
},
41+
})
42+
</script>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<template>
2+
<Component
3+
:is="component"
4+
v-if="component"
5+
/>
6+
</template>
7+
8+
<script lang="ts">
9+
import { defineComponent, Component } from 'vue'
10+
import { useAsyncState } from '@vueuse/core'
11+
12+
export default defineComponent({
13+
name: 'VueFile',
14+
15+
props: {
16+
file: {
17+
type: String,
18+
required: true,
19+
},
20+
},
21+
22+
setup(props) {
23+
const { state: component } = useAsyncState(async () => {
24+
const res = await import(`../Examples/${props.file}.vue`)
25+
return res.default as Component
26+
}, null)
27+
28+
return {
29+
component,
30+
}
31+
},
32+
})
33+
</script>

docs/src/.vitepress/components/Examples/Introduction/GettingStartedExample.vue renamed to docs/src/components/Examples/Introduction/GettingStartedExample.vue

File renamed without changes.

0 commit comments

Comments
 (0)