@uex/web-extensions
Version:
Uex extensions for Angular 6+ web projects
224 lines • 19.6 kB
JavaScript
/**
* @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==