File tree 10 files changed +209
-74
lines changed
10 files changed +209
-74
lines changed Original file line number Diff line number Diff line change 68
68
<lay-menu-child-item title =" 按钮" :to =" {name: 'button'}" ></lay-menu-child-item >
69
69
<lay-menu-child-item title =" 表单" :to =" {name: 'form'}" ></lay-menu-child-item >
70
70
<lay-menu-child-item title =" 导航/面包屑" :to =" {name: 'nav'}" ></lay-menu-child-item >
71
+ <lay-menu-child-item title =" 选项卡" :to =" {name: 'tabs'}" ></lay-menu-child-item >
71
72
<lay-menu-child-item title =" 进度条" :to =" {name: 'progress'}" ></lay-menu-child-item >
72
73
<lay-menu-child-item title =" 面板" :to =" {name: 'panel'}" ></lay-menu-child-item >
73
74
<lay-menu-child-item title =" 徽章" :to =" {name: 'badge'}" ></lay-menu-child-item >
Original file line number Diff line number Diff line change
1
+ /**
2
+ * kouchao 创建于 2018/9/3
3
+ */
4
+
5
+ import LayTabPane from '../tabs/src/tab-pane' ;
6
+
7
+ /* istanbul ignore next */
8
+ LayTabPane . install = function ( Vue ) {
9
+ Vue . component ( LayTabPane . name , LayTabPane ) ;
10
+ } ;
11
+
12
+ export default LayTabPane ;
Original file line number Diff line number Diff line change
1
+ /**
2
+ * kouchao 创建于 2018/9/3
3
+ */
4
+
5
+ import LayTabs from './src/tabs' ;
6
+
7
+ /* istanbul ignore next */
8
+ LayTabs . install = function ( Vue ) {
9
+ Vue . component ( LayTabs . name , LayTabs ) ;
10
+ } ;
11
+
12
+ export default LayTabs ;
Original file line number Diff line number Diff line change
1
+ <template >
2
+ <div class =" layui-tab-item"
3
+ :class =" {
4
+ 'layui-show': name == $parent.value
5
+ }" >
6
+ <slot ></slot >
7
+ </div >
8
+ </template >
9
+
10
+ <script >
11
+ export default {
12
+ name: ' LayTabPane' ,
13
+ props: {
14
+ title: String ,
15
+ name: String
16
+ }
17
+ }
18
+ </script >
19
+
20
+ <style scoped>
21
+
22
+ </style >
Original file line number Diff line number Diff line change
1
+ <template >
2
+ <div class =" layui-tab" >
3
+ <ul class =" layui-tab-title" >
4
+ <li v-for =" item in titles"
5
+ :class =" {
6
+ 'layui-this': value == item.name
7
+ }"
8
+ @click =" handleClick(item.name)" >
9
+ {{item.title}}
10
+ <i v-if =" closable"
11
+ class =" layui-icon layui-unselect layui-tab-close layui-icon-close"
12
+ @click.stop =" handleClose(item.name)" ></i >
13
+ </li >
14
+
15
+ </ul >
16
+ <div class =" layui-tab-content" >
17
+ <slot ></slot >
18
+ </div >
19
+
20
+ </div >
21
+
22
+ </template >
23
+
24
+ <script >
25
+ export default {
26
+ name: ' LayTabs' ,
27
+ props: {
28
+ activeName: String ,
29
+ value: String ,
30
+ closable: {
31
+ type: Boolean ,
32
+ default () {
33
+ return false
34
+ }
35
+ }
36
+ },
37
+ data (){
38
+ return {
39
+ titles: []
40
+ }
41
+
42
+ },
43
+ methods: {
44
+ handleClick (value ){
45
+ this .$emit (' input' , value)
46
+ },
47
+ handleClose (value ){
48
+ this .titles = this .titles .filter (o => o .name != value)
49
+ this .value = this .titles .length ? this .titles [0 ].name : ' '
50
+ this .$emit (' close' , value)
51
+ }
52
+ },
53
+ mounted () {
54
+ this .slots = this .$slots
55
+ this .titles = this .$slots .default .map (o => {
56
+ return {
57
+ title: o .child .title ,
58
+ name: o .child .name
59
+ }
60
+ })
61
+ },
62
+ watch: {
63
+ value (){
64
+ this .$emit (' input' , this .value )
65
+ }
66
+
67
+ }
68
+ }
69
+ </script >
70
+
71
+ <style scoped>
72
+ i .right {
73
+ padding-left : 4px ;
74
+ }
75
+
76
+ i .left {
77
+ padding-right : 4px ;
78
+ }
79
+
80
+ </style >
Load Diff This file was deleted.
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 5
5
import LayRow from '@/components/row'
6
6
import LayCol from '@/components/col'
7
7
import LayContainer from '@/components/container'
8
-
9
8
import LayButton from '@/components/button'
10
9
import LayButtonGroup from '@/components/button-group'
11
10
import LayButtonContainer from '@/components/button-container'
12
-
13
11
import LayForm from '@/components/form'
14
12
import LayFormItem from '@/components/form-item'
15
13
import LayRadio from '@/components/radio'
16
14
import LayInput from '@/components/input'
17
15
import LayCheckbox from '@/components/checkbox'
18
16
import LaySelect from '@/components/select'
19
17
import LayTextarea from '@/components/textarea'
20
-
21
- import tabs from '@/components/tabs/tabs'
22
- import tabPane from '@/components/tabs/tab-pane'
23
-
18
+ import LayTabs from '@/components/tabs'
19
+ import LayTabPane from '@/components/tab-pane'
24
20
import LayLine from '@/components/line'
25
-
26
21
import LayMenu from '@/components/menu'
27
22
import LayMenuItem from '@/components/menu-item'
28
23
import LayMenuChildItem from '@/components/menu-child-item'
@@ -67,10 +62,9 @@ const layui = {
67
62
LayCheckbox ,
68
63
LaySelect ,
69
64
LayTextarea ,
70
- tabs ,
71
- tabPane ,
65
+ LayTabs ,
66
+ LayTabPane ,
72
67
LayLine ,
73
-
74
68
LayMenu ,
75
69
LayMenuItem ,
76
70
LayMenuChildItem ,
Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import Progress from './views/Progress.vue'
12
12
import Panel from './views/Panel.vue'
13
13
import Timeline from './views/Timeline.vue'
14
14
import Table from './views/Table.vue'
15
+ import Tabs from './views/Tabs.vue'
15
16
16
17
Vue . use ( Router )
17
18
@@ -76,6 +77,11 @@ export default new Router({
76
77
path : '/table' ,
77
78
name : 'table' ,
78
79
component : Table
80
+ } ,
81
+ {
82
+ path : '/tabs' ,
83
+ name : 'tabs' ,
84
+ component : Tabs
79
85
}
80
86
81
87
Original file line number Diff line number Diff line change
1
+ <template >
2
+ <div >
3
+ <lay-block title =" 默认风格的Tab" ></lay-block >
4
+ <lay-tabs v-model =" activeName" >
5
+ <lay-tab-pane title =" 网站设置" name =" first" >
6
+ 1. 高度默认自适应,也可以随意固宽。
7
+ <br >2. Tab进行了响应式处理,所以无需担心数量多少。
8
+ </lay-tab-pane >
9
+ <lay-tab-pane title =" 用户管理" name =" second" >
10
+ 内容2
11
+ </lay-tab-pane >
12
+ <lay-tab-pane title =" 权限分配" name =" third" >
13
+ 内容3
14
+ </lay-tab-pane >
15
+ <lay-tab-pane title =" 商品管理" name =" fourth" >
16
+ 内容4
17
+ </lay-tab-pane >
18
+ <lay-tab-pane title =" 订单管理" name =" fifth" >
19
+ 内容5
20
+ </lay-tab-pane >
21
+ </lay-tabs >
22
+ <lay-block title =" 动态操作Tab" style =" margin-top : 50px ;" ></lay-block >
23
+ <lay-tabs v-model =" activeName" closable @close =" handleClose" >
24
+ <lay-tab-pane v-for =" item in tabs" :title =" item.title" :name =" item.name" >
25
+ {{item.content}}
26
+ </lay-tab-pane >
27
+
28
+ </lay-tabs >
29
+ <!-- <lay-button @click="handleAddTab">新增Tab项</lay-button>-->
30
+ </div >
31
+ </template >
32
+
33
+ <script >
34
+ export default {
35
+ name: " Tabs" ,
36
+ data (){
37
+ return {
38
+ activeName: ' first' ,
39
+ tabs: [{
40
+ name: ' first' ,
41
+ title: ' 网站设置' ,
42
+ content: ' 内容1'
43
+ }, {
44
+ name: ' second' ,
45
+ title: ' 用户管理' ,
46
+ content: ' 内容2'
47
+ }, {
48
+ name: ' third' ,
49
+ title: ' 权限分配' ,
50
+ content: ' 内容3'
51
+ }]
52
+ }
53
+ },
54
+ methods: {
55
+ handleClose (value ){
56
+ console .log (value)
57
+
58
+ },
59
+ handleAddTab (){
60
+ this .tabs .push ({
61
+ name: ' second' + 1 ,
62
+ title: ' 用户管理' ,
63
+ content: ' 内容2'
64
+ })
65
+ }
66
+ }
67
+ }
68
+ </script >
69
+
70
+ <style scoped>
71
+
72
+ </style >
You can’t perform that action at this time.
0 commit comments