Blame view

node_modules/element-ui/packages/table/src/store/expand.js 1.77 KB
7820380e   “wangming”   1
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
  import { toggleRowStatus, getKeysMap, getRowIdentity } from '../util';
  
  export default {
    data() {
      return {
        states: {
          defaultExpandAll: false,
          expandRows: []
        }
      };
    },
  
    methods: {
      updateExpandRows() {
        const { data = [], rowKey, defaultExpandAll, expandRows } = this.states;
        if (defaultExpandAll) {
          this.states.expandRows = data.slice();
        } else if (rowKey) {
          // TODO:这里的代码可以优化
          const expandRowsMap = getKeysMap(expandRows, rowKey);
          this.states.expandRows = data.reduce((prev, row) => {
            const rowId = getRowIdentity(row, rowKey);
            const rowInfo = expandRowsMap[rowId];
            if (rowInfo) {
              prev.push(row);
            }
            return prev;
          }, []);
        } else {
          this.states.expandRows = [];
        }
      },
  
      toggleRowExpansion(row, expanded) {
        const changed = toggleRowStatus(this.states.expandRows, row, expanded);
        if (changed) {
          this.table.$emit('expand-change', row, this.states.expandRows.slice());
          this.scheduleLayout();
        }
      },
  
      setExpandRowKeys(rowKeys) {
        this.assertRowKey();
        // TODO:这里的代码可以优化
        const { data, rowKey } = this.states;
        const keysMap = getKeysMap(data, rowKey);
        this.states.expandRows = rowKeys.reduce((prev, cur) => {
          const info = keysMap[cur];
          if (info) {
            prev.push(info.row);
          }
          return prev;
        }, []);
      },
  
      isRowExpanded(row) {
        const { expandRows = [], rowKey } = this.states;
        if (rowKey) {
          const expandMap = getKeysMap(expandRows, rowKey);
          return !!expandMap[getRowIdentity(row, rowKey)];
        }
        return expandRows.indexOf(row) !== -1;
      }
    }
  };