Skip to content

Commit

Permalink
Fix selectall
Browse files Browse the repository at this point in the history
Fix selectall checkbox in DataTable
  • Loading branch information
BenjaminCharmes committed Sep 26, 2024
1 parent 4f545d4 commit dffd7b5
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion webapp/src/components/DynamicDataTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,20 @@
<DataTable
v-model:filters="filters"
v-model:selection="itemsSelected"
v-model:select-all="allSelected"
:value="data"
:data-testid="computedDataTestId"
selection-mode="multiple"
paginator
:rows="20"
:rows="rows"
:rows-per-page-options="[10, 20, 50, 100]"
filter-display="menu"
:global-filter-fields="globalFilterFields"
removable-sort
sort-mode="multiple"
@row-click="goToEditPage"
@select-all-change="onSelectAllChange"
@page="onPageChange"
>
<!-- v-model:expandedRows="expandedRows" -->

Expand All @@ -40,6 +43,7 @@
<template #loading> Loading data. Please wait. </template>

<Column class="checkbox" selection-mode="multiple"></Column>

<!-- <Column expander style="width: 5rem" /> -->
<Column
v-for="column in columns"
Expand Down Expand Up @@ -183,6 +187,9 @@ export default {
},
},
allowedTypes: INVENTORY_TABLE_TYPES,
allSelected: false,
page: 0,
rows: 20,
};
},
computed: {
Expand All @@ -195,10 +202,14 @@ export default {
};
return dataTestIdMap[this.dataType] || "default-table";
},
isAllSelected() {
return this.itemsSelected.length === this.data.length;
},
},
watch: {
itemsSelected(newSelection) {
console.log("Selected items:", newSelection);
console.log("Selected items:", newSelection.length);
},
},
created() {
Expand Down Expand Up @@ -272,12 +283,28 @@ export default {
}
return false;
},
onSelectAllChange(event) {
if (event.checked) {
this.allSelected = event.checked;
const newItems = this.data.slice(this.page * this.rows, (this.page + 1) * this.rows);
this.itemsSelected.push(...newItems);
} else {
const itemsToRemove = this.data.slice(this.page * this.rows, (this.page + 1) * this.rows);
this.itemsSelected = this.itemsSelected.filter((item) => !itemsToRemove.includes(item));
this.allSelected = event.checked;
}
},
deleteSelectedItems() {
this.itemsSelected = [];
},
handleItemsUpdated() {
this.itemsSelected = [];
},
onPageChange(event) {
this.page = event.page;
this.rows = event.rows;
this.allSelected = false;
},
},
};
</script>
Expand Down

0 comments on commit dffd7b5

Please sign in to comment.