UNPKG

@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
/**----------------------------------------------------------------------------------------- * 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(); } }