6
6
=====================================================================================
7
7
-->
8
8
<v-data-table
9
- :class =" ['mew-table', hasSelect ? 'mew-select-table' : '', hasColor ? 'mew-super-primary-table' : '']"
10
- :items =" tableData"
11
- :item-key =" tableHeaders[0].value"
9
+ v-model =" selected"
10
+ :class =" [
11
+ 'mew-table',
12
+ hasSelect ? 'mew-select-table' : '',
13
+ hasColor ? 'mew-super-primary-table' : '',
14
+ ]"
15
+ :items =" indexedItems"
16
+ item-key =" id"
12
17
:headers =" tableHeaders"
13
18
:show-select =" hasSelect"
14
- :hide-default-footer =" tableData && tableData .length <= 10"
19
+ :hide-default-footer =" indexedItems && indexedItems .length <= 10"
15
20
:items-per-page =" 10"
16
21
:loader-height =" 0"
17
22
:loading =" loading"
18
23
:no-data-text =" noDataText"
19
24
@item-selected =" onSelect"
20
25
@toggle-select-all =" onSelectAll"
21
- >
26
+ >
22
27
<!--
23
28
=====================================================================================
24
29
Loading Mew Table
27
32
<template
28
33
v-if =" loading "
29
34
#loading
30
- >
35
+ >
31
36
<v-skeleton-loader
32
37
class =" py-1"
33
38
width =" 100%"
60
65
-->
61
66
<template
62
67
v-if =" ! loading "
63
- v-slot :[` item.token ` ]=" {item } "
68
+ v-slot :[` item.token ` ]=" { item } "
64
69
>
65
70
<div class =" d-flex align-center" >
66
71
<img
90
95
inset
91
96
:color =" item.toggle.color"
92
97
>
93
- <template #label >
98
+ <template #label >
94
99
<span
95
100
v-if =" item.toggle.label"
96
- :class =" item.toggle.color + '--text font-weight-regular mew-body capitalize'"
101
+ :class ="
102
+ item.toggle.color +
103
+ '--text font-weight-regular mew-body capitalize'
104
+ "
97
105
>{{ item.toggle.label }}</span >
98
106
</template >
99
107
</v-switch >
116
124
/> -->
117
125
<span
118
126
v-if =" item.change !== ''"
119
- :class =" [item.status === '+' ? 'primary--text' : 'error--text', 'd-flex']"
120
- >{{ item.change + '%' }}
127
+ :class =" [
128
+ item.status === '+' ? 'primary--text' : 'error--text',
129
+ 'd-flex',
130
+ ]"
131
+ >{{ item.change + "%" }}
121
132
<v-icon
122
133
class =" primary--text"
123
134
v-if =" item.status === '+'"
159
170
<mew-button
160
171
v-for =" (button, idx) in item.callToAction"
161
172
:key =" idx"
162
- :class =" idx !== item.callToAction.length - 1 && item.callToAction.length > 1? 'mr-1' : ''"
173
+ :class ="
174
+ idx !== item.callToAction.length - 1 &&
175
+ item.callToAction.length > 1
176
+ ? 'mr-1'
177
+ : ''
178
+ "
163
179
@click.native =" button.method(item)"
164
180
:title =" button.title"
165
181
:disabled =" button.disabled"
231
247
<div
232
248
v-on =" on"
233
249
class =" address-container font-weight-medium mew-address d-flex"
234
- >
250
+ >
235
251
<span
236
252
class =" mew-address truncate"
237
253
v-if =" item.resolvedAddr"
238
- >{{ item.address }}</span >
254
+ >{{
255
+ item.address
256
+ }}</span >
239
257
<mew-transform-hash
240
258
v-if =" !item.resolvedAddr"
241
259
:hash =" item.address"
246
264
/>
247
265
<a
248
266
class =" address-link"
249
- :href =" 'https://www.ethvm.com/address/' + (item.resolvedAddr ? item.resolvedAddr : item.address)"
267
+ :href ="
268
+ 'https://www.ethvm.com/address/' +
269
+ (item.resolvedAddr ? item.resolvedAddr : item.address)
270
+ "
250
271
target =" _blank"
251
272
>
252
- <v-icon
253
- class =" call-made"
254
- >
273
+ <v-icon class =" call-made" >
255
274
mdi-call-made
256
275
</v-icon >
257
276
</a >
@@ -277,69 +296,102 @@ export default {
277
296
MewBlockie,
278
297
MewButton,
279
298
MewTransformHash,
280
- MewCopy
299
+ MewCopy,
281
300
},
282
301
props: {
283
302
/**
284
- * Applies skeleton loader
303
+ * Selected values passable
304
+ * from parent so values
305
+ * can be preselected
306
+ */
307
+ selectedValues: {
308
+ type: Array ,
309
+ default : () => [],
310
+ },
311
+ /**
312
+ * Applies skeleton loader
285
313
* note: tableData has to be empty
286
314
* for the prop to work correctly
287
315
*/
288
316
loading: {
289
317
type: Boolean ,
290
- default: false
318
+ default: false ,
291
319
},
292
320
/**
293
321
* The table headers.
294
322
*/
295
323
tableHeaders: {
296
324
type: Array ,
297
- default : () => []
325
+ default : () => [],
298
326
},
299
327
/**
300
328
* The table data.
301
329
*/
302
330
tableData: {
303
331
type: Array ,
304
- default : () => []
332
+ default : () => [],
305
333
},
306
334
/**
307
- * Applies select button to each row.
335
+ * Applies select button to each row.
308
336
*/
309
337
hasSelect: {
310
338
type: Boolean ,
311
- default: false
339
+ default: false ,
312
340
},
313
341
/**
314
342
* Applies superPrimary color to table.
315
343
*/
316
344
hasColor: {
317
345
type: Boolean ,
318
- default: false
346
+ default: false ,
319
347
},
320
348
/**
321
349
* No data text
322
350
*/
323
351
noDataText: {
324
352
type: String ,
325
- default: ' '
326
- }
353
+ default: ' ' ,
354
+ },
355
+ },
356
+ data () {
357
+ return {
358
+ selected: [],
359
+ };
360
+ },
361
+ computed: {
362
+ /**
363
+ * adds id to tableData items
364
+ */
365
+ indexedItems () {
366
+ return this .tableData .map ((item , index ) => ({
367
+ id: index,
368
+ ... item,
369
+ }));
370
+ },
371
+ },
372
+ watch: {
373
+ selectedValues: {
374
+ handler : function (newVal ) {
375
+ this .selected = newVal;
376
+ },
377
+ deep: true ,
378
+ },
327
379
},
328
380
methods: {
329
381
/**
330
382
* emits selectedRow when selecting a checkbox
331
383
*/
332
384
onSelectAll (item ) {
333
- this .$emit (' selectedAll' , item)
385
+ this .$emit (' selectedAll' , item);
334
386
},
335
387
/**
336
388
* emits selectedRow when selecting a checkbox
337
389
*/
338
390
onSelect (item ) {
339
- this .$emit (' selectedRow' , item)
391
+ this .$emit (' selectedRow' , item);
340
392
},
341
- }
342
- }
393
+ },
394
+ };
343
395
</script >
344
396
345
397
<style lang="scss">
@@ -381,14 +433,14 @@ export default {
381
433
font-size : 18px ;
382
434
}
383
435
384
- /* *
436
+ /* *
385
437
* Table footer
386
438
*/
387
439
.v-data-footer {
388
440
border-top : none ;
389
441
}
390
442
391
- /* *
443
+ /* *
392
444
* Checkbox (not active)
393
445
*/
394
446
.v-simple-checkbox {
@@ -410,7 +462,6 @@ export default {
410
462
color : inherit ;
411
463
}
412
464
413
-
414
465
& .mew-select-table {
415
466
.v-data-table__selected {
416
467
background : inherit !important ;
@@ -420,7 +471,7 @@ export default {
420
471
}
421
472
}
422
473
423
- /* *
474
+ /* *
424
475
* Super primary color table
425
476
*/
426
477
& .mew-super-primary-table {
@@ -446,7 +497,8 @@ export default {
446
497
.v-data-table__mobile-row__cell {
447
498
width : 60% ;
448
499
449
- div , a {
500
+ div ,
501
+ a {
450
502
justify-content : flex-end ;
451
503
}
452
504
}
@@ -456,4 +508,4 @@ export default {
456
508
width : 100% ;
457
509
}
458
510
}
459
- </style >
511
+ </style >
1 commit comments
github-actions[bot] commentedon Jun 2, 2022
Copy of this build can be found at
https://mewcomponents.mewbuilds.com/3f2c3085c243e02169e8ef89c8d3b02d1777b9fe/index.html
https://www.cloudflare-ipfs.com/ipfs/
Virus Total analysis
https://www.virustotal.com/gui/file/f2209b75912d805247f31923a15e8ffa30e527a4fa5e1cdaa3cc356f72faf4c3