UNPKG

@samotics/ngx-treeview

Version:

An Angular treeview component with checkbox

82 lines 8.04 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXctaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRyZWV2aWV3L3NyYy9saWIvaGVscGVycy90cmVldmlldy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRzdDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixRQUFRO0lBQ1IsY0FBYztJQUNkLFVBQVU7SUFDVixVQUFVO0lBQ1YsZUFBZTtDQUNoQixDQUFDO0FBRUYsU0FBUyxRQUFRLENBQUMsSUFBa0IsRUFBRSxLQUFVO0lBQzlDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDaEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLElBQW9CLEVBQUUsS0FBVTtJQUN0RCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQWtCLEVBQUUsSUFBa0I7SUFDeEQsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2QyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFrQixFQUFFLElBQWtCO0lBQ3hELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEtBQXFCLEVBQUUsT0FBdUIsRUFBRSxTQUF5QjtJQUNoRyxJQUFJLFlBQVksR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDaEMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE9BQU87UUFDTCxPQUFPLEVBQUUsWUFBWTtRQUNyQixTQUFTLEVBQUUsY0FBYztLQUMxQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmNhdCwgaXNOaWwsIHB1bGwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgVHJlZXZpZXdJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3RyZWV2aWV3LWl0ZW0nO1xuXG5leHBvcnQgY29uc3QgVHJlZXZpZXdIZWxwZXIgPSB7XG4gIGZpbmRJdGVtLFxuICBmaW5kSXRlbUluTGlzdCxcbiAgZmluZFBhcmVudCxcbiAgcmVtb3ZlSXRlbSxcbiAgY29uY2F0U2VsZWN0aW9uXG59O1xuXG5mdW5jdGlvbiBmaW5kSXRlbShyb290OiBUcmVldmlld0l0ZW0sIHZhbHVlOiBhbnkpOiBUcmVldmlld0l0ZW0ge1xuICBpZiAoaXNOaWwocm9vdCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHJvb3QudmFsdWUgPT09IHZhbHVlKSB7XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBpZiAocm9vdC5jaGlsZHJlbikge1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygcm9vdC5jaGlsZHJlbikge1xuICAgICAgY29uc3QgZm91bmRJdGVtID0gZmluZEl0ZW0oY2hpbGQsIHZhbHVlKTtcbiAgICAgIGlmIChmb3VuZEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIGZvdW5kSXRlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBmaW5kSXRlbUluTGlzdChsaXN0OiBUcmVldmlld0l0ZW1bXSwgdmFsdWU6IGFueSk6IFRyZWV2aWV3SXRlbSB7XG4gIGlmIChpc05pbChsaXN0KSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xuICAgIGNvbnN0IGZvdW5kSXRlbSA9IGZpbmRJdGVtKGl0ZW0sIHZhbHVlKTtcbiAgICBpZiAoZm91bmRJdGVtKSB7XG4gICAgICByZXR1cm4gZm91bmRJdGVtO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGZpbmRQYXJlbnQocm9vdDogVHJlZXZpZXdJdGVtLCBpdGVtOiBUcmVldmlld0l0ZW0pOiBUcmVldmlld0l0ZW0ge1xuICBpZiAoaXNOaWwocm9vdCkgfHwgaXNOaWwocm9vdC5jaGlsZHJlbikpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZCBvZiByb290LmNoaWxkcmVuKSB7XG4gICAgaWYgKGNoaWxkID09PSBpdGVtKSB7XG4gICAgICByZXR1cm4gcm9vdDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGFyZW50ID0gZmluZFBhcmVudChjaGlsZCwgaXRlbSk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSXRlbShyb290OiBUcmVldmlld0l0ZW0sIGl0ZW06IFRyZWV2aWV3SXRlbSk6IGJvb2xlYW4ge1xuICBjb25zdCBwYXJlbnQgPSBmaW5kUGFyZW50KHJvb3QsIGl0ZW0pO1xuICBpZiAocGFyZW50KSB7XG4gICAgcHVsbChwYXJlbnQuY2hpbGRyZW4sIGl0ZW0pO1xuICAgIGlmIChwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICBwYXJlbnQuY2hpbGRyZW4gPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmVudC5jb3JyZWN0Q2hlY2tlZCgpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY29uY2F0U2VsZWN0aW9uKGl0ZW1zOiBUcmVldmlld0l0ZW1bXSwgY2hlY2tlZDogVHJlZXZpZXdJdGVtW10sIHVuY2hlY2tlZDogVHJlZXZpZXdJdGVtW10pOiB7IFtrOiBzdHJpbmddOiBUcmVldmlld0l0ZW1bXSB9IHtcbiAgbGV0IGNoZWNrZWRJdGVtcyA9IFsuLi5jaGVja2VkXTtcbiAgbGV0IHVuY2hlY2tlZEl0ZW1zID0gWy4uLnVuY2hlY2tlZF07XG4gIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IGl0ZW0uZ2V0U2VsZWN0aW9uKCk7XG4gICAgY2hlY2tlZEl0ZW1zID0gY29uY2F0KGNoZWNrZWRJdGVtcywgc2VsZWN0aW9uLmNoZWNrZWRJdGVtcyk7XG4gICAgdW5jaGVja2VkSXRlbXMgPSBjb25jYXQodW5jaGVja2VkSXRlbXMsIHNlbGVjdGlvbi51bmNoZWNrZWRJdGVtcyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjaGVja2VkOiBjaGVja2VkSXRlbXMsXG4gICAgdW5jaGVja2VkOiB1bmNoZWNrZWRJdGVtc1xuICB9O1xufVxuIl19