gentics-ui-core
Version:
This is the common core framework for the Gentics CMS and Mesh UI, and other Angular applications.
57 lines • 7.13 kB
JavaScript
import { Directive, HostListener, Input } from '@angular/core';
import { PageFileDragHandler } from './page-file-drag-handler.service';
import { DragStateTrackerFactory } from './drag-state-tracker.service';
import { getDataTransfer, transferHasFiles } from './drag-drop-utils';
import * as i0 from "@angular/core";
import * as i1 from "./page-file-drag-handler.service";
/**
* Prevents accidentally dropping files outside of a {@link FileDropArea}
*/
export class PreventFileDrop {
constructor(dragHandler) {
this.dragHandler = dragHandler;
this.prevent = true;
}
ngOnDestroy() {
this.dragHandler.preventFileDropOnPageFor(this, false);
}
set gtxPreventFileDrop(val) {
let mode = val === 'page' ? 'page' : (val !== false && val !== 'false');
if (mode != this.prevent) {
this.dragHandler.preventFileDropOnPageFor(this, mode === 'page');
this.prevent = mode;
}
}
preventAccidentalDrop(event) {
if (this.prevent !== true || event.defaultPrevented) {
return;
}
let dataTransfer = getDataTransfer(event);
if (transferHasFiles(dataTransfer)) {
event.preventDefault();
dataTransfer.effectAllowed = 'none';
dataTransfer.dropEffect = 'none';
}
}
}
/** @nocollapse */ PreventFileDrop.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PreventFileDrop, deps: [{ token: i1.PageFileDragHandler }], target: i0.ɵɵFactoryTarget.Directive });
/** @nocollapse */ PreventFileDrop.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: PreventFileDrop, selector: "[gtxPreventFileDrop]", inputs: { gtxPreventFileDrop: "gtxPreventFileDrop" }, host: { listeners: { "dragenter": "preventAccidentalDrop($event)", "dragover": "preventAccidentalDrop($event)", "drop": "preventAccidentalDrop($event)" } }, providers: [PageFileDragHandler, DragStateTrackerFactory], ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PreventFileDrop, decorators: [{
type: Directive,
args: [{
selector: '[gtxPreventFileDrop]',
providers: [PageFileDragHandler, DragStateTrackerFactory]
}]
}], ctorParameters: function () { return [{ type: i1.PageFileDragHandler }]; }, propDecorators: { gtxPreventFileDrop: [{
type: Input
}], preventAccidentalDrop: [{
type: HostListener,
args: ['dragenter', ['$event']]
}, {
type: HostListener,
args: ['dragover', ['$event']]
}, {
type: HostListener,
args: ['drop', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmVudC1maWxlLWRyb3AuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZmlsZS1kcm9wLWFyZWEvcHJldmVudC1maWxlLWRyb3AuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUV4RSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsZUFBZSxFQUFFLGdCQUFnQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7OztBQUVwRTs7R0FFRztBQUtILE1BQU0sT0FBTyxlQUFlO0lBSXhCLFlBQW9CLFdBQWdDO1FBQWhDLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUZwRCxZQUFPLEdBQXFCLElBQUksQ0FBQztJQUV1QixDQUFDO0lBRXpELFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBYSxrQkFBa0IsQ0FBQyxHQUF3QztRQUNwRSxJQUFJLElBQUksR0FBcUIsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQzFGLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUtELHFCQUFxQixDQUFDLEtBQVk7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDaEUsSUFBSSxZQUFZLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksZ0JBQWdCLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDaEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLFlBQVksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1lBQ3BDLFlBQVksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQzs7K0hBN0JRLGVBQWU7bUhBQWYsZUFBZSxrUUFGYixDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDOzJGQUVoRCxlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDO2lCQUM1RDswR0FXZ0Isa0JBQWtCO3NCQUE5QixLQUFLO2dCQVdOLHFCQUFxQjtzQkFIcEIsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNwQyxZQUFZO3VCQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ25DLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7UGFnZUZpbGVEcmFnSGFuZGxlcn0gZnJvbSAnLi9wYWdlLWZpbGUtZHJhZy1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtEcmFnU3RhdGVUcmFja2VyRmFjdG9yeX0gZnJvbSAnLi9kcmFnLXN0YXRlLXRyYWNrZXIuc2VydmljZSc7XG5pbXBvcnQge2dldERhdGFUcmFuc2ZlciwgdHJhbnNmZXJIYXNGaWxlc30gZnJvbSAnLi9kcmFnLWRyb3AtdXRpbHMnO1xuXG4vKipcbiAqIFByZXZlbnRzIGFjY2lkZW50YWxseSBkcm9wcGluZyBmaWxlcyBvdXRzaWRlIG9mIGEge0BsaW5rIEZpbGVEcm9wQXJlYX1cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZ3R4UHJldmVudEZpbGVEcm9wXScsXG4gICAgcHJvdmlkZXJzOiBbUGFnZUZpbGVEcmFnSGFuZGxlciwgRHJhZ1N0YXRlVHJhY2tlckZhY3RvcnldXG59KVxuZXhwb3J0IGNsYXNzIFByZXZlbnRGaWxlRHJvcCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBwcmV2ZW50OiBib29sZWFuIHwgJ3BhZ2UnID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZHJhZ0hhbmRsZXI6IFBhZ2VGaWxlRHJhZ0hhbmRsZXIpIHsgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZHJhZ0hhbmRsZXIucHJldmVudEZpbGVEcm9wT25QYWdlRm9yKHRoaXMsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBzZXQgZ3R4UHJldmVudEZpbGVEcm9wKHZhbDogYm9vbGVhbiB8ICd0cnVlJyB8ICdmYWxzZScgfCAncGFnZScpIHtcbiAgICAgICAgbGV0IG1vZGU6IGJvb2xlYW4gfCAncGFnZScgPSB2YWwgPT09ICdwYWdlJyA/ICdwYWdlJyA6ICh2YWwgIT09IGZhbHNlICYmIHZhbCAhPT0gJ2ZhbHNlJyk7XG4gICAgICAgIGlmIChtb2RlICE9IHRoaXMucHJldmVudCkge1xuICAgICAgICAgICAgdGhpcy5kcmFnSGFuZGxlci5wcmV2ZW50RmlsZURyb3BPblBhZ2VGb3IodGhpcywgbW9kZSA9PT0gJ3BhZ2UnKTtcbiAgICAgICAgICAgIHRoaXMucHJldmVudCA9IG1vZGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnZW50ZXInLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSlcbiAgICBwcmV2ZW50QWNjaWRlbnRhbERyb3AoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByZXZlbnQgIT09IHRydWUgfHwgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgeyByZXR1cm47IH1cbiAgICAgICAgbGV0IGRhdGFUcmFuc2ZlciA9IGdldERhdGFUcmFuc2ZlcihldmVudCk7XG4gICAgICAgIGlmICh0cmFuc2Zlckhhc0ZpbGVzKGRhdGFUcmFuc2ZlcikpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBkYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICdub25lJztcbiAgICAgICAgICAgIGRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19