@formql/core
Version:
FormQL - A framework for building dynamic forms
78 lines • 8.1 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Directive, HostListener, ViewContainerRef, Input, Output, EventEmitter, Renderer2, } from '@angular/core';
import { ContainerType, FormQLMode } from '../models/type.model';
/*
Directive to handle the start drag start and pass the information to the dnd-drop directive
*/
var DndDirective = /** @class */ (function () {
function DndDirective(view, renderer) {
this.view = view;
this.renderer = renderer;
this.synchronise = new EventEmitter();
}
DndDirective.prototype.onDragStart = function ($event) {
if (this.mode !== FormQLMode.View) {
var draggabble = this.view.element.nativeElement.getAttribute('draggable');
if (draggabble === 'true' &&
$event &&
$event.dataTransfer &&
this.sourceObjectId) {
$event.dataTransfer.effectAllowed = 'move';
var sourceIds = this.sourceObjectId + '#' + this.sourceWrapperId;
$event.dataTransfer.setData('Text', sourceIds);
// only way I found to support drag and drop in IE (try and if it fails, do the IE way)
try {
$event.dataTransfer.setData(this.type.toString(), '');
}
catch (_a) {
$event.dataTransfer.types.item[1] = this.type.toString();
}
}
}
};
DndDirective.prototype.onDragEnd = function ($event) {
if (this.mode !== FormQLMode.View)
this.renderer.setAttribute(this.view.element.nativeElement, 'draggable', 'false');
};
__decorate([
Input(),
__metadata("design:type", String)
], DndDirective.prototype, "sourceObjectId", void 0);
__decorate([
Input(),
__metadata("design:type", String)
], DndDirective.prototype, "sourceWrapperId", void 0);
__decorate([
Input(),
__metadata("design:type", Number)
], DndDirective.prototype, "type", void 0);
__decorate([
Input(),
__metadata("design:type", Number)
], DndDirective.prototype, "mode", void 0);
__decorate([
Output(),
__metadata("design:type", EventEmitter)
], DndDirective.prototype, "synchronise", void 0);
__decorate([
HostListener('dragstart', ['$event']),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], DndDirective.prototype, "onDragStart", null);
__decorate([
HostListener('dragend', ['$event']),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], DndDirective.prototype, "onDragEnd", null);
DndDirective = __decorate([
Directive({
selector: '[formqlDnd]',
}),
__metadata("design:paramtypes", [ViewContainerRef, Renderer2])
], DndDirective);
return DndDirective;
}());
export { DndDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bmb3JtcWwvY29yZS8iLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvZG5kLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFOztFQUVFO0FBSUY7SUFDRSxzQkFBb0IsSUFBc0IsRUFBVSxRQUFtQjtRQUFuRCxTQUFJLEdBQUosSUFBSSxDQUFrQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFPN0QsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVBZLENBQUM7SUFTN0Isa0NBQVcsR0FBbEIsVUFBbUIsTUFBTTtRQUM5RCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksRUFBRTtZQUNqQyxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUM3RCxXQUFXLENBQ1osQ0FBQztZQUNGLElBQ0UsVUFBVSxLQUFLLE1BQU07Z0JBQ3JCLE1BQU07Z0JBQ04sTUFBTSxDQUFDLFlBQVk7Z0JBQ25CLElBQUksQ0FBQyxjQUFjLEVBQ25CO2dCQUNBLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztnQkFDM0MsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDbkUsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUUvQyx1RkFBdUY7Z0JBQ3ZGLElBQUk7b0JBQ0YsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDdkQ7Z0JBQUMsV0FBTTtvQkFDTixNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDMUQ7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUUyQyxnQ0FBUyxHQUFoQixVQUFpQixNQUFNO1FBQzFELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSTtZQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUMvQixXQUFXLEVBQ1gsT0FBTyxDQUNSLENBQUM7SUFDTixDQUFDO0lBdkNRO1FBQVIsS0FBSyxFQUFFOzt3REFBK0I7SUFDOUI7UUFBUixLQUFLLEVBQUU7O3lEQUFnQztJQUMvQjtRQUFSLEtBQUssRUFBRTs7OENBQTRCO0lBQzNCO1FBQVIsS0FBSyxFQUFFOzs4Q0FBeUI7SUFFdkI7UUFBVCxNQUFNLEVBQUU7a0NBQWMsWUFBWTtxREFBMkI7SUFFdkI7UUFBdEMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O21EQXVCckM7SUFFb0M7UUFBcEMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O2lEQU9uQztJQTFDVSxZQUFZO1FBSHhCLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxhQUFhO1NBQ3hCLENBQUM7eUNBRTBCLGdCQUFnQixFQUFvQixTQUFTO09BRDVELFlBQVksQ0EyQ3hCO0lBQUQsbUJBQUM7Q0FBQSxBQTNDRCxJQTJDQztTQTNDWSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBSZW5kZXJlcjIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRhaW5lclR5cGUsIEZvcm1RTE1vZGUgfSBmcm9tICcuLi9tb2RlbHMvdHlwZS5tb2RlbCc7XHJcbi8qXHJcbiAgICBEaXJlY3RpdmUgdG8gaGFuZGxlIHRoZSBzdGFydCBkcmFnIHN0YXJ0IGFuZCBwYXNzIHRoZSBpbmZvcm1hdGlvbiB0byB0aGUgZG5kLWRyb3AgZGlyZWN0aXZlXHJcbiovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2Zvcm1xbERuZF0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRG5kRGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXc6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNvdXJjZU9iamVjdElkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHNvdXJjZVdyYXBwZXJJZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiBDb250YWluZXJUeXBlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBtb2RlOiBGb3JtUUxNb2RlO1xyXG5cclxuICBAT3V0cHV0KCkgc3luY2hyb25pc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkcmFnc3RhcnQnLCBbJyRldmVudCddKSBwdWJsaWMgb25EcmFnU3RhcnQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5tb2RlICE9PSBGb3JtUUxNb2RlLlZpZXcpIHtcclxuICAgICAgY29uc3QgZHJhZ2dhYmJsZSA9IHRoaXMudmlldy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKFxyXG4gICAgICAgICdkcmFnZ2FibGUnXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBkcmFnZ2FiYmxlID09PSAndHJ1ZScgJiZcclxuICAgICAgICAkZXZlbnQgJiZcclxuICAgICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyICYmXHJcbiAgICAgICAgdGhpcy5zb3VyY2VPYmplY3RJZFxyXG4gICAgICApIHtcclxuICAgICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSAnbW92ZSc7XHJcbiAgICAgICAgY29uc3Qgc291cmNlSWRzID0gdGhpcy5zb3VyY2VPYmplY3RJZCArICcjJyArIHRoaXMuc291cmNlV3JhcHBlcklkO1xyXG4gICAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgnVGV4dCcsIHNvdXJjZUlkcyk7XHJcblxyXG4gICAgICAgIC8vIG9ubHkgd2F5IEkgZm91bmQgdG8gc3VwcG9ydCBkcmFnIGFuZCBkcm9wIGluIElFICh0cnkgYW5kIGlmIGl0IGZhaWxzLCBkbyB0aGUgSUUgd2F5KVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEodGhpcy50eXBlLnRvU3RyaW5nKCksICcnKTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICRldmVudC5kYXRhVHJhbnNmZXIudHlwZXMuaXRlbVsxXSA9IHRoaXMudHlwZS50b1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ2VuZCcsIFsnJGV2ZW50J10pIHB1YmxpYyBvbkRyYWdFbmQoJGV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5tb2RlICE9PSBGb3JtUUxNb2RlLlZpZXcpXHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKFxyXG4gICAgICAgIHRoaXMudmlldy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgJ2RyYWdnYWJsZScsXHJcbiAgICAgICAgJ2ZhbHNlJ1xyXG4gICAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=