@kishorethecoder/ngx-treeview
Version:
An Angular treeview component with checkbox upgraded with angular 14
82 lines • 8.18 kB
JavaScript
import { concat, isNil, pull } from 'lodash-es';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZXZpZXctaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRyZWV2aWV3L3NyYy9saWIvaGVscGVycy90cmVldmlldy1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR2hELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixRQUFRO0lBQ1IsY0FBYztJQUNkLFVBQVU7SUFDVixVQUFVO0lBQ1YsZUFBZTtDQUNoQixDQUFDO0FBRUYsU0FBUyxRQUFRLENBQUMsSUFBa0IsRUFBRSxLQUFVO0lBQzlDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2YsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7UUFDakIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsT0FBTyxTQUFTLENBQUM7YUFDbEI7U0FDRjtLQUNGO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLElBQW9CLEVBQUUsS0FBVTtJQUN0RCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNmLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUU7UUFDdkIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QyxJQUFJLFNBQVMsRUFBRTtZQUNiLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0tBQ0Y7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBa0IsRUFBRSxJQUFrQjtJQUN4RCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ3ZDLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1FBQ2pDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLElBQUksTUFBTSxFQUFFO2dCQUNWLE9BQU8sTUFBTSxDQUFDO2FBQ2Y7U0FDRjtLQUNGO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQWtCLEVBQUUsSUFBa0I7SUFDeEQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sRUFBRTtRQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1NBQzdCO2FBQU07WUFDTCxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekI7UUFDRCxPQUFPLElBQUksQ0FBQztLQUNiO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQ3RCLEtBQXFCLEVBQ3JCLE9BQXVCLEVBQ3ZCLFNBQXlCO0lBRXpCLElBQUksWUFBWSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUNoQyxJQUFJLGNBQWMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDeEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RCxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDbkU7SUFDRCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFlBQVk7UUFDckIsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25jYXQsIGlzTmlsLCBwdWxsIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgVHJlZXZpZXdJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3RyZWV2aWV3LWl0ZW0nO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRyZWV2aWV3SGVscGVyID0ge1xyXG4gIGZpbmRJdGVtLFxyXG4gIGZpbmRJdGVtSW5MaXN0LFxyXG4gIGZpbmRQYXJlbnQsXHJcbiAgcmVtb3ZlSXRlbSxcclxuICBjb25jYXRTZWxlY3Rpb24sXHJcbn07XHJcblxyXG5mdW5jdGlvbiBmaW5kSXRlbShyb290OiBUcmVldmlld0l0ZW0sIHZhbHVlOiBhbnkpOiBUcmVldmlld0l0ZW0ge1xyXG4gIGlmIChpc05pbChyb290KSkge1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGlmIChyb290LnZhbHVlID09PSB2YWx1ZSkge1xyXG4gICAgcmV0dXJuIHJvb3Q7XHJcbiAgfVxyXG5cclxuICBpZiAocm9vdC5jaGlsZHJlbikge1xyXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiByb290LmNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IGZvdW5kSXRlbSA9IGZpbmRJdGVtKGNoaWxkLCB2YWx1ZSk7XHJcbiAgICAgIGlmIChmb3VuZEl0ZW0pIHtcclxuICAgICAgICByZXR1cm4gZm91bmRJdGVtO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdW5kZWZpbmVkO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kSXRlbUluTGlzdChsaXN0OiBUcmVldmlld0l0ZW1bXSwgdmFsdWU6IGFueSk6IFRyZWV2aWV3SXRlbSB7XHJcbiAgaWYgKGlzTmlsKGxpc3QpKSB7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcclxuICAgIGNvbnN0IGZvdW5kSXRlbSA9IGZpbmRJdGVtKGl0ZW0sIHZhbHVlKTtcclxuICAgIGlmIChmb3VuZEl0ZW0pIHtcclxuICAgICAgcmV0dXJuIGZvdW5kSXRlbTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRQYXJlbnQocm9vdDogVHJlZXZpZXdJdGVtLCBpdGVtOiBUcmVldmlld0l0ZW0pOiBUcmVldmlld0l0ZW0ge1xyXG4gIGlmIChpc05pbChyb290KSB8fCBpc05pbChyb290LmNoaWxkcmVuKSkge1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgY2hpbGQgb2Ygcm9vdC5jaGlsZHJlbikge1xyXG4gICAgaWYgKGNoaWxkID09PSBpdGVtKSB7XHJcbiAgICAgIHJldHVybiByb290O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcGFyZW50ID0gZmluZFBhcmVudChjaGlsZCwgaXRlbSk7XHJcbiAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4gcGFyZW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdW5kZWZpbmVkO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZW1vdmVJdGVtKHJvb3Q6IFRyZWV2aWV3SXRlbSwgaXRlbTogVHJlZXZpZXdJdGVtKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgcGFyZW50ID0gZmluZFBhcmVudChyb290LCBpdGVtKTtcclxuICBpZiAocGFyZW50KSB7XHJcbiAgICBwdWxsKHBhcmVudC5jaGlsZHJlbiwgaXRlbSk7XHJcbiAgICBpZiAocGFyZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBwYXJlbnQuY2hpbGRyZW4gPSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwYXJlbnQuY29ycmVjdENoZWNrZWQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjb25jYXRTZWxlY3Rpb24oXHJcbiAgaXRlbXM6IFRyZWV2aWV3SXRlbVtdLFxyXG4gIGNoZWNrZWQ6IFRyZWV2aWV3SXRlbVtdLFxyXG4gIHVuY2hlY2tlZDogVHJlZXZpZXdJdGVtW11cclxuKTogeyBbazogc3RyaW5nXTogVHJlZXZpZXdJdGVtW10gfSB7XHJcbiAgbGV0IGNoZWNrZWRJdGVtcyA9IFsuLi5jaGVja2VkXTtcclxuICBsZXQgdW5jaGVja2VkSXRlbXMgPSBbLi4udW5jaGVja2VkXTtcclxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IGl0ZW0uZ2V0U2VsZWN0aW9uKCk7XHJcbiAgICBjaGVja2VkSXRlbXMgPSBjb25jYXQoY2hlY2tlZEl0ZW1zLCBzZWxlY3Rpb24uY2hlY2tlZEl0ZW1zKTtcclxuICAgIHVuY2hlY2tlZEl0ZW1zID0gY29uY2F0KHVuY2hlY2tlZEl0ZW1zLCBzZWxlY3Rpb24udW5jaGVja2VkSXRlbXMpO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2hlY2tlZDogY2hlY2tlZEl0ZW1zLFxyXG4gICAgdW5jaGVja2VkOiB1bmNoZWNrZWRJdGVtcyxcclxuICB9O1xyXG59XHJcbiJdfQ==