| const BVTableSelectableMixin = { |
| data() { |
| return { |
| tableHeaderCheckboxModel: false, |
| tableHeaderCheckboxIndeterminate: false, |
| selectedRows: [], |
| }; |
| }, |
| methods: { |
| clearSelectedRows(tableRef) { |
| if (tableRef) tableRef.clearSelected(); |
| }, |
| toggleSelectRow(tableRef, rowIndex) { |
| if (tableRef && rowIndex !== undefined) { |
| tableRef.isRowSelected(rowIndex) |
| ? tableRef.unselectRow(rowIndex) |
| : tableRef.selectRow(rowIndex); |
| } |
| }, |
| onRowSelected(selectedRows, totalRowsCount) { |
| if (selectedRows && totalRowsCount !== undefined) { |
| this.selectedRows = selectedRows; |
| if (selectedRows.length === 0) { |
| this.tableHeaderCheckboxIndeterminate = false; |
| this.tableHeaderCheckboxModel = false; |
| } else if (selectedRows.length === totalRowsCount) { |
| this.tableHeaderCheckboxIndeterminate = false; |
| this.tableHeaderCheckboxModel = true; |
| } else { |
| this.tableHeaderCheckboxIndeterminate = true; |
| this.tableHeaderCheckboxModel = false; |
| } |
| } |
| }, |
| onChangeHeaderCheckbox(tableRef) { |
| if (tableRef) { |
| if (this.tableHeaderCheckboxModel) tableRef.clearSelected(); |
| else tableRef.selectAllRows(); |
| } |
| }, |
| }, |
| }; |
| |
| export default BVTableSelectableMixin; |