|
|
@@ -10,8 +10,8 @@
|
|
10
|
10
|
<div class="btn btn-primary myBackground" @click="onNew()">New</div>
|
|
11
|
11
|
</div>
|
|
12
|
12
|
</div>
|
|
13
|
|
- <div v-if="items && items.length > 0">
|
|
14
|
|
- <table id="table" class="table table-bordered table-hover">
|
|
|
13
|
+ <div v-if="items && items.length > 0" class="table-responsive">
|
|
|
14
|
+ <table id="table" class="table table-sm table-bordered table-hover">
|
|
15
|
15
|
<thead>
|
|
16
|
16
|
<tr class="dnd-moved">
|
|
17
|
17
|
<th v-for="(column, c) in Columns" :key="c">
|
|
|
@@ -25,8 +25,8 @@
|
|
25
|
25
|
<tr
|
|
26
|
26
|
v-for="(item, i) in DisplayItems"
|
|
27
|
27
|
:key="i"
|
|
28
|
|
- class="text-left dnd-moved"
|
|
29
|
|
- @click="onRowClick(item)"
|
|
|
28
|
+ @click="onRowClick(item, i)"
|
|
|
29
|
+ :class="{'selected': isSelected(i), 'cursor-pointer': allowSelect}"
|
|
30
|
30
|
>
|
|
31
|
31
|
<td
|
|
32
|
32
|
v-for="(column, c) in Columns"
|
|
|
@@ -96,6 +96,12 @@ export default {
|
|
96
|
96
|
}
|
|
97
|
97
|
},
|
|
98
|
98
|
props: {
|
|
|
99
|
+ allowSelect: {
|
|
|
100
|
+ default: true,
|
|
|
101
|
+ },
|
|
|
102
|
+ allowMultipleSelect: {
|
|
|
103
|
+ default: false,
|
|
|
104
|
+ },
|
|
99
|
105
|
hideSearch: {
|
|
100
|
106
|
default: false,
|
|
101
|
107
|
},
|
|
|
@@ -115,6 +121,7 @@ export default {
|
|
115
|
121
|
},
|
|
116
|
122
|
data() {
|
|
117
|
123
|
return {
|
|
|
124
|
+ selectedItems: [],
|
|
118
|
125
|
showControl: false,
|
|
119
|
126
|
sortKey: '',
|
|
120
|
127
|
reverse: false,
|
|
|
@@ -125,6 +132,9 @@ export default {
|
|
125
|
132
|
};
|
|
126
|
133
|
},
|
|
127
|
134
|
methods: {
|
|
|
135
|
+ isSelected(i) {
|
|
|
136
|
+ return _.some(this.selectedItems, x => x === i);
|
|
|
137
|
+ },
|
|
128
|
138
|
onNew() {
|
|
129
|
139
|
this.$emit('onNew');
|
|
130
|
140
|
},
|
|
|
@@ -137,7 +147,15 @@ export default {
|
|
137
|
147
|
onDelete(item) {
|
|
138
|
148
|
this.$emit('onDelete', item);
|
|
139
|
149
|
},
|
|
140
|
|
- onRowClick(item) {
|
|
|
150
|
+ onRowClick(item, i) {
|
|
|
151
|
+ if (_.some(this.selectedItems, x => x === i)) {
|
|
|
152
|
+ this.selectedItems = this.selectedItems.filter(value => value !== i);
|
|
|
153
|
+ } else {
|
|
|
154
|
+ if (!this.allowMultipleSelect) {
|
|
|
155
|
+ this.selectedItems = [];
|
|
|
156
|
+ }
|
|
|
157
|
+ this.selectedItems.push(i);
|
|
|
158
|
+ }
|
|
141
|
159
|
this.$emit('onRowClick', item);
|
|
142
|
160
|
},
|
|
143
|
161
|
changeColumn(title, checked) {
|
|
|
@@ -257,4 +275,14 @@ th[draggable] a {
|
|
257
|
275
|
.over {
|
|
258
|
276
|
background-color: rgba(0, 0, 255, 0.35);
|
|
259
|
277
|
}
|
|
|
278
|
+.my-border {
|
|
|
279
|
+ border: solid 3px silver;
|
|
|
280
|
+}
|
|
|
281
|
+.selected {
|
|
|
282
|
+ background-color: rgba(96, 203, 235, 0.5);
|
|
|
283
|
+ border: white 2px double;
|
|
|
284
|
+}
|
|
|
285
|
+.selected:hover {
|
|
|
286
|
+ background-color: rgba(96, 203, 235, 0.85);
|
|
|
287
|
+}
|
|
260
|
288
|
</style>
|