petals-ui
Version:
Front-end UI components foundation
40 lines (39 loc) • 1.19 kB
JavaScript
function resolveTreeProps(props) {
const resolved = {};
[
// Keys from `IFormControl`
'name',
'value',
'disabled',
'readonly',
// Keys from `ITreeComponent`
'checkable',
'expanded',
'expandedKeys',
'selectedKeys',
'nodeField',
'nodeRenderer',
'emptyText',
].forEach(k => (resolved[k] = props[k]));
resolved.className = props.treeClassName;
return resolved;
}
function resolveTreeData(dataSource, childrenName, keyword, filter) {
if (keyword === '') {
return dataSource;
}
const resolved = [];
dataSource.forEach(nodeData => {
if (filter(keyword, nodeData)) {
resolved.push(nodeData);
}
else if ((nodeData[childrenName] || []).length > 0) {
const filteredChildren = resolveTreeData(nodeData[childrenName], childrenName, keyword, filter);
if (filteredChildren.length > 0) {
resolved.push(Object.assign(Object.assign({}, nodeData), { [childrenName]: filteredChildren }));
}
}
});
return resolved;
}
export { resolveTreeProps, resolveTreeData };