@uex/web-extensions
Version:
Uex extensions for Angular 6+ web projects
210 lines • 16.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/modules/drag-and-drop/drop-zone.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, ContentChildren, Input, Output, QueryList, ElementRef, EventEmitter } from '@angular/core';
import * as _ from 'lodash';
import { DragAndDropService } from './drag-and-drop.service';
import { DraggableDirective } from './draggable.directive';
export class DropZoneDirective {
/**
* @param {?} _service
* @param {?} elementRef
*/
constructor(_service, elementRef) {
this._service = _service;
this.elementRef = elementRef;
this.onDragEnter = new EventEmitter();
this.onDragLeave = new EventEmitter();
this.onDrop = new EventEmitter();
this.onRemove = new EventEmitter();
this.enabled = true;
this.dragging_over = false;
this.drop_zone = this._service.registerDropZone({
element: this._element
});
}
/**
* @private
* @param {?} enabled
* @return {?}
*/
set _setEnabled(enabled) {
if (_.isString(enabled) && _.isEmpty(enabled)) {
this.enabled = true;
}
else {
this.enabled = !!enabled;
}
this.drop_zone.setEnabled(this.enabled);
}
/**
* @private
* @param {?} restriction
* @return {?}
*/
set _setDropZoneRestriction(restriction) {
this.drop_zone_restriction = restriction;
this.drop_zone.setRestriction(this.drop_zone_restriction);
}
/**
* @return {?}
*/
ngOnInit() {
this._drag_enter_subscription = this.drop_zone.onEnter.subscribe((/**
* @param {?} event
* @return {?}
*/
(event) => {
if (this.dragging_over) {
return;
}
this.dragging_over = true;
if (this.drop_zone_drag_over_class) {
this._element.classList.add(this.drop_zone_drag_over_class);
}
this.onDragEnter.emit(event);
}));
this._drag_leave_subscription = this.drop_zone.onLeave.subscribe((/**
* @param {?} event
* @return {?}
*/
(event) => {
if (!this.dragging_over) {
return;
}
this.dragging_over = false;
if (this.drop_zone_drag_over_class) {
this._element.classList.remove(this.drop_zone_drag_over_class);
}
this.onDragLeave.emit(event);
}));
this._drop_subscription = this.drop_zone.onDrop.subscribe((/**
* @param {?} event
* @return {?}
*/
(event) => {
this.onDrop.emit(event);
}));
this._remove_subscription = this.drop_zone.onRemove.subscribe((/**
* @param {?} event
* @return {?}
*/
(event) => {
this.onRemove.emit(event);
}));
}
/**
* @return {?}
*/
ngAfterViewInit() {
this.drop_zone.setDraggableChildren(this._draggable_children.map((/**
* @param {?} child
* @return {?}
*/
(child) => child.draggable)));
}
/**
* @return {?}
*/
ngOnDestroy() {
if (this._drag_enter_subscription) {
this._drag_enter_subscription.unsubscribe();
}
if (this._drag_leave_subscription) {
this._drag_leave_subscription.unsubscribe();
}
if (this._drop_subscription) {
this._drop_subscription.unsubscribe();
}
if (this._remove_subscription) {
this._remove_subscription.unsubscribe();
}
this._service.unregisterDropZone(this.drop_zone);
}
/**
* @private
* @return {?}
*/
get _element() {
return this.elementRef.nativeElement;
}
}
DropZoneDirective.decorators = [
{ type: Directive, args: [{
selector: '[uexDropZone]',
host: {
'[class.uex-drop-zone]': 'enabled',
'[class.dragging-over]': 'dragging_over'
}
},] }
];
/** @nocollapse */
DropZoneDirective.ctorParameters = () => [
{ type: DragAndDropService },
{ type: ElementRef }
];
DropZoneDirective.propDecorators = {
_draggable_children: [{ type: ContentChildren, args: [DraggableDirective,] }],
_setEnabled: [{ type: Input, args: ['uexDropZone',] }],
_setDropZoneRestriction: [{ type: Input, args: ['uexDropZoneExclude',] }],
drop_zone_drag_over_class: [{ type: Input, args: ['uexDropZoneDragOverClass',] }],
onDragEnter: [{ type: Output, args: ['onDragEnter',] }],
onDragLeave: [{ type: Output, args: ['onDragLeave',] }],
onDrop: [{ type: Output, args: ['onDrop',] }],
onRemove: [{ type: Output, args: ['onRemove',] }]
};
if (false) {
/**
* @type {?}
* @private
*/
DropZoneDirective.prototype._draggable_children;
/** @type {?} */
DropZoneDirective.prototype.drop_zone_drag_over_class;
/** @type {?} */
DropZoneDirective.prototype.onDragEnter;
/** @type {?} */
DropZoneDirective.prototype.onDragLeave;
/** @type {?} */
DropZoneDirective.prototype.onDrop;
/** @type {?} */
DropZoneDirective.prototype.onRemove;
/** @type {?} */
DropZoneDirective.prototype.enabled;
/** @type {?} */
DropZoneDirective.prototype.dragging_over;
/** @type {?} */
DropZoneDirective.prototype.drop_zone_restriction;
/** @type {?} */
DropZoneDirective.prototype.drop_zone;
/**
* @type {?}
* @private
*/
DropZoneDirective.prototype._drag_enter_subscription;
/**
* @type {?}
* @private
*/
DropZoneDirective.prototype._drag_leave_subscription;
/**
* @type {?}
* @private
*/
DropZoneDirective.prototype._drop_subscription;
/**
* @type {?}
* @private
*/
DropZoneDirective.prototype._remove_subscription;
/**
* @type {?}
* @private
*/
DropZoneDirective.prototype._service;
/** @type {?} */
DropZoneDirective.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC16b25lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1ZXgvd2ViLWV4dGVuc2lvbnMvIiwic291cmNlcyI6WyJsaWIvbW9kdWxlcy9kcmFnLWFuZC1kcm9wL2Ryb3Atem9uZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUdqSixPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsa0JBQWtCLEVBQW9CLE1BQU0seUJBQXlCLENBQUM7QUFFL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFVM0QsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7SUF5QjVCLFlBQ1UsUUFBNEIsRUFDN0IsVUFBc0I7UUFEckIsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVJELGdCQUFXLEdBQTRCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUQsZ0JBQVcsR0FBNEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUvRCxXQUFNLEdBQW1DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUQsYUFBUSxHQUFtQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBV2xGLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQU4zQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7WUFDOUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7Ozs7OztJQTdCRCxJQUFrQyxXQUFXLENBQUMsT0FBeUI7UUFDckUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8s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QyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUFFO1FBQ3ZFLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQUU7UUFFM0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7Ozs7SUFFRCxJQUFZLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUN2QyxDQUFDOzs7WUE5RkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixJQUFJLEVBQUU7b0JBQ0osdUJBQXVCLEVBQUUsU0FBUztvQkFDbEMsdUJBQXVCLEVBQUUsZUFBZTtpQkFDekM7YUFDRjs7OztZQVhRLGtCQUFrQjtZQUxvQyxVQUFVOzs7a0NBa0J0RSxlQUFlLFNBQUMsa0JBQWtCOzBCQUVsQyxLQUFLLFNBQUMsYUFBYTtzQ0FVbkIsS0FBSyxTQUFDLG9CQUFvQjt3Q0FJMUIsS0FBSyxTQUFDLDBCQUEwQjswQkFFaEMsTUFBTSxTQUFDLGFBQWE7MEJBQ3BCLE1BQU0sU0FBQyxhQUFhO3FCQUVwQixNQUFNLFNBQUMsUUFBUTt1QkFDZixNQUFNLFNBQUMsVUFBVTs7Ozs7OztJQXRCbEIsZ0RBQWdHOztJQWdCaEcsc0RBQTRFOztJQUU1RSx3Q0FBd0Y7O0lBQ3hGLHdDQUF3Rjs7SUFFeEYsbUNBQXFGOztJQUNyRixxQ0FBeUY7O0lBV3pGLG9DQUFzQjs7SUFDdEIsMENBQTZCOztJQUM3QixrREFBZ0Q7O0lBRWhELHNDQUEyQjs7Ozs7SUFDM0IscURBQStDOzs7OztJQUMvQyxxREFBK0M7Ozs7O0lBQy9DLCtDQUF5Qzs7Ozs7SUFDekMsaURBQTJDOzs7OztJQWhCekMscUNBQW9DOztJQUNwQyx1Q0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIENvbnRlbnRDaGlsZHJlbiwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5cclxuaW1wb3J0IHsgRHJhZ0FuZERyb3BTZXJ2aWNlLCBEcmFnQW5kRHJvcEV2ZW50IH0gZnJvbSAnLi9kcmFnLWFuZC1kcm9wLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgRHJhZ2dhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kcmFnZ2FibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRHJvcFpvbmUgfSBmcm9tICcuL2NsYXNzZXMvZHJvcC16b25lJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3VleERyb3Bab25lXScsXHJcbiAgaG9zdDoge1xyXG4gICAgJ1tjbGFzcy51ZXgtZHJvcC16b25lXSc6ICdlbmFibGVkJyxcclxuICAgICdbY2xhc3MuZHJhZ2dpbmctb3Zlcl0nOiAnZHJhZ2dpbmdfb3ZlcidcclxuICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wWm9uZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBAQ29udGVudENoaWxkcmVuKERyYWdnYWJsZURpcmVjdGl2ZSkgcHJpdmF0ZSBfZHJhZ2dhYmxlX2NoaWxkcmVuOiBRdWVyeUxpc3Q8RHJhZ2dhYmxlRGlyZWN0aXZlPjtcclxuXHJcbiAgQElucHV0KCd1ZXhEcm9wWm9uZScpIHByaXZhdGUgc2V0IF9zZXRFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuICAgIGlmIChfLmlzU3RyaW5nKGVuYWJsZWQpICYmIF8uaXNFbXB0eShlbmFibGVkKSkge1xyXG4gICAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbmFibGVkID0gISFlbmFibGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZHJvcF96b25lLnNldEVuYWJsZWQodGhpcy5lbmFibGVkKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgndWV4RHJvcFpvbmVFeGNsdWRlJykgcHJpdmF0ZSBzZXQgX3NldERyb3Bab25lUmVzdHJpY3Rpb24ocmVzdHJpY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdKSB7XHJcbiAgICB0aGlzLmRyb3Bfem9uZV9yZXN0cmljdGlvbiA9IHJlc3RyaWN0aW9uO1xyXG4gICAgdGhpcy5kcm9wX3pvbmUuc2V0UmVzdHJpY3Rpb24odGhpcy5kcm9wX3pvbmVfcmVzdHJpY3Rpb24pO1xyXG4gIH1cclxuICBASW5wdXQoJ3VleERyb3Bab25lRHJhZ092ZXJDbGFzcycpIHB1YmxpYyBkcm9wX3pvbmVfZHJhZ19vdmVyX2NsYXNzOiBzdHJpbmc7XHJcblxyXG4gIEBPdXRwdXQoJ29uRHJhZ0VudGVyJykgcHVibGljIG9uRHJhZ0VudGVyOiBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCdvbkRyYWdMZWF2ZScpIHB1YmxpYyBvbkRyYWdMZWF2ZTogRXZlbnRFbWl0dGVyPERyYWdFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoJ29uRHJvcCcpIHB1YmxpYyBvbkRyb3A6IEV2ZW50RW1pdHRlcjxEcmFnQW5kRHJvcEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCdvblJlbW92ZScpIHB1YmxpYyBvblJlbW92ZTogRXZlbnRFbWl0dGVyPERyYWdBbmREcm9wRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3NlcnZpY2U6IERyYWdBbmREcm9wU2VydmljZSxcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgICB0aGlzLmRyb3Bfem9uZSA9IHRoaXMuX3NlcnZpY2UucmVnaXN0ZXJEcm9wWm9uZSh7XHJcbiAgICAgIGVsZW1lbnQ6IHRoaXMuX2VsZW1lbnRcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuYWJsZWQgPSB0cnVlO1xyXG4gIHB1YmxpYyBkcmFnZ2luZ19vdmVyID0gZmFsc2U7XHJcbiAgcHVibGljIGRyb3Bfem9uZV9yZXN0cmljdGlvbjogc3RyaW5nIHwgc3RyaW5nW107XHJcblxyXG4gIHB1YmxpYyBkcm9wX3pvbmU6IERyb3Bab25lO1xyXG4gIHByaXZhdGUgX2RyYWdfZW50ZXJfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfZHJhZ19sZWF2ZV9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIF9kcm9wX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX3JlbW92ZV9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fZHJhZ19lbnRlcl9zdWJzY3JpcHRpb24gPSB0aGlzLmRyb3Bfem9uZS5vbkVudGVyLnN1YnNjcmliZSgoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5kcmFnZ2luZ19vdmVyKSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgdGhpcy5kcmFnZ2luZ19vdmVyID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuZHJvcF96b25lX2RyYWdfb3Zlcl9jbGFzcykgeyB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5kcm9wX3pvbmVfZHJhZ19vdmVyX2NsYXNzKTsgfVxyXG5cclxuICAgICAgdGhpcy5vbkRyYWdFbnRlci5lbWl0KGV2ZW50KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2RyYWdfbGVhdmVfc3Vic2NyaXB0aW9uID0gdGhpcy5kcm9wX3pvbmUub25MZWF2ZS5zdWJzY3JpYmUoKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nX292ZXIpIHsgcmV0dXJuOyB9XHJcblxyXG4gICAgICB0aGlzLmRyYWdnaW5nX292ZXIgPSBmYWxzZTtcclxuICAgICAgaWYgKHRoaXMuZHJvcF96b25lX2RyYWdfb3Zlcl9jbGFzcykgeyB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5kcm9wX3pvbmVfZHJhZ19vdmVyX2NsYXNzKTsgfVxyXG5cclxuICAgICAgdGhpcy5vbkRyYWdMZWF2ZS5lbWl0KGV2ZW50KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2Ryb3Bfc3Vic2NyaXB0aW9uID0gdGhpcy5kcm9wX3pvbmUub25Ecm9wLnN1YnNjcmliZSgoZXZlbnQ6IERyYWdBbmREcm9wRXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5vbkRyb3AuZW1pdChldmVudCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9yZW1vdmVfc3Vic2NyaXB0aW9uID0gdGhpcy5kcm9wX3pvbmUub25SZW1vdmUuc3Vic2NyaWJlKChldmVudDogRHJhZ0FuZERyb3BFdmVudCkgPT4ge1xyXG4gICAgICB0aGlzLm9uUmVtb3ZlLmVtaXQoZXZlbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5kcm9wX3pvbmUuc2V0RHJhZ2dhYmxlQ2hpbGRyZW4odGhpcy5fZHJhZ2dhYmxlX2NoaWxkcmVuLm1hcCgoY2hpbGQpID0+IGNoaWxkLmRyYWdnYWJsZSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuX2RyYWdfZW50ZXJfc3Vic2NyaXB0aW9uKSB7IHRoaXMuX2RyYWdfZW50ZXJfc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH1cclxuICAgIGlmICh0aGlzLl9kcmFnX2xlYXZlX3N1YnNjcmlwdGlvbikgeyB0aGlzLl9kcmFnX2xlYXZlX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpOyB9XHJcbiAgICBpZiAodGhpcy5fZHJvcF9zdWJzY3JpcHRpb24pIHsgdGhpcy5fZHJvcF9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTsgfVxyXG4gICAgaWYgKHRoaXMuX3JlbW92ZV9zdWJzY3JpcHRpb24pIHsgdGhpcy5fcmVtb3ZlX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpOyB9XHJcblxyXG4gICAgdGhpcy5fc2VydmljZS51bnJlZ2lzdGVyRHJvcFpvbmUodGhpcy5kcm9wX3pvbmUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgX2VsZW1lbnQgKCk6IEhUTUxFbGVtZW50IHtcclxuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICB9XHJcbn1cclxuIl19