UNPKG

@treeview/ngx-treeview

Version:

An Angular Boostrap treeview component

82 lines 8.14 kB
import { concat, isNil, pull } from 'lodash'; export const TreeviewHelper = { findItem, findItemInList, findParent, removeItem, concatSelection }; function findItem(root, value) { if (isNil(root)) { return undefined; } if (root.value === value) { return root; } if (root.children) { for (const child of root.children) { const foundItem = findItem(child, value); if (foundItem) { return foundItem; } } } return undefined; } function findItemInList(list, value) { if (isNil(list)) { return undefined; } for (const item of list) { const foundItem = findItem(item, value); if (foundItem) { return foundItem; } } return undefined; } function findParent(root, item) { if (isNil(root) || isNil(root.children)) { return undefined; } for (const child of root.children) { if (child === item) { return root; } else { const parent = findParent(child, item); if (parent) { return parent; } } } return undefined; } function removeItem(root, item) { const parent = findParent(root, item); if (parent) { pull(parent.children, item); if (parent.children.length === 0) { parent.children = undefined; } else { parent.correctChecked(); } return true; } return false; } function concatSelection(items, checked, unchecked) { let checkedItems = [...checked]; let uncheckedItems = [...unchecked]; for (const item of items) { const selection = item.getSelection(); checkedItems = concat(checkedItems, selection.checkedItems); uncheckedItems = concat(uncheckedItems, selection.uncheckedItems); } return { checked: checkedItems, unchecked: uncheckedItems }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXctaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRyZWV2aWV3L3NyYy9saWIvaGVscGVycy90cmVldmlldy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRzdDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixRQUFRO0lBQ1IsY0FBYztJQUNkLFVBQVU7SUFDVixVQUFVO0lBQ1YsZUFBZTtDQUNoQixDQUFDO0FBRUYsU0FBUyxRQUFRLENBQUMsSUFBa0IsRUFBRSxLQUFVO0lBQzlDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2YsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDakIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsT0FBTyxTQUFTLENBQUM7YUFDbEI7U0FDRjtLQUNGO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLElBQW9CLEVBQUUsS0FBVTtJQUN0RCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNmLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUU7UUFDdkIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLFNBQVMsRUFBRTtZQUNiLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0tBQ0Y7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBa0IsRUFBRSxJQUFrQjtJQUN4RCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ3ZDLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2pDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksTUFBTSxFQUFFO2dCQUNWLE9BQU8sTUFBTSxDQUFDO2FBQ2Y7U0FDRjtLQUNGO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQWtCLEVBQUUsSUFBa0I7SUFDeEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1NBQzdCO2FBQU07WUFDTCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekI7UUFDRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBcUIsRUFBRSxPQUF1QixFQUFFLFNBQXlCO0lBQ2hHLElBQUksWUFBWSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUNoQyxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDeEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDbkU7SUFDRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFlBQVk7UUFDckIsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25jYXQsIGlzTmlsLCBwdWxsIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgVHJlZXZpZXdJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3RyZWV2aWV3LWl0ZW0nO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRyZWV2aWV3SGVscGVyID0ge1xyXG4gIGZpbmRJdGVtLFxyXG4gIGZpbmRJdGVtSW5MaXN0LFxyXG4gIGZpbmRQYXJlbnQsXHJcbiAgcmVtb3ZlSXRlbSxcclxuICBjb25jYXRTZWxlY3Rpb25cclxufTtcclxuXHJcbmZ1bmN0aW9uIGZpbmRJdGVtKHJvb3Q6IFRyZWV2aWV3SXRlbSwgdmFsdWU6IGFueSk6IFRyZWV2aWV3SXRlbSB7XHJcbiAgaWYgKGlzTmlsKHJvb3QpKSB7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgaWYgKHJvb3QudmFsdWUgPT09IHZhbHVlKSB7XHJcbiAgICByZXR1cm4gcm9vdDtcclxuICB9XHJcblxyXG4gIGlmIChyb290LmNoaWxkcmVuKSB7XHJcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHJvb3QuY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgZm91bmRJdGVtID0gZmluZEl0ZW0oY2hpbGQsIHZhbHVlKTtcclxuICAgICAgaWYgKGZvdW5kSXRlbSkge1xyXG4gICAgICAgIHJldHVybiBmb3VuZEl0ZW07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRJdGVtSW5MaXN0KGxpc3Q6IFRyZWV2aWV3SXRlbVtdLCB2YWx1ZTogYW55KTogVHJlZXZpZXdJdGVtIHtcclxuICBpZiAoaXNOaWwobGlzdCkpIHtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xyXG4gICAgY29uc3QgZm91bmRJdGVtID0gZmluZEl0ZW0oaXRlbSwgdmFsdWUpO1xyXG4gICAgaWYgKGZvdW5kSXRlbSkge1xyXG4gICAgICByZXR1cm4gZm91bmRJdGVtO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHVuZGVmaW5lZDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZFBhcmVudChyb290OiBUcmVldmlld0l0ZW0sIGl0ZW06IFRyZWV2aWV3SXRlbSk6IFRyZWV2aWV3SXRlbSB7XHJcbiAgaWYgKGlzTmlsKHJvb3QpIHx8IGlzTmlsKHJvb3QuY2hpbGRyZW4pKSB7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZm9yIChjb25zdCBjaGlsZCBvZiByb290LmNoaWxkcmVuKSB7XHJcbiAgICBpZiAoY2hpbGQgPT09IGl0ZW0pIHtcclxuICAgICAgcmV0dXJuIHJvb3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBmaW5kUGFyZW50KGNoaWxkLCBpdGVtKTtcclxuICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgIHJldHVybiBwYXJlbnQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbW92ZUl0ZW0ocm9vdDogVHJlZXZpZXdJdGVtLCBpdGVtOiBUcmVldmlld0l0ZW0pOiBib29sZWFuIHtcclxuICBjb25zdCBwYXJlbnQgPSBmaW5kUGFyZW50KHJvb3QsIGl0ZW0pO1xyXG4gIGlmIChwYXJlbnQpIHtcclxuICAgIHB1bGwocGFyZW50LmNoaWxkcmVuLCBpdGVtKTtcclxuICAgIGlmIChwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHBhcmVudC5jaGlsZHJlbiA9IHVuZGVmaW5lZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhcmVudC5jb3JyZWN0Q2hlY2tlZCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvbmNhdFNlbGVjdGlvbihpdGVtczogVHJlZXZpZXdJdGVtW10sIGNoZWNrZWQ6IFRyZWV2aWV3SXRlbVtdLCB1bmNoZWNrZWQ6IFRyZWV2aWV3SXRlbVtdKTogeyBbazogc3RyaW5nXTogVHJlZXZpZXdJdGVtW10gfSB7XHJcbiAgbGV0IGNoZWNrZWRJdGVtcyA9IFsuLi5jaGVja2VkXTtcclxuICBsZXQgdW5jaGVja2VkSXRlbXMgPSBbLi4udW5jaGVja2VkXTtcclxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IGl0ZW0uZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBjaGVja2VkSXRlbXMgPSBjb25jYXQoY2hlY2tlZEl0ZW1zLCBzZWxlY3Rpb24uY2hlY2tlZEl0ZW1zKTtcclxuICAgIHVuY2hlY2tlZEl0ZW1zID0gY29uY2F0KHVuY2hlY2tlZEl0ZW1zLCBzZWxlY3Rpb24udW5jaGVja2VkSXRlbXMpO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2hlY2tlZDogY2hlY2tlZEl0ZW1zLFxyXG4gICAgdW5jaGVja2VkOiB1bmNoZWNrZWRJdGVtc1xyXG4gIH07XHJcbn1cclxuIl19