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 defaultExpandedKeys = store.defaultExpandedKeys;
|
||||||
const key = store.key;
|
const key = store.key;
|
||||||
if (key && defaultExpandedKeys && defaultExpandedKeys.indexOf(this.key) !== -1) {
|
if (key && defaultExpandedKeys && defaultExpandedKeys.indexOf(this.key) !== -1) {
|
||||||
if (store.autoExpandParent) {
|
this.expand(null, store.autoExpandParent);
|
||||||
let parent = this.parent;
|
|
||||||
while (parent.level > 0) {
|
|
||||||
parent.expanded = true;
|
|
||||||
parent = parent.parent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.expand();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (store.lazy) {
|
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()) {
|
if (this.shouldLoadData()) {
|
||||||
this.loadData((data) => {
|
this.loadData((data) => {
|
||||||
if (data instanceof Array) {
|
if (data instanceof Array) {
|
||||||
this.expanded = true;
|
done();
|
||||||
if (callback) callback();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.expanded = true;
|
done();
|
||||||
if (callback) callback();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,30 +66,30 @@ export default class TreeStore {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getNodeByData(data) {
|
getNode(data) {
|
||||||
const key = typeof data === 'string' ? data : getNodeKey(this.key, data);
|
const key = typeof data !== 'object' ? data : getNodeKey(this.key, data);
|
||||||
return this.nodesMap[key];
|
return this.nodesMap[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
insertBefore(data, refData) {
|
insertBefore(data, refData) {
|
||||||
const refNode = this.getNodeByData(refData);
|
const refNode = this.getNode(refData);
|
||||||
refNode.parent.insertBefore({ data }, refNode);
|
refNode.parent.insertBefore({ data }, refNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
insertAfter(data, refData) {
|
insertAfter(data, refData) {
|
||||||
const refNode = this.getNodeByData(refData);
|
const refNode = this.getNode(refData);
|
||||||
refNode.parent.insertAfter({ data }, refNode);
|
refNode.parent.insertAfter({ data }, refNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
remove(data) {
|
remove(data) {
|
||||||
const node = this.getNodeByData(data);
|
const node = this.getNode(data);
|
||||||
if (node) {
|
if (node) {
|
||||||
node.parent.removeChild(node);
|
node.parent.removeChild(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
append(data, parentData) {
|
append(data, parentData) {
|
||||||
const parentNode = parentData ? this.getNodeByData(parentData) : this.root;
|
const parentNode = parentData ? this.getNode(parentData) : this.root;
|
||||||
|
|
||||||
if (parentNode) {
|
if (parentNode) {
|
||||||
parentNode.insertChild({ data });
|
parentNode.insertChild({ data });
|
||||||
|
@ -206,6 +206,7 @@ export default class TreeStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
setCheckedKeys(keys, leafOnly = true) {
|
setCheckedKeys(keys, leafOnly = true) {
|
||||||
|
this.defaultCheckedKeys = keys;
|
||||||
const key = this.key;
|
const key = this.key;
|
||||||
const checkedKeys = {};
|
const checkedKeys = {};
|
||||||
keys.forEach((key) => {
|
keys.forEach((key) => {
|
||||||
|
@ -214,4 +215,14 @@ export default class TreeStore {
|
||||||
|
|
||||||
this._setCheckedKeys(key, leafOnly, checkedKeys);
|
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: {
|
watch: {
|
||||||
|
defaultCheckedKeys(newVal) {
|
||||||
|
this.store.defaultCheckedKeys = newVal;
|
||||||
|
this.store.setDefaultCheckedKey(newVal);
|
||||||
|
},
|
||||||
|
defaultExpandedKeys(newVal) {
|
||||||
|
this.store.defaultExpandedKeys = newVal;
|
||||||
|
this.store.setDefaultExpandedKeys(newVal);
|
||||||
|
},
|
||||||
data(newVal) {
|
data(newVal) {
|
||||||
this.store.setData(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);
|
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) => {
|
it('filter-node-method', (done) => {
|
||||||
vm = getTreeVm(':props="defaultProps" :filter-node-method="filterNode"', {
|
vm = getTreeVm(':props="defaultProps" :filter-node-method="filterNode"', {
|
||||||
methods: {
|
methods: {
|
||||||
|
|
Loading…
Reference in New Issue