UNPKG

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