Skip to content

Commit 72b78ce

Browse files
kagolgitee-org
authored andcommitted
!255 feat: 添加自定义功能和其demo
Merge pull request !255 from 星辰大海/cherry-pick-1634823576
2 parents 60d04ee + 35dbb0f commit 72b78ce

File tree

3 files changed

+52
-7
lines changed

3 files changed

+52
-7
lines changed

devui/tabs/src/tab.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export default defineComponent({
1919
},
2020
setup(props, { slots }) {
2121
const tabs = inject<Tabs>('tabs');
22+
tabs.state.slots.push(slots.dTabTitle);
2223
tabs.state.data.push(props);
2324
return () => {
2425
const { id } = props;

devui/tabs/src/tabs.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import {
66
PropType,
77
provide,
88
reactive,
9-
ref
9+
ref,
10+
Slot
1011
} from 'vue';
1112
import './tabs.scss';
1213

@@ -19,6 +20,7 @@ interface TabsState {
1920
data?: any[]
2021
showContent: boolean
2122
active: any
23+
slots: Slot[]
2224
}
2325
export default defineComponent({
2426
name: 'DTabs',
@@ -65,7 +67,8 @@ export default defineComponent({
6567
const state: TabsState = reactive({
6668
data: [],
6769
active: props.modelValue,
68-
showContent: props.showContent
70+
showContent: props.showContent,
71+
slots: []
6972
});
7073
provide<Tabs>('tabs', {
7174
state
@@ -157,7 +160,7 @@ export default defineComponent({
157160
class={`devui-nav devui-nav-${ulClass.join(' ')}`}
158161
id='devuiTabs11'
159162
>
160-
{state.data.map((item) => {
163+
{state.data.map((item, i) => {
161164
return (
162165
<li
163166
role='presentation'
@@ -178,7 +181,11 @@ export default defineComponent({
178181
data-toggle={item.id}
179182
aria-expanded={props.modelValue === (item.id || item.tabId)}
180183
>
181-
<span>{item.title}</span>
184+
{state.slots[i] ? (
185+
state.slots[i]()
186+
) : (
187+
<span>{item.title}</span>
188+
)}
182189
</a>
183190
</li>
184191
);

docs/components/tabs/index.md

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -262,17 +262,54 @@ export default defineComponent({
262262

263263
:::
264264

265+
### 自定义模板
266+
267+
:::demo
268+
269+
```vue
270+
<template>
271+
<d-tabs type="tabs" v-model="id">
272+
<d-tab id="tab1" title="Tab1" tabId="tab1">
273+
<template v-slot:dTabTitle> 就是这样 </template>
274+
<p>Tab1 Content</p>
275+
</d-tab>
276+
<d-tab id="tab2" title="Tab2" tabId="tab2">
277+
<template v-slot:dTabTitle> 就是这样1 </template>
278+
<p>Tab2 Content</p>
279+
</d-tab>
280+
<d-tab id="tab3" title="Tab3" tabId="tab3">
281+
<template v-slot:dTabTitle> 就是这样2 </template>
282+
<p>Tab3 Content</p>
283+
</d-tab>
284+
</d-tabs>
285+
</template>
286+
<script>
287+
import { defineComponent, ref } from 'vue';
288+
289+
export default defineComponent({
290+
setup() {
291+
const id = ref('tab3');
292+
return {
293+
id
294+
};
295+
}
296+
});
297+
</script>
298+
```
299+
300+
:::
301+
265302
### API
266303

267-
| 参数 | 类型 | 默认 | 说明 | |
268-
| :----------: | :---------------------------------------------: | :----: | :---------------------------------------------------------------------------------------------------: | --------------- |
304+
| 参数 | 类型 | 默认 | 说明 | |
305+
| :----------: | :---------------------------------------------: | :----: | :---------------------------------------------------------------------------------------------------: | --- |
269306
| type | `tabs \| pills \| options \| wrapped \| slider` | 'tabs' | 可选,选项卡组的类型 |
270307
| showContent | `boolean` | true | 可选,是否显示选项卡对应的内容 |
271308
| v-model | `string` | -- | 可选,当前激活的选项卡,值为选项卡的 id |
272309
| customWidth | `string` | -- | 可选,自定义选项卡的宽 |
273310
| vertical | `boolean` | false | 可选,是否垂直显 |
274311
| beforeChange | `function\|Promise` | -- | tab 切换前的回调函数,返回 boolean 类型,返回 false 可以阻止 tab 的切换 |
275-
| reactivable | `boolean` | false | 可选,点击当前处于激活态的 tab 时是否触发`activeTabChange`事件,`true`为允许触发,`false`为不允许触发 | [拦截 tab 切换] |
312+
| reactivable | `boolean` | false | 可选,点击当前处于激活态的 tab 时是否触发`activeTabChange`事件,`true`为允许触发,`false`为不允许触发 |
276313

277314
### d-tabs 事件
278315

0 commit comments

Comments
 (0)