82 lines
2.5 KiB
JavaScript
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; |