43
43
44
44
45
45
<slot name =" over-table" />
46
- <div :class =" `position-relative ${notResponsive ? '' : 'table-responsive' }`" >
46
+ <div :class =" `position-relative ${responsive ? 'table-responsive ' : '' }`" >
47
47
<table :class =" tableClasses" >
48
48
<thead >
49
49
<tr >
74
74
</tr >
75
75
76
76
<tr v-if =" columnFilter" class =" table-sm" >
77
- <th v-if =" indexColumn" class =" pb-2 pl-2" >
78
- <CIcon
79
- v-if =" indexColumn !== 'noCleaner'"
80
- width =" 18"
81
- name =" ban"
82
- @click.native =" clear"
83
- :class =" isFiltered ? 'text-danger' : 'text-secondary'"
84
- title =" clear table"
85
- />
86
- </th >
77
+ <th v-if =" indexColumn" ></th >
87
78
<template v-for =" (colName , index ) in rawColumnNames " >
88
79
<th :class =" headerClass(index)" :key =" index" >
89
80
<slot :name =" `${rawColumnNames[index]}-filter`" >
90
81
<input
91
- v-if =" !fields || !fields[index].noFilter "
82
+ v-if =" !fields || !fields[index].filterable !== false "
92
83
class =" w-100 table-filter"
93
84
@input =" addColumnFilter(colName, $event.target.value)"
94
85
:value =" columnFilterVal[colName]"
118
109
:index =" firstItemIndex + itemIndex"
119
110
>
120
111
<td >
121
- {{indexColumn !== 'noIndexes' ? firstItemIndex + itemIndex + 1 : '' }}
112
+ {{ firstItemIndex + itemIndex + 1 }}
122
113
</td >
123
114
</slot >
124
115
<template v-for =" (colName , index ) in rawColumnNames " >
205
196
<slot name =" caption" />
206
197
</table >
207
198
199
+ <slot name =" loading" v-if =" loading" >
200
+ <div style =" position :absolute ;left :0 ;top :0 ;bottom :0 ;right :0 ;background-color :rgb (255 ,255 ,255 ,0.4 );" >
201
+ <div style =" position :absolute ;bottom :50% ;left :50% ;transform :translateX (-50% );" >
202
+ <CSpinner color =" success" />
203
+ </div >
204
+ </div >
205
+ </slot >
208
206
209
- <div
210
- v-if =" loading"
211
- :style =" topLoadingPosition"
212
- style =" position :absolute ;left :50% ;transform :translateX (-50% );"
213
- >
214
- <CSpinner
215
- color =" success"
216
- :style =" spinnerSize"
217
- role =" status"
218
- />
219
- </div >
220
207
</div >
221
208
<slot name =" under-table" />
222
209
@@ -253,13 +240,16 @@ export default {
253
240
default: 10
254
241
},
255
242
activePage: Number ,
256
- indexColumn: [ Boolean , String ] ,
243
+ indexColumn: Boolean ,
257
244
columnFilter: Boolean ,
258
245
pagination: [Boolean , Object ],
259
246
addTableClasses: [String , Array , Object ],
260
- notResponsive: Boolean ,
247
+ responsive: {
248
+ type: Boolean ,
249
+ default: true
250
+ },
261
251
sortable: Boolean ,
262
- small : Boolean ,
252
+ size : String ,
263
253
dark: Boolean ,
264
254
striped: Boolean ,
265
255
fixed: Boolean ,
@@ -371,8 +361,7 @@ export default {
371
361
' table' ,
372
362
this .addTableClasses ,
373
363
{
374
- ' is-loading' : this .loading ,
375
- ' table-sm' : this .small ,
364
+ [` table-${ this .size } ` ]: this .size ,
376
365
' table-dark' : this .dark ,
377
366
' table-striped' : this .striped ,
378
367
' b-table-fixed' : this .fixed ,
@@ -388,14 +377,6 @@ export default {
388
377
colspan () {
389
378
return this .rawColumnNames .length + (this .indexColumn ? 1 : 0 )
390
379
},
391
- topLoadingPosition () {
392
- const headerHeight = (this .columnFilter ? 38 : 0 ) + ( this .small ? 32 + 4 : 46 + 7 )
393
- return ` top:${ headerHeight} px`
394
- },
395
- spinnerSize () {
396
- const size = this .small ? 1.4 : this .currentItems .length === 1 ? 2 : 3
397
- return ` width:${ size + ' rem' } ;height:${ size + ' rem' } `
398
- },
399
380
isFiltered () {
400
381
return this .tableFilterVal || Object .values (this .columnFilterVal ).join (' ' )
401
382
}
@@ -428,16 +409,16 @@ export default {
428
409
addColumnFilter (colName , value ) {
429
410
this .$set (this .columnFilterVal , colName, value)
430
411
},
431
- clear () {
432
- this .tableFilterVal = ' '
433
- this .columnFilterVal = {}
434
- this .sorter .column = ' '
435
- this .sorter .asc = true
436
- const inputs = this .$el .getElementsByClassName (' table-filter' )
437
- for (let input of inputs) {
438
- input .value = ' '
439
- }
440
- },
412
+ // clear () {
413
+ // this.tableFilterVal = ''
414
+ // this.columnFilterVal = {}
415
+ // this.sorter.column = ''
416
+ // this.sorter.asc = true
417
+ // const inputs = this.$el.getElementsByClassName('table-filter')
418
+ // for (let input of inputs) {
419
+ // input.value = ''
420
+ // }
421
+ // },
441
422
pretifyName (name ) {
442
423
return name .replace (/ [-_. ] / g , ' ' )
443
424
.replace (/ + / g , ' ' )
@@ -457,7 +438,7 @@ export default {
457
438
return classes
458
439
},
459
440
isSortable (index ) {
460
- return this .sortable && (! this .fields || ! this .fields [index].notSortable )
441
+ return this .sortable && (! this .fields || this .fields [index].sortable !== false )
461
442
},
462
443
headerClass (index ) {
463
444
const fields = this .fields
@@ -505,9 +486,6 @@ export default {
505
486
-webkit-transition : transform 0.3s ;
506
487
transition : transform 0.3s ;
507
488
}
508
- .is-loading {
509
- opacity : .4 ;
510
- }
511
489
.arrow-position {
512
490
right : 0 ;
513
491
top : 50% ;
0 commit comments