summaryrefslogtreecommitdiff
path: root/src/components/Mixins/BVTableSelectableMixin.js
blob: fba2f2b8efd3783a2ded8719799f1dbe8e7679d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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;