@formql/core
Version:
FormQL - A framework for building dynamic forms
77 lines • 7.82 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
*/
let DndDirective = class DndDirective {
constructor(view, renderer) {
this.view = view;
this.renderer = renderer;
this.synchronise = new EventEmitter();
}
onDragStart($event) {
if (this.mode !== FormQLMode.View) {
const draggabble = this.view.element.nativeElement.getAttribute('draggable');
if (draggabble === 'true' &&
$event &&
$event.dataTransfer &&
this.sourceObjectId) {
$event.dataTransfer.effectAllowed = 'move';
const 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();
}
}
}
}
onDragEnd($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);
export { DndDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bmb3JtcWwvY29yZS8iLCJzb3VyY2VzIjpbImRpcmVjdGl2ZXMvZG5kLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFOztFQUVFO0FBSUYsSUFBYSxZQUFZLEdBQXpCLE1BQWEsWUFBWTtJQUN2QixZQUFvQixJQUFzQixFQUFVLFFBQW1CO1FBQW5ELFNBQUksR0FBSixJQUFJLENBQWtCO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQU83RCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBUFksQ0FBQztJQVM3QixXQUFXLENBQUMsTUFBTTtRQUM5RCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksRUFBRTtZQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUM3RCxXQUFXLENBQ1osQ0FBQztZQUNGLElBQ0UsVUFBVSxLQUFLLE1BQU07Z0JBQ3JCLE1BQU07Z0JBQ04sTUFBTSxDQUFDLFlBQVk7Z0JBQ25CLElBQUksQ0FBQyxjQUFjLEVBQ25CO2dCQUNBLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztnQkFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDbkUsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUUvQyx1RkFBdUY7Z0JBQ3ZGLElBQUk7b0JBQ0YsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDdkQ7Z0JBQUMsV0FBTTtvQkFDTixNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFDMUQ7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUUyQyxTQUFTLENBQUMsTUFBTTtRQUMxRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUk7WUFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFDL0IsV0FBVyxFQUNYLE9BQU8sQ0FDUixDQUFDO0lBQ04sQ0FBQztDQUNGLENBQUE7QUF4Q1U7SUFBUixLQUFLLEVBQUU7O29EQUErQjtBQUM5QjtJQUFSLEtBQUssRUFBRTs7cURBQWdDO0FBQy9CO0lBQVIsS0FBSyxFQUFFOzswQ0FBNEI7QUFDM0I7SUFBUixLQUFLLEVBQUU7OzBDQUF5QjtBQUV2QjtJQUFULE1BQU0sRUFBRTs4QkFBYyxZQUFZO2lEQUEyQjtBQUV2QjtJQUF0QyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7K0NBdUJyQztBQUVvQztJQUFwQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7NkNBT25DO0FBMUNVLFlBQVk7SUFIeEIsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLGFBQWE7S0FDeEIsQ0FBQztxQ0FFMEIsZ0JBQWdCLEVBQW9CLFNBQVM7R0FENUQsWUFBWSxDQTJDeEI7U0EzQ1ksWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBWaWV3Q29udGFpbmVyUmVmLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgUmVuZGVyZXIyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250YWluZXJUeXBlLCBGb3JtUUxNb2RlIH0gZnJvbSAnLi4vbW9kZWxzL3R5cGUubW9kZWwnO1xyXG4vKlxyXG4gICAgRGlyZWN0aXZlIHRvIGhhbmRsZSB0aGUgc3RhcnQgZHJhZyBzdGFydCBhbmQgcGFzcyB0aGUgaW5mb3JtYXRpb24gdG8gdGhlIGRuZC1kcm9wIGRpcmVjdGl2ZVxyXG4qL1xyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tmb3JtcWxEbmRdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIERuZERpcmVjdGl2ZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2aWV3OiBWaWV3Q29udGFpbmVyUmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzb3VyY2VPYmplY3RJZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzb3VyY2VXcmFwcGVySWQ6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgdHlwZTogQ29udGFpbmVyVHlwZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbW9kZTogRm9ybVFMTW9kZTtcclxuXHJcbiAgQE91dHB1dCgpIHN5bmNocm9uaXNlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZHJhZ3N0YXJ0JywgWyckZXZlbnQnXSkgcHVibGljIG9uRHJhZ1N0YXJ0KCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMubW9kZSAhPT0gRm9ybVFMTW9kZS5WaWV3KSB7XHJcbiAgICAgIGNvbnN0IGRyYWdnYWJibGUgPSB0aGlzLnZpZXcuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZShcclxuICAgICAgICAnZHJhZ2dhYmxlJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZHJhZ2dhYmJsZSA9PT0gJ3RydWUnICYmXHJcbiAgICAgICAgJGV2ZW50ICYmXHJcbiAgICAgICAgJGV2ZW50LmRhdGFUcmFuc2ZlciAmJlxyXG4gICAgICAgIHRoaXMuc291cmNlT2JqZWN0SWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgJGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ21vdmUnO1xyXG4gICAgICAgIGNvbnN0IHNvdXJjZUlkcyA9IHRoaXMuc291cmNlT2JqZWN0SWQgKyAnIycgKyB0aGlzLnNvdXJjZVdyYXBwZXJJZDtcclxuICAgICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoJ1RleHQnLCBzb3VyY2VJZHMpO1xyXG5cclxuICAgICAgICAvLyBvbmx5IHdheSBJIGZvdW5kIHRvIHN1cHBvcnQgZHJhZyBhbmQgZHJvcCBpbiBJRSAodHJ5IGFuZCBpZiBpdCBmYWlscywgZG8gdGhlIElFIHdheSlcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgJGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKHRoaXMudHlwZS50b1N0cmluZygpLCAnJyk7XHJcbiAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLml0ZW1bMV0gPSB0aGlzLnR5cGUudG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdlbmQnLCBbJyRldmVudCddKSBwdWJsaWMgb25EcmFnRW5kKCRldmVudCkge1xyXG4gICAgaWYgKHRoaXMubW9kZSAhPT0gRm9ybVFMTW9kZS5WaWV3KVxyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShcclxuICAgICAgICB0aGlzLnZpZXcuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgICdkcmFnZ2FibGUnLFxyXG4gICAgICAgICdmYWxzZSdcclxuICAgICAgKTtcclxuICB9XHJcbn1cclxuIl19