Skip to content

Commit 31afbc0

Browse files
authored
Update mixin-selectable.js
1 parent 240fef6 commit 31afbc0

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/components/table/helpers/mixin-selectable.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export default {
5252
selectedRows(selectedRows, oldVal) {
5353
if (this.selectable && !looseEqual(selectedRows, oldVal)) {
5454
let items = []
55+
// forEach skips over non-existant indicies (on sparse arrays)
5556
selectedRows.forEach((v, idx) => {
5657
if (v) {
5758
items.push(this.computedItems[idx])
@@ -107,11 +108,12 @@ export default {
107108
this.clearSelected()
108109
return
109110
}
110-
let selected = !this.selectedRows[index]
111+
let selectedRows = this.selectedRows.slice()
112+
let selected = !selectedRows[index]
111113
let mode = this.selectMode
112114
// Note 'multi' mode needs no special handling
113115
if (mode === 'single') {
114-
this.selectedRows = []
116+
selectedRows = []
115117
} else if (mode === 'range') {
116118
if (this.selectedLastRow > -1 && evt.shiftKey) {
117119
// range
@@ -120,22 +122,22 @@ export default {
120122
idx <= Math.max(this.selectedLastRow, index);
121123
idx++
122124
) {
123-
this.selectedRows[idx] = true
124125
// this.$set(this.selectedRows, idx, true)
126+
selectedRows[idx] = true
125127
}
126128
selected = true
127129
} else {
128130
if (!(evt.ctrlKey || evt.metaKey)) {
129131
// clear range selection if any
130-
this.selectedRows = []
132+
selectedRows = []
131133
selected = true
132134
}
133135
this.selectedLastRow = selected ? index : -1
134136
}
135137
}
136138
// this.$set(this.selectedRows, index, selected)
137-
this.selectedRows[index] = selected
138-
this.selectedRows = this.selectedRows.slice()
139+
selectedRows[index] = selected
140+
this.selectedRows = selectedRows
139141
}
140142
}
141143
}

0 commit comments

Comments
 (0)