Skip to content

Commit 554001f

Browse files
committed
Merge remote-tracking branch 'Niksac/develop' into develop
2 parents 55f7b0d + 5328c88 commit 554001f

File tree

1 file changed

+33
-46
lines changed

1 file changed

+33
-46
lines changed

src/components/VueBootstrap4Table.vue

Lines changed: 33 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@
173173
|
174174
</slot>
175175
</template>
176-
<template v-if="selected_rows_info">
176+
<template v-if="selected_rows_info && checkbox_rows">
177177
<slot name="selected-rows-info" :selectedItemsCount="selectedItemsCount">
178178
{{selectedItemsCount}} rows selected
179179
</slot>
@@ -503,20 +503,37 @@ export default {
503503
this.sort();
504504
}
505505
},
506-
isShiftSelection(shiftKey,rowIndex){
507-
return (shiftKey == true) && (this.lastSelectedItemIndex != null) && (this.lastSelectedItemIndex != rowIndex);
508-
},
509506
handleAddRow(payload) {
510-
let row = this.vbt_rows[payload.rowIndex];
511-
if (this.isShiftSelection(payload.shiftKey,payload.rowIndex)) {
512-
let rows = this.getShiftSelectionRows(payload.rowIndex);
513-
rows.forEach((_row) => {this.addSelectedItem(_row)});
514-
} else {
515-
this.addSelectedItem(row);
507+
if (payload.shiftKey) {
508+
this.handleShiftSelection(payload);
509+
return;
516510
}
517511
518-
this.$emit('on-select-row', {"selected_items":cloneDeep(this.selected_items) ,"selected_item":row});
512+
let row = this.vbt_rows[payload.rowIndex];
513+
this.lastSelectedItemIndex = payload.rowIndex;
514+
this.addSelectedItem(row);
515+
this.checkAllRowsSelected();
516+
},
517+
handleRemoveRow(payload) {
518+
if (payload.shiftKey) {
519+
this.handleShiftSelection(payload);
520+
return;
521+
}
519522
523+
let row = this.vbt_rows[payload.rowIndex];
524+
this.removeSelectedItem(row);
525+
this.allRowsSelected = false;
526+
},
527+
handleShiftSelection(payload) {
528+
let lastSelectedItemIndex = (this.lastSelectedItemIndex != null) ? this.lastSelectedItemIndex : payload.rowIndex;
529+
let start = Math.min(lastSelectedItemIndex, payload.rowIndex);
530+
let end = Math.max(lastSelectedItemIndex, payload.rowIndex);
531+
let rows = this.vbt_rows.slice(start,end + 1);
532+
this.unSelectAllItems();
533+
rows.forEach((_row) => {this.addSelectedItem(_row)});
534+
this.checkAllRowsSelected();
535+
},
536+
checkAllRowsSelected() {
520537
let difference = [];
521538
522539
if (this.server_mode && !this.hasUniqueId) {
@@ -525,31 +542,10 @@ export default {
525542
difference = differenceBy(this.vbt_rows, this.selected_items, this.uniqueId);
526543
}
527544
528-
if (difference.length == 0) {
529-
this.allRowsSelected = true;
530-
// EventBus.$emit('select-select-all-items-checkbox', "from main");
531-
} else {
532-
this.allRowsSelected = false;
533-
// EventBus.$emit('unselect-select-all-items-checkbox', "from main");
534-
}
535-
536-
this.lastSelectedItemIndex = payload.rowIndex;
537-
},
538-
handleRemoveRow(payload) {
539-
let row = this.vbt_rows[payload.rowIndex];
540-
if (this.isShiftSelection(payload.shiftKey,payload.rowIndex)) {
541-
let rows = this.getShiftSelectionRows(payload.rowIndex);
542-
rows.forEach((_row) => {this.removeSelectedItem(_row)});
543-
} else {
544-
this.removeSelectedItem(row);
545-
}
546-
this.$emit('on-unselect-row', {"selected_items":cloneDeep(this.selected_items),"unselected_item":row});
547-
// EventBus.$emit('unselect-select-all-items-checkbox');
548-
this.allRowsSelected = false;
549-
this.lastSelectedItemIndex = payload.rowIndex;
545+
this.allRowsSelected = difference.length == 0;
550546
},
551-
addSelectedItem(item) {
552547
548+
addSelectedItem(item) {
553549
let index = -1;
554550
if (this.server_mode && !this.hasUniqueId) {
555551
index = findIndex(this.selected_items, (selected_item) => {return isEqual(selected_item, item)});
@@ -560,6 +556,8 @@ export default {
560556
if (index == -1) {
561557
this.selected_items.push(item);
562558
}
559+
560+
this.$emit('on-select-row', {"selected_items":_.cloneDeep(this.selected_items) ,"selected_item":item});
563561
},
564562
selectAllItems() {
565563
@@ -601,18 +599,7 @@ export default {
601599
return true;
602600
}
603601
});
604-
},
605-
getShiftSelectionRows(rowIndex) {
606-
let start = 0;
607-
let end = 0;
608-
if (this.lastSelectedItemIndex < rowIndex) {
609-
start = this.lastSelectedItemIndex;
610-
end = rowIndex + 1;
611-
} else if (this.lastSelectedItemIndex > rowIndex) {
612-
start = rowIndex;
613-
end = this.lastSelectedItemIndex + 1;
614-
}
615-
return this.vbt_rows.slice(start,end);
602+
this.$emit('on-unselect-row', {"selected_items":_.cloneDeep(this.selected_items),"unselected_item":item});
616603
},
617604
updateFilter(payload) {
618605
let event = payload.event;

0 commit comments

Comments
 (0)