/*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;