Skip to content

Commit a51658a

Browse files
committed
docs: 新增示例文档
1 parent 0b5f1dd commit a51658a

File tree

6 files changed

+206
-16
lines changed

6 files changed

+206
-16
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
<template>
2+
<div class="json-tree-demo">
3+
<el-card>
4+
<el-form label-width="70px" label-position="left">
5+
<el-form-item label="连接线">
6+
<el-switch v-model="showLine" />
7+
</el-form-item>
8+
<el-form-item label="图标风格">
9+
<el-radio-group v-model="toggle" size="small">
10+
<el-radio-button label="default">默认风格</el-radio-button>
11+
<el-radio-button label="caret">自定义风格 1</el-radio-button>
12+
<el-radio-button label="arrow">自定义风格 2</el-radio-button>
13+
</el-radio-group>
14+
</el-form-item>
15+
<el-form-item label="层级缩进">
16+
<el-radio-group v-model="indent" size="small">
17+
<el-radio-button
18+
v-for="(item, i) in indents"
19+
:key="i"
20+
:label="item">
21+
{{ item }}
22+
</el-radio-button>
23+
</el-radio-group>
24+
</el-form-item>
25+
<el-form-item label="展开层级">
26+
<el-input-number v-model="deep" size="small" />
27+
</el-form-item>
28+
</el-form>
29+
30+
</el-card>
31+
32+
<div style="margin: 20px 0;">
33+
<el-button size="small" @click="onExpandAll">全部展开</el-button>
34+
<el-button size="small" @click="onCollapseAll">全部收起</el-button>
35+
</div>
36+
37+
<JsonTree ref="jsonTree"
38+
:json-data="jsonData"
39+
:show-line="showLine"
40+
:indent="indent">
41+
<template v-if="toggle !== 'default'" #toggle="{ collapse }">
42+
<i :class="calcToggleClass(collapse)"></i>
43+
</template>
44+
<template #count="{ count, type }">
45+
(值类型:{{ type }},共:{{ count }} 项)
46+
</template>
47+
</JsonTree>
48+
</div>
49+
</template>
50+
51+
<script>
52+
export default {
53+
name: 'JsonTreeDemo',
54+
data () {
55+
return {
56+
showLine: true,
57+
indent: '20px',
58+
deep: 2,
59+
indents: ['5px', '10px', '20px', '30px', '40px', '50px'],
60+
toggle: 'default',
61+
jsonData: {
62+
name: 'Tom',
63+
age: 7,
64+
nums: [1, 1, 2, 3, 5, 8, 13, 21, 34],
65+
techs: [
66+
{ text: 'coding', label: 1 },
67+
{ text: 'fishing', label: 2 },
68+
{ text: 'gaming', label: 3 }
69+
]
70+
}
71+
}
72+
},
73+
methods: {
74+
onExpandAll () {
75+
this.$refs.jsonTree.expandAll()
76+
},
77+
onCollapseAll () {
78+
this.$refs.jsonTree.collapseAll()
79+
},
80+
calcToggleClass (collapse) {
81+
let className = ''
82+
const { toggle } = this
83+
if (toggle === 'caret') {
84+
if (collapse) {
85+
className = 'el-icon-caret-right'
86+
} else {
87+
className = 'el-icon-caret-bottom'
88+
}
89+
} else if (toggle === 'arrow') {
90+
if (collapse) {
91+
className = 'el-icon-arrow-right'
92+
} else {
93+
className = 'el-icon-arrow-down'
94+
}
95+
}
96+
return className
97+
}
98+
}
99+
}
100+
</script>

docs-src/.vuepress/config.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,12 @@ module.exports = {
88
markdown: {
99
lineNumbers: true
1010
},
11-
// themeConfig: {},
11+
themeConfig: {
12+
sidebar: true
13+
},
1214
chainWebpack: config => {
1315
config.resolve.alias
16+
.set('@', resolve('src'))
1417
.set('@lib', resolve('dist'))
1518
}
1619
}

docs-src/.vuepress/enhanceApp.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
import JsonView from '@lib/JsonTree.common.js'
2-
import "@lib/JsonTree.css"
1+
import ElementUI from 'element-ui'
2+
// import JsonTree from '@lib/JsonTree.common.js'
3+
import JsonTree from '@/json-tree/JsonTree.vue'
4+
5+
import 'element-ui/lib/theme-chalk/index.css'
6+
// import "@lib/JsonTree.css"
37

48
// 使用异步函数也是可以的
59
export default ({
@@ -9,5 +13,6 @@ export default ({
913
siteData, // 站点元数据
1014
isServer // 当前应用配置是处于 服务端渲染 或 客户端
1115
}) => {
12-
Vue.component('JsonView', JsonView)
16+
Vue.use(ElementUI)
17+
Vue.component('JsonTree', JsonTree)
1318
}

docs-src/README.md

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,33 @@
11
# JsonTree
22

3-
<JsonView
4-
:json-data="{
5-
name: 'Tom',
6-
age: 7,
7-
nums: [1, 1, 2, 3, 5, 8, 13, 21, 34],
8-
techs: [
9-
{ text: 'coding', label: 1 },
10-
{ text: 'fishing', label: 2 },
11-
{ text: 'gaming', label: 3 }
12-
]
13-
}"
14-
/>
3+
## Playground
4+
<JsonTreeDemo />
5+
6+
7+
## Getting started
8+
```bash
9+
npm i json-tree
10+
```
11+
12+
```js
13+
// main.js
14+
import Vue from 'vue'
15+
import JsonTree from 'json-tree'
16+
17+
Vue.component('JsonTree', JsonTree)
18+
```
19+
20+
```vue
21+
<JsonTree :json-data="{ name: 'Tom', age: 7 }" />
22+
```
23+
24+
## Props
25+
26+
27+
## Slots
28+
29+
30+
## Events
31+
32+
33+
## Methods

package-lock.json

Lines changed: 61 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
"@vue/cli-service": "^4.5.9",
3232
"@vue/eslint-config-standard": "^5.1.2",
3333
"@vuepress/plugin-back-to-top": "^1.7.1",
34+
"async-validator": "^1.11.5",
3435
"babel-eslint": "^10.1.0",
36+
"element-ui": "^2.14.1",
3537
"eslint": "^7.13.0",
3638
"eslint-plugin-import": "^2.22.1",
3739
"eslint-plugin-node": "^11.1.0",

0 commit comments

Comments
 (0)