+43
-28
lines changedFilter options
+43
-28
lines changed Original file line number Diff line number Diff line change
@@ -27,8 +27,8 @@
27
27
<tbody v-else-if="value.length">
28
28
<md-table-row-ghost
29
29
v-for="(item, index) in value"
30
-
:key="getRowId(item[mdModelId])"
31
-
:md-id="getRowId(item[mdModelId])"
30
+
:key="getRowId(item, mdModelId)"
31
+
:md-id="getRowId(item, mdModelId)"
32
32
:md-index="index"
33
33
:md-item="item">
34
34
<slot name="md-table-row" :item="item" />
@@ -153,7 +153,8 @@
153
153
getModel: this.getModel,
154
154
getModelItem: this.getModelItem,
155
155
selectingMode: null
156
-
}
156
+
},
157
+
itemsUuidMap: new WeakMap()
157
158
}
158
159
},
159
160
computed: {
@@ -263,12 +264,21 @@
263
264
emitEvent (eventName, value) {
264
265
this.$emit(eventName, value)
265
266
},
266
-
getRowId (id) {
267
+
getRowId (item, propertyName) {
268
+
let id = item[propertyName]
269
+
267
270
if (id) {
268
271
return id
269
272
}
270
273
271
-
return 'md-row-' + MdUuid()
274
+
id = this.itemsUuidMap.get(item)
275
+
276
+
if (!id) {
277
+
id = 'md-row-' + MdUuid()
278
+
this.itemsUuidMap.set(item, id)
279
+
}
280
+
281
+
return id
272
282
},
273
283
setScroll ($event) {
274
284
raf(() => {
Original file line number Diff line number Diff line change
@@ -20,8 +20,11 @@
20
20
isSelected: false
21
21
}),
22
22
watch: {
23
-
value () {
24
-
this.isSelected = this.value
23
+
value: {
24
+
immediate: true,
25
+
handler (value) {
26
+
this.isSelected = value
27
+
}
25
28
}
26
29
},
27
30
methods: {
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
1
1
<template>
2
2
<tr class="md-table-row" :class="rowClasses" @click="onClick" v-on="$listeners">
3
3
<md-table-cell-selection
4
-
v-model="isSelected"
4
+
:value="isMultipleSelected"
5
+
@input="selected => selected ? addSelection() : removeSelection()"
5
6
:md-disabled="mdDisabled"
6
7
:md-selectable="mdSelectable === 'multiple'"
7
8
:md-row-id="mdIndex"
@@ -32,12 +33,14 @@
32
33
},
33
34
inject: ['MdTable'],
34
35
data: () => ({
35
-
index: null,
36
-
isSelected: false
36
+
index: null
37
37
}),
38
38
computed: {
39
39
selectableCount () {
40
-
return Object.keys(this.MdTable.selectable).length
40
+
return this.MdTable.selectable.length
41
+
},
42
+
isMultipleSelected () {
43
+
return this.MdTable.selectedItems.includes(this.mdItem)
41
44
},
42
45
isSingleSelected () {
43
46
return this.MdTable.singleSelection === this.mdItem
@@ -52,7 +55,7 @@
52
55
if (this.MdTable.hasValue) {
53
56
return {
54
57
'md-has-selection': !this.mdDisabled && (this.mdAutoSelect || this.hasSingleSelection),
55
-
'md-selected': this.isSelected,
58
+
'md-selected': this.isMultipleSelected,
56
59
'md-selected-single': this.isSingleSelected
57
60
}
58
61
}
@@ -69,18 +72,6 @@
69
72
this.addSelectableItem()
70
73
}
71
74
},
72
-
isSelected (val) {
73
-
let noChange = (val && this.isInSelectedItems) || (!val && !this.isInSelectedItems)
74
-
75
-
if (noChange) {
76
-
return false
77
-
}
78
-
79
-
this.MdTable.manageItemSelection(this.mdItem)
80
-
},
81
-
isInSelectedItems (val) {
82
-
this.isSelected = val
83
-
},
84
75
mdSelectable () {
85
76
this.MdTable.selectingMode = this.mdSelectable
86
77
},
@@ -100,7 +91,17 @@
100
91
}
101
92
},
102
93
toggleSelection () {
103
-
this.isSelected = !this.isSelected
94
+
this.MdTable.manageItemSelection(this.mdItem)
95
+
},
96
+
addSelection () {
97
+
if (!this.isMultipleSelected) {
98
+
this.MdTable.selectedItems.push(this.mdItem)
99
+
}
100
+
},
101
+
removeSelection () {
102
+
if (this.isMultipleSelected) {
103
+
this.MdTable.selectedItems = this.MdTable.selectedItems.filter(target => target !== this.mdItem)
104
+
}
104
105
},
105
106
selectRowIfSingle () {
106
107
if (this.MdTable.singleSelection === this.mdItem) {
@@ -132,8 +133,10 @@
132
133
}
133
134
},
134
135
created () {
135
-
this.addSelectableItem()
136
-
this.MdTable.selectingMode = this.mdSelectable
136
+
this.$nextTick(() => {
137
+
this.addSelectableItem()
138
+
this.MdTable.selectingMode = this.mdSelectable
139
+
})
137
140
},
138
141
beforeDestroy () {
139
142
this.removeSelectableItem()
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
1
1
<script>
2
2
export default {
3
3
name: 'MdTableRowGhost',
4
-
abstract: true,
5
4
props: {
6
5
mdIndex: [String, Number],
7
6
mdId: [String, Number],
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4