2020-08-27 17:18:57 +08:00

228 lines
7.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="tab-page article">
<h1>Tabs 标签页</h1>
<h2>概述</h2>
<p>选项卡切换组件常用于平级区域大块内容的的收纳和展现</p>
<h2>代码示例</h2>
<Row class="panel">
<Cell class="son-panel" span="12">
<div class="panel-case">
<Tabs value="apple">
<Tab label="标签一" name="android">
<p>1</p>
</Tab>
<Tab label="标签二" name="apple">
<p>2</p>
</Tab>
<Tab label="标签三" name="windows">
<p>3</p>
</Tab>
</Tabs>
</div>
<div class="panel-header">
<span>基本用法</span>
</div>
<div class="panel-desc" />
</Cell>
<div class="panel-split" />
<Cell class="son-panel" span="12">
<div class="code">
<markdown2 />
</div>
</Cell>
</Row>
<Row class="panel">
<Cell class="son-panel" span="12">
<div class="panel-case">
<Tabs value="apple">
<Tab label="标签一" name="android" icon="md-bus">
<p>1</p>
</Tab>
<Tab label="标签二" name="apple" icon="md-bus">
<p>2</p>
</Tab>
<Tab label="标签三" name="windows" icon="md-bus" disabled>
<p>3</p>
</Tab>
</Tabs>
</div>
<div class="panel-header">
<span>禁用和图标</span>
</div>
<div class="panel-desc">
<p>设置Tab的icon可以在Tab显示一个Icon</p>
<p>设置Tab的disabled则禁用该Tab项</p>
</div>
</Cell>
<div class="panel-split" />
<Cell class="son-panel" span="12">
<div class="code">
<markdown2 />
</div>
</Cell>
</Row>
<Row class="panel">
<Cell class="son-panel" span="12">
<div class="panel-case">
<Tabs value="apple">
<Tab label="标签一" name="android" icon="android">
<p>1</p>
</Tab>
<Tab label="标签二" name="apple" icon="apple">
<p>2</p>
</Tab>
<Tab label="标签三" name="windows" icon="windows">
<p>3</p>
</Tab>
<Wb-button slot="action" type="ghost">按钮一</Wb-button>
</Tabs>
</div>
<div class="panel-header">
<span>自定义动作</span>
</div>
<div class="panel-desc">
在Tab添加slot为action的元素显示在Tab的头部最右边
</div>
</Cell>
<div class="panel-split" />
<Cell class="son-panel" span="12">
<div class="code">
<markdown6 />
</div>
</Cell>
</Row>
<Row class="panel">
<Cell class="son-panel" span="12">
<div class="panel-case">
<Tabs @on-tab-remove="remove" @on-tab-change="change" value="apple" type="card" closable>
<Tab label="标签一" name="android">
<p>1</p>
</Tab>
<Tab label="标签二" name="apple">
<p>2</p>
</Tab>
<Tab label="标签三" name="windows">
<p>3</p>
</Tab>
</Tabs>
</div>
<div class="panel-header">
<span>card样式和可删除</span>
</div>
<div class="panel-desc">
<p>设置type='card'</p>
</div>
</Cell>
<div class="panel-split" />
<Cell class="son-panel" span="12">
<div class="code">
<markdown7 />
</div>
</Cell>
</Row>
<Row class="panel">
<Cell class="son-panel" span="12">
<div class="panel-case">
<Tabs ref="tabs" v-model="value" @on-tab-remove="remove" @on-tab-change="change" draggable closable>
<Tab v-for="i in arr" :label="copm(i)" :key="i">
<p>{{i}}</p>
</Tab>
<Wb-button slot="action" type="ghost">按钮一</Wb-button>
</Tabs>
</div>
<div class="panel-header">
<span>基础用法</span>
</div>
<div class="panel-desc">
<p>current表示Tabs当前激活的是那一项</p>
<p>如果Tab设置了key属性如果current等于那个key则激活那个如果Tab没有设置key属性则current可以根据Tab顺序来激活设置current=1则激活第一个</p>
</div>
</Cell>
<div class="panel-split" />
<Cell class="son-panel" span="12">
<div class="code">
<markdown1 />
</div>
</Cell>
</Row>
<h2>API</h2>
<h3>Tabs props</h3>
<markdown3 />
<h3>Tabs events</h3>
<markdown4 />
<h3>Tab props</h3>
<markdown5 />
</div>
</template>
<script type="text/ecmascript-6">
import Vue from 'vue';
import markdown1 from './md/tabs1.md';
import markdown2 from './md/tabs2.md';
import markdown3 from './md/tabs3.md';
import markdown4 from './md/tabs4.md';
import markdown5 from './md/tabs5.md';
import markdown6 from './md/tabs6.md';
import markdown7 from './md/tabs7.md';
export default {
components: {
markdown1, markdown2, markdown3, markdown4, markdown5, markdown6, markdown7
},
data() {
const arr = [];
for (let i = 1; i <= 10; i++) {
arr.push(`标签${i}`);
}
return {
value: '2',
value1: '2',
arr,
copm(i) {
return new Vue({
data() {
return {
i
};
},
render(h) {
return h('span', {
}, [`标签${this.i}`]);
}
// template: '<span>标签{{i}}</span>'
});
}
};
},
mounted() {
setTimeout(() => {
this.value = '1';
}, 3000);
},
methods: {
choose(index) {
this.$Toast(`选择第${index}`);
},
remove() {
console.log(arguments);
},
change({ from, to }) {
console.log(from, to);
const obj = this.arr[from];
this.arr.splice(from, 1);
this.arr.splice(to, 0, obj);
console.log(this.arr);
if (to == 2) {
this.$refs.tabs.reset();
}
}
}
};
</script>