UNPKG

@progress/kendo-angular-upload

Version:

Kendo UI Angular Upload Component

70 lines (69 loc) 2.94 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { ElementRef, Renderer2, HostListener, Inject, Directive } from '@angular/core'; import * as i0 from "@angular/core"; /** * @hidden */ export class DropZoneBase { element; renderer; hoverClass; lastDragElement; hideIntervalElement = null; /** * @hidden */ onElementDragEnterListener() { this.addClass(this.hoverClass); this.lastDragElement = new Date(); if (!this.hideIntervalElement) { this.hideIntervalElement = setInterval(() => { if (this.calculateTimeDiff(this.lastDragElement) < 100) { return; } this.removeClass(this.hoverClass); clearInterval(this.hideIntervalElement); this.hideIntervalElement = null; }, 100); } return false; } /** * @hidden */ onElementDragOverListener() { this.lastDragElement = new Date(); return false; } constructor(element, renderer, cssClass) { this.element = element; this.renderer = renderer; this.hoverClass = cssClass; } calculateTimeDiff(prevEvent) { return new Date().getTime() - prevEvent.getTime(); } addClass(className) { this.renderer.addClass(this.element.nativeElement, className); } removeClass(className) { this.renderer.removeClass(this.element.nativeElement, className); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropZoneBase, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: 'hoverClass' }], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: DropZoneBase, host: { listeners: { "dragenter": "onElementDragEnterListener()", "dragover": "onElementDragOverListener()" } }, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropZoneBase, decorators: [{ type: Directive }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{ type: Inject, args: ['hoverClass'] }] }]; }, propDecorators: { onElementDragEnterListener: [{ type: HostListener, args: ['dragenter'] }], onElementDragOverListener: [{ type: HostListener, args: ['dragover'] }] } });