UNPKG

@uex/web-extensions

Version:

Uex extensions for Angular 6+ web projects

224 lines 19.6 kB
/** * @fileoverview added by tsickle * Generated from: lib/modules/drag-and-drop/classes/draggable.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { EventEmitter } from '@angular/core'; export class Draggable { /** * @param {?} _service * @param {?} id * @param {?} element */ constructor(_service, id, element) { this._service = _service; this.id = id; this.element = element; this.enabled = true; this.dragging = false; this.name = ''; this.action = 'move'; this.use_placeholder = true; this.placeholder_class = null; this.data = null; this.onStart = new EventEmitter(); this.onEnd = new EventEmitter(); this.$onStart = new EventEmitter(); this.$onEnd = new EventEmitter(); this._drag_placeholder = document.createElement('div'); this._onDragStart = (/** * @param {?} event * @return {?} */ (event) => { event.stopPropagation(); if (!this.enabled || this.dragging) { return; } event.dataTransfer.effectAllowed = this.action; event.dataTransfer.dropEffect = this.action; /** @type {?} */ const element = this.element; /** @type {?} */ const parent = this.element.parentNode; /** @type {?} */ const rects = element.getBoundingClientRect(); /** @type {?} */ const styles = window.getComputedStyle(element); if (this.use_placeholder) { this._drag_placeholder.classList.add('uex-drag-placeholder'); if (this.placeholder_class) { this._drag_placeholder.classList.add(this.placeholder_class); } this._drag_placeholder.style.width = `${rects.width}px`; this._drag_placeholder.style.height = `${rects.height}px`; this._drag_placeholder.style.borderRadius = styles.borderRadius || null; this._drag_placeholder.style.marginTop = styles.marginTop || null; this._drag_placeholder.style.marginRight = styles.marginRight || null; this._drag_placeholder.style.marginBottom = styles.marginBottom || null; this._drag_placeholder.style.marginLeft = styles.marginLeft || null; parent.insertBefore(this._drag_placeholder, element.nextSibling); } if (this.data) { event.dataTransfer.setData('text/plain', JSON.stringify({ data: this.data })); } this._drag_start_event = event; }); this._onDrag = (/** * @param {?} event * @return {?} */ (event) => { if (!this.enabled) { return; } if (!this.dragging) { if (this.use_placeholder) { this._drag_placeholder.style.display = 'block'; } this.dragging = true; this.$onStart.emit(this._drag_start_event); } }); this._onDragEnd = (/** * @param {?} event * @return {?} */ (event) => { if (!this.dragging) { return; } this._drag_start_event = null; this.dragging = false; event.dataTransfer.clearData(); if (this.use_placeholder) { this._drag_placeholder.style.display = 'none'; if (this._drag_placeholder.parentNode) { this._drag_placeholder.parentNode.removeChild(this._drag_placeholder); } } this.$onEnd.emit(event); }); this._service.addEventListener(this.element, 'dragstart', this._onDragStart); this._service.addEventListener(this.element, 'drag', this._onDrag, true); this._service.addEventListener(this.element, 'dragend', this._onDragEnd); this._service.addEventListener(this.element, 'drop', this._onDragEnd); } /** * @param {?} enabled * @return {?} */ setEnabled(enabled) { this.enabled = enabled; } /** * @param {?} dragging * @return {?} */ setDragging(dragging) { this.dragging = dragging; } /** * @param {?} name * @return {?} */ setName(name) { this.name = name; } /** * @param {?} action * @return {?} */ setAction(action) { this.action = action; } /** * @param {?} data * @return {?} */ setData(data) { this.data = data; } /** * @param {?} use_placeholder * @return {?} */ setUsePlaceholder(use_placeholder) { this.use_placeholder = use_placeholder; } /** * @param {?} placeholder_class * @return {?} */ setPlaceholderClass(placeholder_class) { this.placeholder_class = placeholder_class; } /** * @return {?} */ destroy() { this._service.removeEventListener(this.element, 'dragstart', this._onDragStart); this._service.removeEventListener(this.element, 'drag', this._onDrag); this._service.removeEventListener(document, 'dragend', this._onDragEnd); this._service.removeEventListener(this.element, 'drop', this._onDragEnd); } } if (false) { /** @type {?} */ Draggable.prototype.enabled; /** @type {?} */ Draggable.prototype.dragging; /** @type {?} */ Draggable.prototype.name; /** @type {?} */ Draggable.prototype.action; /** @type {?} */ Draggable.prototype.use_placeholder; /** @type {?} */ Draggable.prototype.placeholder_class; /** @type {?} */ Draggable.prototype.data; /** @type {?} */ Draggable.prototype.onStart; /** @type {?} */ Draggable.prototype.onEnd; /** @type {?} */ Draggable.prototype.$onStart; /** @type {?} */ Draggable.prototype.$onEnd; /** * @type {?} * @private */ Draggable.prototype._drag_placeholder; /** * @type {?} * @private */ Draggable.prototype._drag_start_event; /** * @type {?} * @private */ Draggable.prototype._onDragStart; /** * @type {?} * @private */ Draggable.prototype._onDrag; /** * @type {?} * @private */ Draggable.prototype._onDragEnd; /** * @type {?} * @private */ Draggable.prototype._service; /** @type {?} */ Draggable.prototype.id; /** @type {?} */ Draggable.prototype.element; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVleC93ZWItZXh0ZW5zaW9ucy8iLCJzb3VyY2VzIjpbImxpYi9tb2R1bGVzL2RyYWctYW5kLWRyb3AvY2xhc3Nlcy9kcmFnZ2FibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTdDLE1BQU0sT0FBTyxTQUFTOzs7Ozs7SUFDcEIsWUFDVSxRQUE0QixFQUNwQixFQUFVLEVBQ1YsT0FBb0I7UUFGNUIsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDcEIsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFRL0IsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFdBQU0sR0FBZSxNQUFNLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsc0JBQWlCLEdBQVcsSUFBSSxDQUFDO1FBQ2pDLFNBQUksR0FBUSxJQUFJLENBQUM7UUFFakIsWUFBTyxHQUFtQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzdELFVBQUssR0FBbUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUzRCxhQUFRLEdBQTRCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkQsV0FBTSxHQUE0QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXBELHNCQUFpQixHQUFnQixRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBc0MvRCxpQkFBWTs7OztRQUFHLENBQUMsS0FBZ0IsRUFBUSxFQUFFO1lBQ2hELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUV4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUFFLE9BQU87YUFBRTtZQUUvQyxLQUFLLENBQUMsWUFBWSxD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OztJQUU1RCxzQ0FBdUU7Ozs7O0lBQ3ZFLHNDQUFxQzs7Ozs7SUFxQ3JDLGlDQW9DQzs7Ozs7SUFFRCw0QkFXQzs7Ozs7SUFFRCwrQkFpQkM7Ozs7O0lBbklDLDZCQUFvQzs7SUFDcEMsdUJBQTBCOztJQUMxQiw0QkFBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IERyYWdBbmREcm9wU2VydmljZSwgRHJhZ0FjdGlvbiwgRHJhZ0FuZERyb3BFdmVudCB9IGZyb20gJy4uL2RyYWctYW5kLWRyb3Auc2VydmljZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgRHJhZ2dhYmxlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IERyYWdBbmREcm9wU2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBpZDogbnVtYmVyLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQ6IEhUTUxFbGVtZW50XHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5lbGVtZW50LCAnZHJhZ3N0YXJ0JywgdGhpcy5fb25EcmFnU3RhcnQpO1xyXG4gICAgdGhpcy5fc2VydmljZS5hZGRFdmVudExpc3RlbmVyKHRoaXMuZWxlbWVudCwgJ2RyYWcnLCB0aGlzLl9vbkRyYWcsIHRydWUpO1xyXG4gICAgdGhpcy5fc2VydmljZS5hZGRFdmVudExpc3RlbmVyKHRoaXMuZWxlbWVudCwgJ2RyYWdlbmQnLCB0aGlzLl9vbkRyYWdFbmQpO1xyXG4gICAgdGhpcy5fc2VydmljZS5hZGRFdmVudExpc3RlbmVyKHRoaXMuZWxlbWVudCwgJ2Ryb3AnLCB0aGlzLl9vbkRyYWdFbmQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuYWJsZWQgPSB0cnVlO1xyXG4gIHB1YmxpYyBkcmFnZ2luZyA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgbmFtZSA9ICcnO1xyXG4gIHB1YmxpYyBhY3Rpb246IERyYWdBY3Rpb24gPSAnbW92ZSc7XHJcbiAgcHVibGljIHVzZV9wbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgcHVibGljIHBsYWNlaG9sZGVyX2NsYXNzOiBzdHJpbmcgPSBudWxsO1xyXG4gIHB1YmxpYyBkYXRhOiBhbnkgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgb25TdGFydDogRXZlbnRFbWl0dGVyPERyYWdBbmREcm9wRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHB1YmxpYyBvbkVuZDogRXZlbnRFbWl0dGVyPERyYWdBbmREcm9wRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgJG9uU3RhcnQ6IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIHB1YmxpYyAkb25FbmQ6IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwcml2YXRlIF9kcmFnX3BsYWNlaG9sZGVyOiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gIHByaXZhdGUgX2RyYWdfc3RhcnRfZXZlbnQ6IERyYWdFdmVudDtcclxuXHJcbiAgcHVibGljIHNldEVuYWJsZWQoZW5hYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5lbmFibGVkID0gZW5hYmxlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREcmFnZ2luZyhkcmFnZ2luZzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kcmFnZ2luZyA9IGRyYWdnaW5nO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldE5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEFjdGlvbihhY3Rpb246IERyYWdBY3Rpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuYWN0aW9uID0gYWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldERhdGEoZGF0YTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFVzZVBsYWNlaG9sZGVyKHVzZV9wbGFjZWhvbGRlcjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy51c2VfcGxhY2Vob2xkZXIgPSB1c2VfcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UGxhY2Vob2xkZXJDbGFzcyhwbGFjZWhvbGRlcl9jbGFzczogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyX2NsYXNzID0gcGxhY2Vob2xkZXJfY2xhc3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3NlcnZpY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLmVsZW1lbnQsICdkcmFnc3RhcnQnLCB0aGlzLl9vbkRyYWdTdGFydCk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcy5lbGVtZW50LCAnZHJhZycsIHRoaXMuX29uRHJhZyk7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsICdkcmFnZW5kJywgdGhpcy5fb25EcmFnRW5kKTtcclxuICAgIHRoaXMuX3NlcnZpY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLmVsZW1lbnQsICdkcm9wJywgdGhpcy5fb25EcmFnRW5kKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29uRHJhZ1N0YXJ0ID0gKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkID0+IHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGlmICghdGhpcy5lbmFibGVkIHx8IHRoaXMuZHJhZ2dpbmcpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSB0aGlzLmFjdGlvbjtcclxuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gdGhpcy5hY3Rpb247XHJcblxyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudDtcclxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudC5wYXJlbnROb2RlO1xyXG4gICAgY29uc3QgcmVjdHMgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XHJcblxyXG4gICAgaWYgKHRoaXMudXNlX3BsYWNlaG9sZGVyKSB7XHJcbiAgICAgIHRoaXMuX2RyYWdfcGxhY2Vob2xkZXIuY2xhc3NMaXN0LmFkZCgndWV4LWRyYWctcGxhY2Vob2xkZXInKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyX2NsYXNzKSB7XHJcbiAgICAgICAgdGhpcy5fZHJhZ19wbGFjZWhvbGRlci5jbGFzc0xpc3QuYWRkKHRoaXMucGxhY2Vob2xkZXJfY2xhc3MpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9kcmFnX3BsYWNlaG9sZGVyLnN0eWxlLndpZHRoID0gYCR7cmVjdHMud2lkdGh9cHhgO1xyXG4gICAgICB0aGlzLl9kcmFnX3BsYWNlaG9sZGVyLnN0eWxlLmhlaWdodCA9IGAke3JlY3RzLmhlaWdodH1weGA7XHJcbiAgICAgIHRoaXMuX2RyYWdfcGxhY2Vob2xkZXIuc3R5bGUuYm9yZGVyUmFkaXVzID0gc3R5bGVzLmJvcmRlclJhZGl1cyB8fCBudWxsO1xyXG4gICAgICB0aGlzLl9kcmFnX3BsYWNlaG9sZGVyLnN0eWxlLm1hcmdpblRvcCA9IHN0eWxlcy5tYXJnaW5Ub3AgfHwgbnVsbDtcclxuICAgICAgdGhpcy5fZHJhZ19wbGFjZWhvbGRlci5zdHlsZS5tYXJnaW5SaWdodCA9IHN0eWxlcy5tYXJnaW5SaWdodCB8fCBudWxsO1xyXG4gICAgICB0aGlzLl9kcmFnX3BsYWNlaG9sZGVyLnN0eWxlLm1hcmdpbkJvdHRvbSA9IHN0eWxlcy5tYXJnaW5Cb3R0b20gfHwgbnVsbDtcclxuICAgICAgdGhpcy5fZHJhZ19wbGFjZWhvbGRlci5zdHlsZS5tYXJnaW5MZWZ0ID0gc3R5bGVzLm1hcmdpbkxlZnQgfHwgbnVsbDtcclxuXHJcbiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy5fZHJhZ19wbGFjZWhvbGRlciwgZWxlbWVudC5uZXh0U2libGluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YSkge1xyXG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dC9wbGFpbicsIEpTT04uc3RyaW5naWZ5KHtkYXRhOiB0aGlzLmRhdGEgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2RyYWdfc3RhcnRfZXZlbnQgPSBldmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29uRHJhZyA9IChldmVudDogRHJhZ0V2ZW50KTogdm9pZCA9PiB7XHJcbiAgICBpZiAoIXRoaXMuZW5hYmxlZCkgeyByZXR1cm47IH1cclxuXHJcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHtcclxuICAgICAgaWYgKHRoaXMudXNlX3BsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgdGhpcy5fZHJhZ19wbGFjZWhvbGRlci5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuJG9uU3RhcnQuZW1pdCh0aGlzLl9kcmFnX3N0YXJ0X2V2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29uRHJhZ0VuZCA9IChldmVudDogRHJhZ0V2ZW50KTogdm9pZCA9PiB7XHJcbiAgICBpZiAoIXRoaXMuZHJhZ2dpbmcpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgdGhpcy5fZHJhZ19zdGFydF9ldmVudCA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xyXG5cclxuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5jbGVhckRhdGEoKTtcclxuXHJcbiAgICBpZiAodGhpcy51c2VfcGxhY2Vob2xkZXIpIHtcclxuICAgICAgdGhpcy5fZHJhZ19wbGFjZWhvbGRlci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICBpZiAodGhpcy5fZHJhZ19wbGFjZWhvbGRlci5wYXJlbnROb2RlKSB7XHJcbiAgICAgICAgdGhpcy5fZHJhZ19wbGFjZWhvbGRlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2RyYWdfcGxhY2Vob2xkZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy4kb25FbmQuZW1pdChldmVudCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==