UNPKG

@formql/core

Version:

FormQL - A framework for building dynamic forms

77 lines 7.82 kB
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