lampuotomatis/public/vendor/rappasoft/livewire-tables/js/partials/tableWrapper.js

82 lines
2.5 KiB
JavaScript

/*jshint esversion: 6 */
function tableWrapper() {
Alpine.data('tableWrapper', (wire, showBulkActionsAlpine) => ({
listeners: [],
childElementOpen: false,
filtersOpen: wire.entangle('filterSlideDownDefaultVisible'),
paginationCurrentCount: wire.entangle('paginationCurrentCount'),
paginationTotalItemCount: wire.entangle('paginationTotalItemCount'),
paginationCurrentItems: wire.entangle('paginationCurrentItems'),
selectedItems: wire.entangle('selected'),
selectAllStatus: wire.entangle('selectAll'),
delaySelectAll: wire.entangle('delaySelectAll'),
hideBulkActionsWhenEmpty: wire.entangle('hideBulkActionsWhenEmpty'),
toggleSelectAll() {
if (!showBulkActionsAlpine) {
return;
}
if (this.paginationTotalItemCount === this.selectedItems.length) {
this.clearSelected();
this.selectAllStatus = false;
} else {
if (this.delaySelectAll)
{
this.setAllItemsSelected();
}
else
{
this.setAllSelected();
}
}
},
setAllItemsSelected() {
if (!showBulkActionsAlpine) {
return;
}
this.selectAllStatus = true;
this.selectAllOnPage();
},
setAllSelected() {
if (!showBulkActionsAlpine) {
return;
}
if (this.delaySelectAll)
{
this.selectAllStatus = true;
this.selectAllOnPage();
}
else
{
wire.setAllSelected();
}
},
clearSelected() {
if (!showBulkActionsAlpine) {
return;
}
this.selectAllStatus = false;
wire.clearSelected();
},
selectAllOnPage() {
if (!showBulkActionsAlpine) {
return;
}
let tempSelectedItems = this.selectedItems;
const iterator = this.paginationCurrentItems.values();
for (const value of iterator) {
tempSelectedItems.push(value.toString());
}
this.selectedItems = [...new Set(tempSelectedItems)];
},
destroy() {
this.listeners.forEach((listener) => {
listener();
});
}
}));
}
export default tableWrapper;