@progress/kendo-angular-treelist
Version:
Kendo UI TreeList for Angular - Display hierarchical data in an Angular tree grid view that supports sorting, filtering, paging, and much more.
53 lines (52 loc) • 2.02 kB
JavaScript
/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { LocalEditService } from './local-edit.service';
import { guid } from '@progress/kendo-angular-common';
import { isPresent } from '../utils';
import { insertNewItem } from './utils';
/**
* @hidden
*/
export class FlatEditService extends LocalEditService {
bindingDirective;
constructor(bindingDirective) {
super();
this.bindingDirective = bindingDirective;
}
create(item, parent, id) {
const { idGetter, idSetter, parentIdSetter, originalData, component } = this.bindingDirective;
idSetter(item, isPresent(id) ? id : guid());
if (parent) {
parentIdSetter(item, idGetter(parent));
}
insertNewItem(item, originalData, component, parent);
this.bindingDirective.rebind();
}
update(_item) {
this.bindingDirective.rebind();
}
remove(item, _parent) {
const { idGetter, parentIdGetter, originalData } = this.bindingDirective;
const toRemove = [item];
while (toRemove.length) {
const current = toRemove.shift();
const id = idGetter(current);
let itemIndex = -1;
for (let idx = 0; idx < originalData.length; idx++) {
const dataItem = originalData[idx];
if (itemIndex === -1 && idGetter(dataItem) === id) {
itemIndex = idx;
}
if (parentIdGetter(dataItem) === id) {
toRemove.push(dataItem);
}
}
if (itemIndex >= 0) {
originalData.splice(itemIndex, 1);
}
}
this.bindingDirective.rebind();
}
}