mirror of https://github.com/ElemeFE/element
Tree: fixed default-expanded-keys can not set again.
parent
812a953b1e
commit
807c06071d
|
@ -97,15 +97,7 @@ export default class Node {
|
|||
const defaultExpandedKeys = store.defaultExpandedKeys;
|
||||
const key = store.key;
|
||||
if (key && defaultExpandedKeys && defaultExpandedKeys.indexOf(this.key) !== -1) {
|
||||
if (store.autoExpandParent) {
|
||||
let parent = this.parent;
|
||||
while (parent.level > 0) {
|
||||
parent.expanded = true;
|
||||
parent = parent.parent;
|
||||
}
|
||||
}
|
||||
|
||||
this.expand();
|
||||
this.expand(null, store.autoExpandParent);
|
||||
}
|
||||
|
||||
if (store.lazy) {
|
||||
|
@ -213,17 +205,27 @@ export default class Node {
|
|||
}
|
||||
}
|
||||
|
||||
expand(callback) {
|
||||
expand(callback, expandParent) {
|
||||
const done = () => {
|
||||
if (expandParent) {
|
||||
let parent = this.parent;
|
||||
while (parent.level > 0) {
|
||||
parent.expanded = true;
|
||||
parent = parent.parent;
|
||||
}
|
||||
}
|
||||
this.expanded = true;
|
||||
if (callback) callback();
|
||||
};
|
||||
|
||||
if (this.shouldLoadData()) {
|
||||
this.loadData((data) => {
|
||||
if (data instanceof Array) {
|
||||
this.expanded = true;
|
||||
if (callback) callback();
|
||||
done();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.expanded = true;
|
||||
if (callback) callback();
|
||||
done();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -66,30 +66,30 @@ export default class TreeStore {
|
|||
}
|
||||
}
|
||||
|
||||
getNodeByData(data) {
|
||||
const key = typeof data === 'string' ? data : getNodeKey(this.key, data);
|
||||
getNode(data) {
|
||||
const key = typeof data !== 'object' ? data : getNodeKey(this.key, data);
|
||||
return this.nodesMap[key];
|
||||
}
|
||||
|
||||
insertBefore(data, refData) {
|
||||
const refNode = this.getNodeByData(refData);
|
||||
const refNode = this.getNode(refData);
|
||||
refNode.parent.insertBefore({ data }, refNode);
|
||||
}
|
||||
|
||||
insertAfter(data, refData) {
|
||||
const refNode = this.getNodeByData(refData);
|
||||
const refNode = this.getNode(refData);
|
||||
refNode.parent.insertAfter({ data }, refNode);
|
||||
}
|
||||
|
||||
remove(data) {
|
||||
const node = this.getNodeByData(data);
|
||||
const node = this.getNode(data);
|
||||
if (node) {
|
||||
node.parent.removeChild(node);
|
||||
}
|
||||
}
|
||||
|
||||
append(data, parentData) {
|
||||
const parentNode = parentData ? this.getNodeByData(parentData) : this.root;
|
||||
const parentNode = parentData ? this.getNode(parentData) : this.root;
|
||||
|
||||
if (parentNode) {
|
||||
parentNode.insertChild({ data });
|
||||
|
@ -206,6 +206,7 @@ export default class TreeStore {
|
|||
}
|
||||
|
||||
setCheckedKeys(keys, leafOnly = true) {
|
||||
this.defaultCheckedKeys = keys;
|
||||
const key = this.key;
|
||||
const checkedKeys = {};
|
||||
keys.forEach((key) => {
|
||||
|
@ -214,4 +215,14 @@ export default class TreeStore {
|
|||
|
||||
this._setCheckedKeys(key, leafOnly, checkedKeys);
|
||||
}
|
||||
|
||||
setDefaultExpandedKeys(keys) {
|
||||
keys = keys || [];
|
||||
this.defaultExpandedKeys = keys;
|
||||
|
||||
keys.forEach((key) => {
|
||||
const node = this.getNode(key);
|
||||
if (node) node.expand(null, this.autoExpandParent);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
|
@ -106,11 +106,16 @@
|
|||
},
|
||||
|
||||
watch: {
|
||||
defaultCheckedKeys(newVal) {
|
||||
this.store.defaultCheckedKeys = newVal;
|
||||
this.store.setDefaultCheckedKey(newVal);
|
||||
},
|
||||
defaultExpandedKeys(newVal) {
|
||||
this.store.defaultExpandedKeys = newVal;
|
||||
this.store.setDefaultExpandedKeys(newVal);
|
||||
},
|
||||
data(newVal) {
|
||||
this.store.setData(newVal);
|
||||
},
|
||||
defaultCheckedKeys(newVal) {
|
||||
this.store.setDefaultCheckedKey(newVal);
|
||||
}
|
||||
},
|
||||
|
||||
|
|
|
@ -127,6 +127,21 @@ describe('Tree', () => {
|
|||
expect(vm.$el.querySelectorAll('.el-tree-node.is-expanded').length).to.equal(2);
|
||||
});
|
||||
|
||||
it('defaultExpandedKeys set', (done) => {
|
||||
vm = getTreeVm(':props="defaultProps" :default-expanded-keys="defaultExpandedKeys" node-key="id"', {
|
||||
created() {
|
||||
this.defaultExpandedKeys = [1, 3];
|
||||
}
|
||||
});
|
||||
expect(vm.$el.querySelectorAll('.el-tree-node.is-expanded').length).to.equal(2);
|
||||
vm.defaultExpandedKeys = [2];
|
||||
vm.data = JSON.parse(JSON.stringify(vm.data));
|
||||
setTimeout(() => {
|
||||
expect(vm.$el.querySelectorAll('.el-tree-node.is-expanded').length).to.equal(1);
|
||||
done();
|
||||
}, 50);
|
||||
});
|
||||
|
||||
it('filter-node-method', (done) => {
|
||||
vm = getTreeVm(':props="defaultProps" :filter-node-method="filterNode"', {
|
||||
methods: {
|
||||
|
|
Loading…
Reference in New Issue