11<template >
22 <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-
773 <CRow >
784 <CCol lg =" 6" >
795 <CTableWrapper
80- :items =" getItems ()"
6+ :items =" getShuffledUsersData ()"
817 caption =" <i class='fa fa-align-justify'></i> Simple Table"
828 />
839 </CCol >
8410
8511 <CCol lg =" 6" >
8612 <CTableWrapper
87- :items =" getItems ()"
13+ :items =" getShuffledUsersData ()"
8814 striped
8915 caption =" <i class='fa fa-align-justify'></i> Striped Table"
9016 />
9420 <CRow >
9521 <CCol lg =" 6" >
9622 <CTableWrapper
97- :items =" getItems ()"
23+ :items =" getShuffledUsersData ()"
9824 small
9925 caption =" <i class='fa fa-align-justify'></i> Condensed Table"
10026 />
10127 </CCol >
10228
10329 <CCol lg =" 6" >
10430 <CTableWrapper
105- :items =" getItems ()"
31+ :items =" getShuffledUsersData ()"
10632 fixed
10733 bordered
10834 caption =" <i class='fa fa-align-justify'></i> Bordered Table"
11339 <CRow >
11440 <CCol sm =" 12" >
11541 <CTableWrapper
116- :items =" getItems ()"
42+ :items =" getShuffledUsersData ()"
11743 hover
11844 striped
11945 bordered
12753 <CRow >
12854 <CCol sm =" 12" >
12955 <CTableWrapper
130- :items =" getItems ()"
56+ :items =" getShuffledUsersData ()"
13157 hover
13258 striped
13359 bordered
14369
14470<script >
14571import 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'
18173
18274export default {
18375 name: ' Tables' ,
18476 components: { CTableWrapper },
185- data () {
186- return {
187- items,
188- fields,
189- details: [],
190- }
191- },
19277 methods: {
193- getBadge (status ) {
194- return status === ' Active' ? ' success'
195- : status === ' Inactive' ? ' secondary'
196- : status === ' Pending' ? ' warning'
197- : status === ' Banned' ? ' danger' : ' primary'
198- },
19978 shuffleArray (array ) {
20079 for (let i = array .length - 1 ; i > 0 ; i-- ) {
20180 let j = Math .floor (Math .random () * (i + 1 ))
@@ -205,12 +84,9 @@ export default {
20584 }
20685 return array
20786 },
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 ))
21490 }
21591 }
21692}
0 commit comments