UNPKG

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
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