@progress/kendo-angular-grid
Version:
Kendo UI Grid for Angular - high performance data grid with paging, filtering, virtualization, CRUD, and more.
66 lines (65 loc) • 2.45 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, EventEmitter } from '@angular/core';
import { contains } from './common';
import * as i0 from "@angular/core";
/**
* @hidden
*/
export class DragAndDropService {
changes = new EventEmitter();
register = [];
lastTarget = null;
add(target) {
this.register.push(target);
}
remove(target) {
this.register = this.register.filter(current => current !== target);
}
notifyDrag(draggable, element, mouseEvent) {
const target = this.targetFor(element);
if (this.lastTarget === target) {
return;
}
this.changes.next({
draggable,
mouseEvent,
target: this.lastTarget,
type: 'leave'
});
if (target) {
this.changes.next({
draggable,
mouseEvent,
target,
type: 'enter'
});
}
this.lastTarget = target;
}
notifyDrop(draggable, mouseEvent) {
const target = draggable && draggable.element && this.targetFor(draggable.element.nativeElement);
if (target && this.lastTarget === target) {
this.lastTarget = null;
return;
}
this.changes.next({
draggable,
mouseEvent,
target: this.lastTarget,
type: 'drop'
});
this.lastTarget = null;
}
targetFor(element) {
const comparer = contains.bind(null, element);
return this.register.find(({ element: { nativeElement } }) => comparer(nativeElement));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropService });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropService, decorators: [{
type: Injectable
}] });