@opentiny/vue-docs 3.18.5 → 3.18.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/demos/apis/button-group.js +2 -2
- package/demos/apis/dialog-select.js +2 -2
- package/demos/apis/dropdown.js +1 -1
- package/demos/apis/grid.js +4 -4
- package/demos/apis/input.js +2 -2
- package/demos/apis/pager.js +2 -2
- package/demos/apis/pop-upload.js +2 -2
- package/package.json +9 -9
- package/src/views/components/VersionTip.vue +55 -53
- package/src/views/components/components.vue +117 -58
package/demos/apis/dropdown.js
CHANGED
package/demos/apis/grid.js
CHANGED
|
@@ -147,8 +147,8 @@ export default {
|
|
|
147
147
|
name: 'custom-column-names',
|
|
148
148
|
type: 'string[]',
|
|
149
149
|
defaultValue: "['TinyGridColumn']",
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
meta: {
|
|
151
|
+
stable: '3.17.0'
|
|
152
152
|
},
|
|
153
153
|
desc: {
|
|
154
154
|
'zh-CN': '封装 grid-column 时需要配置此字段,提供给表格收集配置',
|
|
@@ -1467,8 +1467,8 @@ export default {
|
|
|
1467
1467
|
name: 'toggle-group-change',
|
|
1468
1468
|
type: '(row: IRow) => void',
|
|
1469
1469
|
defaultValue: '',
|
|
1470
|
-
|
|
1471
|
-
|
|
1470
|
+
meta: {
|
|
1471
|
+
stable: '3.17.0'
|
|
1472
1472
|
},
|
|
1473
1473
|
desc: {
|
|
1474
1474
|
'zh-CN': '当分组的展开和收起时会触发该事件',
|
package/demos/apis/input.js
CHANGED
package/demos/apis/pager.js
CHANGED
package/demos/apis/pop-upload.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opentiny/vue-docs",
|
|
3
|
-
"version": "3.18.
|
|
3
|
+
"version": "3.18.7",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@opentiny/vue-repl": "^1.1.2",
|
|
@@ -16,18 +16,18 @@
|
|
|
16
16
|
"vue": "^3.4.31",
|
|
17
17
|
"vue-i18n": "^9.1.10",
|
|
18
18
|
"vue-router": "4.1.5",
|
|
19
|
-
"@opentiny/vue": "~3.18.0",
|
|
20
19
|
"@opentiny/vue-design-aurora": "~3.18.0",
|
|
21
|
-
"@opentiny/vue
|
|
22
|
-
"@opentiny/vue-
|
|
23
|
-
"@opentiny/vue-common": "~3.18.0",
|
|
20
|
+
"@opentiny/vue": "~3.18.0",
|
|
21
|
+
"@opentiny/vue-icon-saas": "~3.18.0",
|
|
24
22
|
"@opentiny/vue-design-saas": "~3.18.0",
|
|
23
|
+
"@opentiny/vue-common": "~3.18.0",
|
|
24
|
+
"@opentiny/vue-directive": "~3.18.0",
|
|
25
25
|
"@opentiny/vue-icon": "~3.18.0",
|
|
26
|
-
"@opentiny/vue-theme": "~3.18.
|
|
27
|
-
"@opentiny/vue-
|
|
28
|
-
"@opentiny/vue-
|
|
26
|
+
"@opentiny/vue-theme": "~3.18.4",
|
|
27
|
+
"@opentiny/vue-design-smb": "~3.18.0",
|
|
28
|
+
"@opentiny/vue-theme-saas": "~3.18.0",
|
|
29
29
|
"@opentiny/vue-theme-mobile": "~3.18.0",
|
|
30
|
-
"@opentiny/vue-
|
|
30
|
+
"@opentiny/vue-vite-import": "~1.2.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@playwright/test": "~1.42.0",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<span v-if="currentStageComputed" class="version-tip">
|
|
3
3
|
<div v-if="renderType === 'alert'">
|
|
4
|
-
<tiny-alert :type="alertTypeComputed" :closable="false">
|
|
4
|
+
<tiny-alert :type="alertTypeComputed" v-if="!isStableComputed" :closable="false">
|
|
5
5
|
<template #description>
|
|
6
6
|
<span>{{ tipComputed }}</span>
|
|
7
7
|
</template>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
:content="tipComputed"
|
|
16
16
|
:disabled="!tipComputed"
|
|
17
17
|
>
|
|
18
|
-
<tiny-tag size="
|
|
18
|
+
<tiny-tag size="small" effect="dark" :type="tagTypeComputed">{{ tagContentComputed }}</tiny-tag>
|
|
19
19
|
</tiny-tooltip>
|
|
20
20
|
</span>
|
|
21
21
|
</span>
|
|
@@ -28,11 +28,14 @@ import { Tag as TinyTag, Alert as TinyAlert, Tooltip as TinyTooltip } from '@ope
|
|
|
28
28
|
import { getWord } from '../../i18n/index'
|
|
29
29
|
|
|
30
30
|
enum STAGE {
|
|
31
|
+
// 实验性阶段(api属性不具备此阶段)
|
|
31
32
|
experimental = 'experimental',
|
|
33
|
+
// 稳定阶段
|
|
32
34
|
stable = 'stable',
|
|
35
|
+
// 弃用阶段
|
|
33
36
|
deprecated = 'deprecated',
|
|
34
|
-
|
|
35
|
-
|
|
37
|
+
// 将要被移除阶段
|
|
38
|
+
toBeRemoved = 'toBeRemoved'
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
interface IStageVersionMetaData {
|
|
@@ -43,7 +46,7 @@ interface IVersionMetaData {
|
|
|
43
46
|
[STAGE.experimental]?: IStageVersionMetaData | string
|
|
44
47
|
[STAGE.stable]?: IStageVersionMetaData | string
|
|
45
48
|
[STAGE.deprecated]?: IStageVersionMetaData | string
|
|
46
|
-
[STAGE.
|
|
49
|
+
[STAGE.toBeRemoved]?: IStageVersionMetaData | string
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
interface Ii18nString {
|
|
@@ -51,38 +54,38 @@ interface Ii18nString {
|
|
|
51
54
|
'en-US': string
|
|
52
55
|
}
|
|
53
56
|
|
|
57
|
+
// 生命周期的顺序 实验 --> 稳定 --> 弃用 --> 移除
|
|
58
|
+
const lifeCycleOrder = [STAGE.experimental, STAGE.stable, STAGE.deprecated, STAGE.toBeRemoved]
|
|
59
|
+
|
|
54
60
|
const alertTypeMap = {
|
|
55
|
-
[STAGE.
|
|
61
|
+
[STAGE.toBeRemoved]: 'error',
|
|
56
62
|
[STAGE.deprecated]: 'error',
|
|
57
63
|
[STAGE.experimental]: 'warning',
|
|
58
|
-
[STAGE.stable]: '
|
|
64
|
+
[STAGE.stable]: 'success'
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
const tagTypeMap = {
|
|
62
|
-
[STAGE.
|
|
68
|
+
[STAGE.toBeRemoved]: 'danger',
|
|
63
69
|
[STAGE.deprecated]: 'danger',
|
|
64
70
|
[STAGE.experimental]: 'warning',
|
|
65
|
-
[STAGE.stable]: '
|
|
66
|
-
[STAGE.new]: 'primary'
|
|
71
|
+
[STAGE.stable]: 'success'
|
|
67
72
|
}
|
|
68
73
|
|
|
69
74
|
const cnDesMap = {
|
|
70
75
|
[STAGE.experimental]: '处于测试阶段',
|
|
71
76
|
[STAGE.stable]: '自 v{version} 起稳定提供',
|
|
72
77
|
[STAGE.deprecated]: '从 v{version} 开始被废弃',
|
|
73
|
-
[STAGE.
|
|
74
|
-
[STAGE.new]: '于 v{version} 新增'
|
|
78
|
+
[STAGE.toBeRemoved]: '于 v{version} 移除'
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
const enDesMap = {
|
|
78
82
|
[STAGE.experimental]: 'in beta',
|
|
79
83
|
[STAGE.stable]: 'stable since v{version}',
|
|
80
84
|
[STAGE.deprecated]: 'deprecated since v{version}',
|
|
81
|
-
[STAGE.
|
|
82
|
-
[STAGE.new]: 'add in v{version}'
|
|
85
|
+
[STAGE.toBeRemoved]: 'toBeRemoved in v{version}'
|
|
83
86
|
}
|
|
84
87
|
|
|
85
|
-
// 默认的,只需要显示deprecated,experimental
|
|
88
|
+
// 默认的,只需要显示deprecated,experimental状态时的提示
|
|
86
89
|
export default defineComponent({
|
|
87
90
|
components: {
|
|
88
91
|
TinyTag,
|
|
@@ -90,7 +93,7 @@ export default defineComponent({
|
|
|
90
93
|
TinyTooltip
|
|
91
94
|
},
|
|
92
95
|
props: {
|
|
93
|
-
|
|
96
|
+
meta: {
|
|
94
97
|
type: Object as PropType<IVersionMetaData>,
|
|
95
98
|
default: () => ({})
|
|
96
99
|
},
|
|
@@ -102,76 +105,73 @@ export default defineComponent({
|
|
|
102
105
|
type: String as PropType<'component' | 'api'>,
|
|
103
106
|
default: 'component'
|
|
104
107
|
},
|
|
105
|
-
stages: {
|
|
106
|
-
type: Array as PropType<STAGE[]>,
|
|
107
|
-
default: () => [STAGE.experimental, STAGE.deprecated, STAGE.removed, STAGE.new]
|
|
108
|
-
},
|
|
109
108
|
alertType: {
|
|
110
109
|
type: String
|
|
111
110
|
},
|
|
112
111
|
tagType: {
|
|
113
112
|
type: String
|
|
114
113
|
},
|
|
115
|
-
briefStage: {
|
|
116
|
-
type: Object as PropType<STAGE>
|
|
117
|
-
},
|
|
118
114
|
tip: {
|
|
119
115
|
type: Object as PropType<Ii18nString>
|
|
120
116
|
},
|
|
121
117
|
extendTip: {
|
|
122
118
|
type: Object as PropType<Ii18nString>
|
|
119
|
+
},
|
|
120
|
+
isFromMenu: {
|
|
121
|
+
type: Boolean,
|
|
122
|
+
default: false
|
|
123
123
|
}
|
|
124
124
|
},
|
|
125
125
|
setup(props) {
|
|
126
|
-
const isInStage = (stage: STAGE) => Boolean(props.metaData[stage]) && props.stages.includes(stage)
|
|
127
|
-
|
|
128
126
|
const getVersion = (stage: STAGE) => {
|
|
129
|
-
if (!props.
|
|
127
|
+
if (!props.meta[stage]) return ''
|
|
130
128
|
|
|
131
|
-
if (typeof props.
|
|
132
|
-
return props.
|
|
129
|
+
if (typeof props.meta[stage] === 'string') {
|
|
130
|
+
return props.meta[stage] as string
|
|
133
131
|
} else {
|
|
134
|
-
return (props.
|
|
132
|
+
return (props.meta[stage] as IStageVersionMetaData).version
|
|
135
133
|
}
|
|
136
134
|
}
|
|
137
135
|
|
|
138
|
-
const currentStageComputed = computed(() =>
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
136
|
+
const currentStageComputed = computed(() =>
|
|
137
|
+
lifeCycleOrder
|
|
138
|
+
.slice(0, -1)
|
|
139
|
+
.toReversed()
|
|
140
|
+
.find((stage) => Boolean(props.meta[stage]))
|
|
141
|
+
)
|
|
142
142
|
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
// 是否为稳定阶段
|
|
144
|
+
const isStableComputed = computed(() => currentStageComputed.value === STAGE.stable)
|
|
145
145
|
|
|
146
146
|
const generateDes = (desMap: typeof cnDesMap) => {
|
|
147
|
-
|
|
148
|
-
const
|
|
149
|
-
currentStageComputed.value as STAGE
|
|
150
|
-
)
|
|
151
|
-
// 当前deprecated之后,不显示stable的描述
|
|
152
|
-
const isFilterStable = [STAGE.removed, STAGE.deprecated].includes(currentStageComputed.value as STAGE)
|
|
147
|
+
const currentStage = currentStageComputed.value
|
|
148
|
+
const deprecatedList = lifeCycleOrder.slice(2)
|
|
153
149
|
|
|
154
150
|
const goingStages = Object.entries(desMap).filter(([stage]) => {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
151
|
+
if (deprecatedList.includes(currentStage)) {
|
|
152
|
+
return deprecatedList.includes(stage)
|
|
153
|
+
} else {
|
|
154
|
+
return stage === currentStage
|
|
159
155
|
}
|
|
160
|
-
|
|
161
|
-
if (stage === STAGE.stable) {
|
|
162
|
-
isPicked = isPicked && !isFilterStable
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
return isPicked
|
|
166
156
|
})
|
|
167
157
|
|
|
168
158
|
return goingStages.map(([stage, des]) => des.replace('{version}', getVersion(stage as STAGE))).join(',')
|
|
169
159
|
}
|
|
170
160
|
|
|
161
|
+
const tagContentComputed = computed(() => {
|
|
162
|
+
const result = isStableComputed.value ? props.meta[currentStageComputed.value] : currentStageComputed.value
|
|
163
|
+
// 菜单上需要显示Beta标识,防止占用过多文字空间
|
|
164
|
+
if (props.isFromMenu && result === STAGE.experimental) {
|
|
165
|
+
return 'Beta'
|
|
166
|
+
} else {
|
|
167
|
+
return result
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
|
|
171
171
|
const tipComputed = computed(() => {
|
|
172
172
|
if (props.tip) return getWord(props.tip['zh-CN'], props.tip['en-US']) as string
|
|
173
173
|
|
|
174
|
-
if (!props.
|
|
174
|
+
if (!props.meta) return ''
|
|
175
175
|
|
|
176
176
|
const vertionDesZnCn = generateDes(cnDesMap)
|
|
177
177
|
const znChTip = `该${props.tipSubject === 'component' ? '组件' : '特性'}${vertionDesZnCn}。${
|
|
@@ -202,7 +202,9 @@ export default defineComponent({
|
|
|
202
202
|
tipComputed,
|
|
203
203
|
currentStageComputed,
|
|
204
204
|
alertTypeComputed,
|
|
205
|
-
tagTypeComputed
|
|
205
|
+
tagTypeComputed,
|
|
206
|
+
tagContentComputed,
|
|
207
|
+
isStableComputed
|
|
206
208
|
}
|
|
207
209
|
}
|
|
208
210
|
})
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div v-if="templateModeState.isSaas" class="ti-pt20 ti-pl48 ti-mb-36">
|
|
3
|
-
<span class="cmp-mode-title">文档类型: </span>
|
|
4
|
-
<tiny-button-group :data="optionsList" v-model="templateModeState.mode"></tiny-button-group>
|
|
5
|
-
</div>
|
|
6
2
|
<!-- 一个组件的文档: 描述md + demos + apis -->
|
|
7
|
-
<header class="flex-horizontal docs-header">
|
|
3
|
+
<header :class="['flex-horizontal', 'docs-header', cmpId === 'loading' && 'docs-header-highlight']">
|
|
8
4
|
<div class="docs-title-wrap">
|
|
9
5
|
<div class="markdown-body markdown-top-body" size="medium" v-html="cmpTopMd"></div>
|
|
10
6
|
<version-tip
|
|
11
|
-
v-if="currJson.
|
|
12
|
-
:meta
|
|
7
|
+
v-if="currJson.meta || currJson.versionTipOption"
|
|
8
|
+
:meta="currJson.meta"
|
|
13
9
|
v-bind="currJson.versionTipOption"
|
|
14
10
|
>
|
|
15
11
|
</version-tip>
|
|
16
12
|
</div>
|
|
13
|
+
<div v-if="templateModeState.isSaas" class="ti-pt20 ti-pl48 ti-mb-36">
|
|
14
|
+
<span class="cmp-mode-title">文档类型: </span>
|
|
15
|
+
<tiny-button-group :data="optionsList" v-model="templateModeState.mode"></tiny-button-group>
|
|
16
|
+
</div>
|
|
17
17
|
<span class="docs-header-spacer"></span>
|
|
18
18
|
</header>
|
|
19
19
|
<div class="docs-content">
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
<span v-else>{{ row.name }}</span>
|
|
55
55
|
</span>
|
|
56
56
|
<version-tip
|
|
57
|
-
v-if="row.
|
|
58
|
-
:meta
|
|
57
|
+
v-if="row.meta || row.versionTipOption"
|
|
58
|
+
:meta="row.meta"
|
|
59
59
|
v-bind="row.versionTipOption"
|
|
60
60
|
render-type="tag"
|
|
61
61
|
tip-subject="api"
|
|
@@ -84,14 +84,24 @@
|
|
|
84
84
|
:title="i18nByKey('defValue')"
|
|
85
85
|
:width="columnWidth[key][2]"
|
|
86
86
|
></tiny-grid-column>
|
|
87
|
-
<tiny-grid-column field="desc" :title="i18nByKey('desc')"
|
|
87
|
+
<tiny-grid-column field="desc" :title="i18nByKey('desc')">
|
|
88
|
+
<template #default="data">
|
|
89
|
+
<span v-html="data.row.desc"></span>
|
|
90
|
+
</template>
|
|
91
|
+
</tiny-grid-column>
|
|
88
92
|
</tiny-grid>
|
|
89
93
|
</template>
|
|
90
94
|
</div>
|
|
91
95
|
</div>
|
|
92
96
|
</div>
|
|
93
97
|
</div>
|
|
94
|
-
<tiny-tabs
|
|
98
|
+
<tiny-tabs
|
|
99
|
+
v-else
|
|
100
|
+
v-model="activeTab"
|
|
101
|
+
ref="demoTabs"
|
|
102
|
+
:class="['docs-content-tabs', cmpId === 'loading' && 'docs-content-tabs-highlight']"
|
|
103
|
+
@click="onTabsClick"
|
|
104
|
+
>
|
|
95
105
|
<tiny-tab-item :title="i18nByKey('demos')" name="demos">
|
|
96
106
|
<!-- demos列表 -->
|
|
97
107
|
<template v-if="currJson?.demos?.length">
|
|
@@ -103,6 +113,7 @@
|
|
|
103
113
|
:demo="demo"
|
|
104
114
|
:curr-demo-id="currDemoId"
|
|
105
115
|
class="mb32"
|
|
116
|
+
@mounted="demoMounted"
|
|
106
117
|
/>
|
|
107
118
|
</div>
|
|
108
119
|
<div v-else>
|
|
@@ -126,7 +137,7 @@
|
|
|
126
137
|
</template>
|
|
127
138
|
</div>
|
|
128
139
|
</tiny-tab-item>
|
|
129
|
-
<tiny-tab-item v-if="showApiTab && !isRunningTest" title="API" name="api">
|
|
140
|
+
<tiny-tab-item v-if="showApiTab && !isRunningTest && currJson.apis?.length" title="API" name="api">
|
|
130
141
|
<!-- api文档 -->
|
|
131
142
|
<div id="API" class="all-api-container">
|
|
132
143
|
<div class="ti-f-c ti-f-wrap api-list">
|
|
@@ -154,7 +165,11 @@
|
|
|
154
165
|
>
|
|
155
166
|
<tiny-grid-column class-name="api-table-expand-col" type="expand" width="32">
|
|
156
167
|
<template #default="{ row }">
|
|
157
|
-
<async-highlight
|
|
168
|
+
<async-highlight
|
|
169
|
+
v-if="row.code"
|
|
170
|
+
:code="row.code.trim()"
|
|
171
|
+
:types="chartCode ? 'html' : 'ts'"
|
|
172
|
+
></async-highlight>
|
|
158
173
|
<div v-if="row.depTypes">
|
|
159
174
|
<async-highlight
|
|
160
175
|
v-for="(k, i) in row.depTypes"
|
|
@@ -172,8 +187,8 @@
|
|
|
172
187
|
<span v-else>{{ row.name }}</span>
|
|
173
188
|
</span>
|
|
174
189
|
<version-tip
|
|
175
|
-
v-if="row.
|
|
176
|
-
:meta
|
|
190
|
+
v-if="row.meta || row.versionTipOption"
|
|
191
|
+
:meta="row.meta"
|
|
177
192
|
v-bind="row.versionTipOption"
|
|
178
193
|
render-type="tag"
|
|
179
194
|
tip-subject="api"
|
|
@@ -197,12 +212,16 @@
|
|
|
197
212
|
</template>
|
|
198
213
|
</tiny-grid-column>
|
|
199
214
|
<tiny-grid-column
|
|
200
|
-
v-if="key === 'props'"
|
|
215
|
+
v-if="key === 'props' || key === 'options'"
|
|
201
216
|
field="defaultValue"
|
|
202
217
|
:title="i18nByKey('defValue')"
|
|
203
218
|
:width="columnWidth[key][2]"
|
|
204
219
|
></tiny-grid-column>
|
|
205
|
-
<tiny-grid-column field="desc" :title="i18nByKey('desc')"
|
|
220
|
+
<tiny-grid-column field="desc" :title="i18nByKey('desc')">
|
|
221
|
+
<template #default="data">
|
|
222
|
+
<span v-html="data.row.desc"></span>
|
|
223
|
+
</template>
|
|
224
|
+
</tiny-grid-column>
|
|
206
225
|
</tiny-grid>
|
|
207
226
|
</template>
|
|
208
227
|
</div>
|
|
@@ -240,6 +259,7 @@
|
|
|
240
259
|
|
|
241
260
|
<script lang="jsx">
|
|
242
261
|
import { defineComponent, reactive, computed, toRefs, watch, onMounted, ref, onUnmounted, nextTick } from 'vue'
|
|
262
|
+
import { useRoute } from 'vue-router'
|
|
243
263
|
import { marked } from 'marked'
|
|
244
264
|
import hljs from 'highlight.js'
|
|
245
265
|
import { Anchor, ButtonGroup, Grid, GridColumn, Tabs, TabItem, Tooltip } from '@opentiny/vue'
|
|
@@ -271,6 +291,8 @@ export default defineComponent({
|
|
|
271
291
|
const isRunningTest = localStorage.getItem('tiny-e2e-test') === 'true'
|
|
272
292
|
const anchorRefreshKey = ref(0)
|
|
273
293
|
const apiTableRef = ref()
|
|
294
|
+
const route = useRoute()
|
|
295
|
+
|
|
274
296
|
const state = reactive({
|
|
275
297
|
webDocPath: computed(() => ''),
|
|
276
298
|
langKey: getWord('zh-CN', 'en-US'),
|
|
@@ -302,12 +324,13 @@ export default defineComponent({
|
|
|
302
324
|
currAnchorLinks: computed(() => (state.activeTab === 'demos' ? state.demoAnchorLinks : state.apiAnchorLinks)),
|
|
303
325
|
// 单demo显示时
|
|
304
326
|
singleDemo: null,
|
|
305
|
-
activeTab: 'demos',
|
|
327
|
+
activeTab: route.hash === '#api' ? 'api' : 'demos',
|
|
306
328
|
tableData: {},
|
|
307
329
|
currApiTypes: [],
|
|
308
330
|
showApiTab: computed(() => state.currApiTypes.length),
|
|
309
331
|
columnWidth: {
|
|
310
332
|
props: ['15%', '20%', '15%'],
|
|
333
|
+
options: ['15%', '20%', '15%'],
|
|
311
334
|
events: ['15%', '25%', 0],
|
|
312
335
|
methods: ['15%', '20%', 0],
|
|
313
336
|
slots: ['15%', 0, 0],
|
|
@@ -321,12 +344,33 @@ export default defineComponent({
|
|
|
321
344
|
activeMethod: (row) => row.typeAnchorName,
|
|
322
345
|
showIcon: true // 配置是否显示展开图标
|
|
323
346
|
},
|
|
324
|
-
contributors: [] // 贡献者
|
|
347
|
+
contributors: [], // 贡献者
|
|
348
|
+
chartCode: false
|
|
325
349
|
})
|
|
326
350
|
|
|
327
351
|
const { apiModeState } = useApiMode()
|
|
328
352
|
const { templateModeState, staticPath, optionsList } = useTemplateMode()
|
|
329
353
|
|
|
354
|
+
let finishNum = 0
|
|
355
|
+
let isAllMounted = false
|
|
356
|
+
let demoMountedResolve
|
|
357
|
+
const demoMounted = () => {
|
|
358
|
+
finishNum++
|
|
359
|
+
if (finishNum === state.currJson.demos.length) {
|
|
360
|
+
isAllMounted = true
|
|
361
|
+
demoMountedResolve(true)
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
const allDemoMounted = async () => {
|
|
366
|
+
if (isAllMounted) {
|
|
367
|
+
return isAllMounted
|
|
368
|
+
}
|
|
369
|
+
return new Promise((resolve) => {
|
|
370
|
+
demoMountedResolve = resolve
|
|
371
|
+
})
|
|
372
|
+
}
|
|
373
|
+
|
|
330
374
|
const getApiAnchorLinks = () => {
|
|
331
375
|
if (!state.currJson.apis?.length) {
|
|
332
376
|
return []
|
|
@@ -368,14 +412,14 @@ export default defineComponent({
|
|
|
368
412
|
for (const apiType of Object.keys(apiGroup)) {
|
|
369
413
|
if (Array.isArray(apiGroup[apiType]) && apiGroup[apiType].length) {
|
|
370
414
|
const apiArr = apiGroup[apiType].map((i) => {
|
|
371
|
-
const { name, type, defaultValue, desc, demoId, typeAnchorName, linkTo,
|
|
415
|
+
const { name, type, defaultValue, desc, demoId, typeAnchorName, linkTo, meta, versionTipOption } = i
|
|
372
416
|
const item = {
|
|
373
417
|
name,
|
|
374
418
|
type,
|
|
375
419
|
defaultValue: defaultValue || '--',
|
|
376
420
|
desc: desc[state.langKey],
|
|
377
421
|
demoId,
|
|
378
|
-
|
|
422
|
+
meta,
|
|
379
423
|
versionTipOption,
|
|
380
424
|
typeAnchorName: '',
|
|
381
425
|
linkTo
|
|
@@ -439,10 +483,7 @@ export default defineComponent({
|
|
|
439
483
|
try {
|
|
440
484
|
// 用户打开官网有时候会带一些特殊字符的hash,try catch一下防止js报错
|
|
441
485
|
scrollTarget = document.querySelector(`#${hash}`)
|
|
442
|
-
} catch (err) {
|
|
443
|
-
// eslint-disable-next-line no-console
|
|
444
|
-
console.log('querySelector has special character:', err)
|
|
445
|
-
}
|
|
486
|
+
} catch (err) {}
|
|
446
487
|
if (scrollTarget && !isRunningTest) {
|
|
447
488
|
document.getElementById('doc-layout').scrollTo({
|
|
448
489
|
top: scrollTarget.offsetTop,
|
|
@@ -451,7 +492,7 @@ export default defineComponent({
|
|
|
451
492
|
})
|
|
452
493
|
}
|
|
453
494
|
}
|
|
454
|
-
},
|
|
495
|
+
}, 600)
|
|
455
496
|
}
|
|
456
497
|
|
|
457
498
|
// 在singleDemo情况时,才需要滚动示例区域到顶
|
|
@@ -481,6 +522,9 @@ export default defineComponent({
|
|
|
481
522
|
`@demos/apis/${getWebdocPath(state.cmpId) === 'chart' ? state.cmpId : getWebdocPath(state.cmpId)}.js`
|
|
482
523
|
)
|
|
483
524
|
]
|
|
525
|
+
|
|
526
|
+
state.chartCode = getWebdocPath(state.cmpId) === 'chart'
|
|
527
|
+
|
|
484
528
|
// 兼容ts文档
|
|
485
529
|
if (['interfaces', 'types', 'classes'].includes(state.cmpId)) {
|
|
486
530
|
state.activeTab = 'apis'
|
|
@@ -558,11 +602,9 @@ export default defineComponent({
|
|
|
558
602
|
|
|
559
603
|
// F5刷新加载时,跳到当前示例
|
|
560
604
|
// 应当在所有demo渲染完毕后在滚动,否则滚动完位置后,demo渲染会使滚动位置错位
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
})
|
|
565
|
-
}, 0)
|
|
605
|
+
return allDemoMounted().then(() => {
|
|
606
|
+
scrollByHash(hash)
|
|
607
|
+
})
|
|
566
608
|
})
|
|
567
609
|
.finally(() => {
|
|
568
610
|
// 获取组件贡献者
|
|
@@ -605,10 +647,12 @@ export default defineComponent({
|
|
|
605
647
|
}
|
|
606
648
|
|
|
607
649
|
const fn = {
|
|
650
|
+
demoMounted,
|
|
608
651
|
copyText: (text) => {
|
|
609
652
|
navigator.clipboard.writeText(text)
|
|
610
653
|
},
|
|
611
|
-
onTabsClick: () => {
|
|
654
|
+
onTabsClick: (data) => {
|
|
655
|
+
router.push(`#${data.name}`)
|
|
612
656
|
scrollToLayoutTop()
|
|
613
657
|
},
|
|
614
658
|
// 点击 api区域的 name列时
|
|
@@ -667,6 +711,8 @@ export default defineComponent({
|
|
|
667
711
|
state.currJson = {}
|
|
668
712
|
} else {
|
|
669
713
|
loadPage()
|
|
714
|
+
// 切换组件时tabs激活页变成demos
|
|
715
|
+
state.activeTab = 'demos'
|
|
670
716
|
// 每次切换组件都需要让锚点组件重新刷新
|
|
671
717
|
anchorRefreshKey.value++
|
|
672
718
|
}
|
|
@@ -723,9 +769,13 @@ export default defineComponent({
|
|
|
723
769
|
position: sticky;
|
|
724
770
|
top: 0;
|
|
725
771
|
z-index: var(--docs-header-zindex);
|
|
726
|
-
padding:
|
|
772
|
+
padding: 16px 40px;
|
|
727
773
|
background-color: #fff;
|
|
728
|
-
box-shadow:
|
|
774
|
+
box-shadow: 12px 0 20px 6px rgba(0, 0, 0, 0.06);
|
|
775
|
+
|
|
776
|
+
&.docs-header-highlight {
|
|
777
|
+
z-index: var(--docs-header-zindex-highlight);
|
|
778
|
+
}
|
|
729
779
|
|
|
730
780
|
.docs-title-wrap {
|
|
731
781
|
flex: 1;
|
|
@@ -736,13 +786,13 @@ export default defineComponent({
|
|
|
736
786
|
|
|
737
787
|
.markdown-top-body {
|
|
738
788
|
z-index: var(--docs-markdown-top-body-zindex);
|
|
739
|
-
font-size:
|
|
789
|
+
font-size: 14px;
|
|
740
790
|
transition: all ease-in-out 0.3s;
|
|
741
791
|
|
|
742
792
|
:deep(h1) {
|
|
743
793
|
margin: 0;
|
|
744
794
|
padding: 0;
|
|
745
|
-
font-size:
|
|
795
|
+
font-size: 24px;
|
|
746
796
|
line-height: 40px;
|
|
747
797
|
}
|
|
748
798
|
}
|
|
@@ -758,7 +808,7 @@ export default defineComponent({
|
|
|
758
808
|
}
|
|
759
809
|
|
|
760
810
|
.docs-content {
|
|
761
|
-
margin:
|
|
811
|
+
margin: 16px 0 120px;
|
|
762
812
|
transition: all ease-in-out 0.3s;
|
|
763
813
|
|
|
764
814
|
.docs-tabs-wrap {
|
|
@@ -766,14 +816,18 @@ export default defineComponent({
|
|
|
766
816
|
display: flex;
|
|
767
817
|
justify-content: center;
|
|
768
818
|
min-width: 680px;
|
|
769
|
-
padding: 0
|
|
819
|
+
padding: 0 40px;
|
|
770
820
|
}
|
|
771
821
|
|
|
772
822
|
.docs-content-tabs {
|
|
773
|
-
--
|
|
774
|
-
--
|
|
775
|
-
--
|
|
776
|
-
--
|
|
823
|
+
--tv-Tabs-heigh: 48px;
|
|
824
|
+
--tv-Tabs-item-font-size: 18px;
|
|
825
|
+
--tv-Tabs-header-font-active-text-color: #2f5bea;
|
|
826
|
+
--tv-Tabs-item-active-border-color: #2f5bea;
|
|
827
|
+
|
|
828
|
+
&.docs-content-tabs-highlight :deep(.tiny-tabs__header) {
|
|
829
|
+
z-index: var(--docs-layout-sider-zindex-highlight);
|
|
830
|
+
}
|
|
777
831
|
|
|
778
832
|
flex: 1;
|
|
779
833
|
transition: all ease-in-out 0.3s;
|
|
@@ -793,7 +847,7 @@ export default defineComponent({
|
|
|
793
847
|
left: 0;
|
|
794
848
|
display: block;
|
|
795
849
|
width: 100%;
|
|
796
|
-
height:
|
|
850
|
+
height: 16px;
|
|
797
851
|
background: linear-gradient(to bottom, #fff, transparent);
|
|
798
852
|
transform: translateY(100%);
|
|
799
853
|
}
|
|
@@ -812,9 +866,6 @@ export default defineComponent({
|
|
|
812
866
|
}
|
|
813
867
|
|
|
814
868
|
.api-table {
|
|
815
|
-
--ti-grid-font-size: var(--ti-common-font-size-1);
|
|
816
|
-
--ti-grid-default-header-column-height: var(--ti-common-size-10x);
|
|
817
|
-
|
|
818
869
|
width: 100%;
|
|
819
870
|
table-layout: fixed;
|
|
820
871
|
border-collapse: collapse;
|
|
@@ -837,11 +888,20 @@ export default defineComponent({
|
|
|
837
888
|
}
|
|
838
889
|
|
|
839
890
|
:deep(.api-table-expand-col) {
|
|
840
|
-
padding-left:
|
|
891
|
+
padding-left: 16px;
|
|
841
892
|
}
|
|
842
893
|
|
|
843
894
|
:deep(.tiny-grid-body__expanded-cell) {
|
|
844
|
-
background-color:
|
|
895
|
+
background-color: #fafafa;
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
:deep(code) {
|
|
899
|
+
color: #476582;
|
|
900
|
+
padding: 4px 8px;
|
|
901
|
+
margin: 0 4px;
|
|
902
|
+
font-size: 0.85em;
|
|
903
|
+
background-color: rgba(27, 31, 35, 0.05);
|
|
904
|
+
border-radius: 3px;
|
|
845
905
|
}
|
|
846
906
|
}
|
|
847
907
|
|
|
@@ -855,7 +915,7 @@ export default defineComponent({
|
|
|
855
915
|
flex: none;
|
|
856
916
|
width: 200px;
|
|
857
917
|
height: calc(100vh - 280px);
|
|
858
|
-
padding-top:
|
|
918
|
+
padding-top: 16px;
|
|
859
919
|
|
|
860
920
|
.tiny-anchor__dot {
|
|
861
921
|
max-height: calc(100vh - 300px);
|
|
@@ -898,19 +958,19 @@ export default defineComponent({
|
|
|
898
958
|
.all-demos-container,
|
|
899
959
|
.all-api-container {
|
|
900
960
|
flex: 1;
|
|
901
|
-
padding-top:
|
|
961
|
+
padding-top: 32px;
|
|
902
962
|
scroll-behavior: smooth;
|
|
903
963
|
}
|
|
904
964
|
|
|
905
965
|
.all-api-container {
|
|
906
|
-
padding-top:
|
|
966
|
+
padding-top: 12px;
|
|
907
967
|
}
|
|
908
968
|
|
|
909
969
|
.flex-horizontal {
|
|
910
970
|
display: flex;
|
|
911
971
|
justify-content: space-between;
|
|
912
972
|
align-items: flex-start;
|
|
913
|
-
column-gap:
|
|
973
|
+
column-gap: 16px;
|
|
914
974
|
}
|
|
915
975
|
|
|
916
976
|
.cmp-container {
|
|
@@ -929,7 +989,6 @@ export default defineComponent({
|
|
|
929
989
|
}
|
|
930
990
|
|
|
931
991
|
:deep(.tiny-anchor-link) {
|
|
932
|
-
margin-bottom: 10px;
|
|
933
992
|
font-size: 12px;
|
|
934
993
|
|
|
935
994
|
a {
|
|
@@ -945,8 +1004,8 @@ export default defineComponent({
|
|
|
945
1004
|
margin-top: 48px;
|
|
946
1005
|
|
|
947
1006
|
.cmp-contributor-title {
|
|
948
|
-
margin-bottom:
|
|
949
|
-
font-size:
|
|
1007
|
+
margin-bottom: 32px;
|
|
1008
|
+
font-size: 20px;
|
|
950
1009
|
font-weight: Semibold;
|
|
951
1010
|
color: #191919;
|
|
952
1011
|
}
|
|
@@ -954,8 +1013,8 @@ export default defineComponent({
|
|
|
954
1013
|
.cmp-contributor-item {
|
|
955
1014
|
width: 42px;
|
|
956
1015
|
height: 42px;
|
|
957
|
-
margin-right:
|
|
958
|
-
margin-bottom:
|
|
1016
|
+
margin-right: 12px;
|
|
1017
|
+
margin-bottom: 20px;
|
|
959
1018
|
display: inline-block;
|
|
960
1019
|
border-radius: 50%;
|
|
961
1020
|
overflow: hidden;
|
|
@@ -972,7 +1031,7 @@ export default defineComponent({
|
|
|
972
1031
|
}
|
|
973
1032
|
|
|
974
1033
|
.cmp-contributor-tip {
|
|
975
|
-
font-size:
|
|
1034
|
+
font-size: 14px;
|
|
976
1035
|
color: #191919;
|
|
977
1036
|
}
|
|
978
1037
|
}
|