1
1
<template >
2
2
<div >
3
- <CRow >
4
- <CCol sm =" 12" >
5
- <CCard >
6
- <CCardHeader >
7
- CTable component functionality presentation
8
- <div class =" card-header-actions" >
9
- <a
10
- href =" https://coreui.io/vue/docs/3.0/components/Table"
11
- class =" card-header-action"
12
- rel =" noreferrer noopener"
13
- target =" _blank"
14
- >
15
- <small class =" text-muted" >docs</small >
16
- </a >
17
- </div >
18
- </CCardHeader >
19
- <CCardBody >
20
- <CTable
21
- :items =" getItems()"
22
- :fields =" fields"
23
- index-column
24
- column-filter
25
- table-filter
26
- items-per-page-selects
27
- hover
28
- sortable
29
- footer
30
- pagination
31
- >
32
- <template #index-column =" {index } " >
33
- <td
34
- @click =" toggleDetails(index)"
35
- style =" cursor :pointer "
36
- class =" text-center"
37
- >
38
- <i
39
- class =" icons font-lg d-block cui-chevron-right"
40
- style =" transition : transform 0.4s "
41
- :style =" details.includes(index) ? 'transform:rotate(90deg)': ''"
42
- ></i >
43
- </td >
44
- </template >
45
- <template #status =" {item } " >
46
- <td >
47
- <CBadge :variant =" getBadge(item.status)" >
48
- {{item.status}}
49
- </CBadge >
50
- </td >
51
- </template >
52
- <template #show_details =" {item , index } " >
53
- <td class =" py-2" >
54
- <CButton
55
- variant =" outline-primary"
56
- square
57
- size =" sm"
58
- @click =" toggleDetails(index)"
59
- :text-html =" details.includes(index) ? 'Hide' : 'Show'"
60
- />
61
- </td >
62
- </template >
63
- <template #details =" {item , index } " >
64
- <CCollapse :show =" details.includes(index)" >
65
- <CCardBody >
66
- {{index + 1}} - {{item}}
67
- </CCardBody >
68
- </CCollapse >
69
- </template >
70
- </CTable >
71
- </CCardBody >
72
- </CCard >
73
- </CCol >
74
- </CRow >
75
-
76
-
77
3
<CRow >
78
4
<CCol lg =" 6" >
79
5
<CTableWrapper
80
- :items =" getItems ()"
6
+ :items =" getShuffledUsersData ()"
81
7
caption =" <i class='fa fa-align-justify'></i> Simple Table"
82
8
/>
83
9
</CCol >
84
10
85
11
<CCol lg =" 6" >
86
12
<CTableWrapper
87
- :items =" getItems ()"
13
+ :items =" getShuffledUsersData ()"
88
14
striped
89
15
caption =" <i class='fa fa-align-justify'></i> Striped Table"
90
16
/>
94
20
<CRow >
95
21
<CCol lg =" 6" >
96
22
<CTableWrapper
97
- :items =" getItems ()"
23
+ :items =" getShuffledUsersData ()"
98
24
small
99
25
caption =" <i class='fa fa-align-justify'></i> Condensed Table"
100
26
/>
101
27
</CCol >
102
28
103
29
<CCol lg =" 6" >
104
30
<CTableWrapper
105
- :items =" getItems ()"
31
+ :items =" getShuffledUsersData ()"
106
32
fixed
107
33
bordered
108
34
caption =" <i class='fa fa-align-justify'></i> Bordered Table"
113
39
<CRow >
114
40
<CCol sm =" 12" >
115
41
<CTableWrapper
116
- :items =" getItems ()"
42
+ :items =" getShuffledUsersData ()"
117
43
hover
118
44
striped
119
45
bordered
127
53
<CRow >
128
54
<CCol sm =" 12" >
129
55
<CTableWrapper
130
- :items =" getItems ()"
56
+ :items =" getShuffledUsersData ()"
131
57
hover
132
58
striped
133
59
bordered
143
69
144
70
<script >
145
71
import CTableWrapper from ' ./Table.vue'
146
-
147
- const fields = [
148
- { key: ' username' , _style: ' width:40%' },
149
- ' registered' ,
150
- { key: ' role' , _style: ' width:20%;' },
151
- { key: ' status' , _style: ' width:20%;' },
152
- { key: ' show_details' , label: ' ' , _style: ' width:1%' , notSortable: true , noFilter: true },
153
- ]
154
- const items = [
155
- { username: ' Samppa Nori' , registered: ' 2012/01/01' , role: ' Member' , status: ' Active' },
156
- { username: ' Estavan Lykos' , registered: ' 2012/02/01' , role: ' Staff' , status: ' Banned' },
157
- { username: ' Chetan Mohamed' , registered: ' 2012/02/01' , role: ' Admin' , status: ' Inactive' },
158
- { username: ' Derick Maximinus' , registered: ' 2012/03/01' , role: ' Member' , status: ' Pending' },
159
- { username: ' Friderik Dávid' , registered: ' 2012/01/21' , role: ' Staff' , status: ' Active' },
160
- { username: ' Yiorgos Avraamu' , registered: ' 2012/01/01' , role: ' Member' , status: ' Active' },
161
- { username: ' Avram Tarasios' , registered: ' 2012/02/01' , role: ' Staff' , status: ' Banned' , _classes: ' table-success' },
162
- { username: ' Quintin Ed' , registered: ' 2012/02/01' , role: ' Admin' , status: ' Inactive' },
163
- { username: ' Enéas Kwadwo' , registered: ' 2012/03/01' , role: ' Member' , status: ' Pending' },
164
- { username: ' Agapetus Tadeáš' , registered: ' 2012/01/21' , role: ' Staff' , status: ' Active' },
165
- { username: ' Carwyn Fachtna' , registered: ' 2012/01/01' , role: ' Member' , status: ' Active' , _classes: ' table-info' },
166
- { username: ' Nehemiah Tatius' , registered: ' 2012/02/01' , role: ' Staff' , status: ' Banned' },
167
- { username: ' Ebbe Gemariah' , registered: ' 2012/02/01' , role: ' Admin' , status: ' Inactive' },
168
- { username: ' Eustorgios Amulius' , registered: ' 2012/03/01' , role: ' Member' , status: ' Pending' },
169
- { username: ' Leopold Gáspár' , registered: ' 2012/01/21' , role: ' Staff' , status: ' Active' },
170
- { username: ' Pompeius René' , registered: ' 2012/01/01' , role: ' Member' , status: ' Active' },
171
- { username: ' Paĉjo Jadon' , registered: ' 2012/02/01' , role: ' Staff' , status: ' Banned' },
172
- { username: ' Micheal Mercurius' , registered: ' 2012/02/01' , role: ' Admin' , status: ' Inactive' },
173
- { username: ' Ganesha Dubhghall' , registered: ' 2012/03/01' , role: ' Member' , status: ' Pending' },
174
- { username: ' Hiroto Šimun' , registered: ' 2012/01/21' , role: ' Staff' , status: ' Active' },
175
- { username: ' Vishnu Serghei' , registered: ' 2012/01/01' , role: ' Member' , status: ' Active' },
176
- { username: ' Zbyněk Phoibos' , registered: ' 2012/02/01' , role: ' Staff' , status: ' Banned' },
177
- { username: ' Einar Randall' , registered: ' 2012/02/01' , role: ' Admin' , status: ' Inactive' , _classes: ' table-danger' },
178
- { username: ' Félix Troels' , registered: ' 2012/03/21' , role: ' Staff' , status: ' Active' },
179
- { username: ' Aulus Agmundr' , registered: ' 2012/01/01' , role: ' Member' , status: ' Pending' }
180
- ]
72
+ import usersData from ' ../users/UsersData'
181
73
182
74
export default {
183
75
name: ' Tables' ,
184
76
components: { CTableWrapper },
185
- data () {
186
- return {
187
- items,
188
- fields,
189
- details: [],
190
- }
191
- },
192
77
methods: {
193
- getBadge (status ) {
194
- return status === ' Active' ? ' success'
195
- : status === ' Inactive' ? ' secondary'
196
- : status === ' Pending' ? ' warning'
197
- : status === ' Banned' ? ' danger' : ' primary'
198
- },
199
78
shuffleArray (array ) {
200
79
for (let i = array .length - 1 ; i > 0 ; i-- ) {
201
80
let j = Math .floor (Math .random () * (i + 1 ))
@@ -205,12 +84,9 @@ export default {
205
84
}
206
85
return array
207
86
},
208
- toggleDetails (index ) {
209
- const position = this .details .indexOf (index)
210
- position !== - 1 ? this .details .splice (position, 1 ) : this .details .push (index)
211
- },
212
- getItems () {
213
- return this .shuffleArray (this .items .slice (0 ))
87
+
88
+ getShuffledUsersData () {
89
+ return this .shuffleArray (usersData .slice (0 ))
214
90
}
215
91
}
216
92
}
0 commit comments