@progress/kendo-angular-upload
Version:
Kendo UI Angular Upload Component
70 lines (69 loc) • 2.94 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 { 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']
}] } });