@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.
49 lines (48 loc) • 2.51 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 { Injectable } from "@angular/core";
import { RowReorderService } from './row-reorder.service';
import { isPresent } from "../utils";
import * as i0 from "@angular/core";
/**
* @hidden
*/
export class FlatRowReorderService extends RowReorderService {
isOverChild(targetItem) {
const { draggedRows } = this.rowReorderArgs(this.dragTarget, this.dropTarget, this.view);
const draggedItem = draggedRows[0].dataItem;
const hasParent = isPresent(targetItem[this.parentIdField]);
const sameParents = draggedItem[this.parentIdField] === targetItem[this.parentIdField];
if (!hasParent || sameParents) {
return false;
}
if (targetItem && targetItem.hasOwnProperty(this.parentIdField)) {
if (draggedItem[this.idField] === targetItem[this.parentIdField]) {
return true;
}
const parent = this.data.find(i => i[this.idField] === targetItem[this.parentIdField]);
if (parent) {
return this.isOverChild(parent);
}
}
}
reorderRows(ev, collection) {
const { draggedRows, dropTargetRow } = ev;
const draggedDataItem = draggedRows[0].dataItem;
const dropTargetDataItem = dropTargetRow.dataItem;
let dropTargetIdx = collection.indexOf(dropTargetDataItem);
const draggedItemIdx = collection.indexOf(draggedDataItem);
collection.splice(draggedItemIdx, 1);
if (ev.dropPosition === 'after' && dropTargetIdx < draggedItemIdx) {
dropTargetIdx++;
}
collection.splice(dropTargetIdx, 0, draggedDataItem);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FlatRowReorderService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FlatRowReorderService });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FlatRowReorderService, decorators: [{
type: Injectable
}] });