ng-devui
Version:
DevUI components based on Angular
63 lines • 8.65 kB
JavaScript
import { ComponentFactoryResolver, Directive, Input, TemplateRef } from '@angular/core';
import { OverlayContainerRef } from 'ng-devui/overlay-container';
import { DragDropService } from '../services/drag-drop.service';
import { DragPreviewComponent } from './drag-preview.component';
import * as i0 from "@angular/core";
import * as i1 from "ng-devui/overlay-container";
import * as i2 from "../services/drag-drop.service";
export class DragPreviewDirective {
constructor(componentFactoryResolver, overlayContainerRef, dragDropService) {
this.componentFactoryResolver = componentFactoryResolver;
this.overlayContainerRef = overlayContainerRef;
this.dragDropService = dragDropService;
this.dragPreviewOptions = {
skipBatchPreview: false
};
}
createPreview() {
const finalComponentFactoryResolver = this.componentFactoryResolver;
const previewRef = this.overlayContainerRef.createComponent(finalComponentFactoryResolver.resolveComponentFactory(DragPreviewComponent));
this.previewRef = previewRef;
this.updateData();
return this.previewRef;
}
updateData() {
Object.assign(this.previewRef.instance, {
templateRef: this.dragPreviewTemplate,
data: this.dragPreviewData,
draggedEl: this.dragDropService.draggedEl,
dragData: this.dragDropService.dragData,
batchDragData: this.dragDropService.batchDragData && this.dragDropService.getBatchDragData(),
dragSyncDOMElements: this.dragDropService.dragSyncGroupDirectives && this.getDragSyncDOMElements()
});
this.previewRef.instance.updateTemplate();
}
destroyPreview() {
if (this.previewRef) {
this.previewRef.hostView.destroy();
}
}
getPreviewElement() {
return this.previewRef && this.previewRef.instance.element;
}
getDragSyncDOMElements() {
return this.dragDropService.dragSyncGroupDirectives.map(dir => dir.el.nativeElement);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragPreviewDirective, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1.OverlayContainerRef }, { token: i2.DragDropService }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DragPreviewDirective, selector: "[dDraggable][dDragPreview]", inputs: { dragPreviewTemplate: ["dDragPreview", "dragPreviewTemplate"], dragPreviewData: "dragPreviewData", dragPreviewOptions: "dragPreviewOptions" }, exportAs: ["dDragPreview"], ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragPreviewDirective, decorators: [{
type: Directive,
args: [{
selector: '[dDraggable][dDragPreview]',
exportAs: 'dDragPreview'
}]
}], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i1.OverlayContainerRef }, { type: i2.DragDropService }], propDecorators: { dragPreviewTemplate: [{
type: Input,
args: ['dDragPreview']
}], dragPreviewData: [{
type: Input
}], dragPreviewOptions: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1wcmV2aWV3LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2RldnVpL2RyYWdkcm9wL2RpcmVjdGl2ZXMvZHJhZy1wcmV2aWV3LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBT2hFLE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsWUFBb0Isd0JBQWtELEVBQ2xELG1CQUF3QyxFQUFVLGVBQWdDO1FBRGxGLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUFVLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUw3Rix1QkFBa0IsR0FBRztZQUM1QixnQkFBZ0IsRUFBRSxLQUFLO1NBQ3hCLENBQUM7SUFJRixDQUFDO0lBRU0sYUFBYTtRQUNsQixNQUFNLDZCQUE2QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUVwRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUN6RCw2QkFBNkIsQ0FBQyx1QkFBdUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUM1RSxDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVTtRQUNmLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDdEMsV0FBVyxFQUFFLElBQUksQ0FBQyxtQkFBbUI7WUFDckMsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQzFCLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVM7WUFDekMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUTtZQUN2QyxhQUFhLEVBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRTtZQUM3RixtQkFBbUIsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtTQUNuRyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzdELENBQUM7SUFDTyxzQkFBc0I7UUFDNUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkYsQ0FBQzsrR0E3Q1Usb0JBQW9CO21HQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBTGhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsUUFBUSxFQUFFLGNBQWM7aUJBQ3pCOzZKQUd3QixtQkFBbUI7c0JBQXpDLEtBQUs7dUJBQUMsY0FBYztnQkFDWixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXlDb250YWluZXJSZWYgfSBmcm9tICduZy1kZXZ1aS9vdmVybGF5LWNvbnRhaW5lcic7XG5pbXBvcnQgeyBEcmFnRHJvcFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kcmFnLWRyb3Auc2VydmljZSc7XG5pbXBvcnQgeyBEcmFnUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vZHJhZy1wcmV2aWV3LmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkRHJhZ2dhYmxlXVtkRHJhZ1ByZXZpZXddJyxcbiAgZXhwb3J0QXM6ICdkRHJhZ1ByZXZpZXcnXG59KVxuXG5leHBvcnQgY2xhc3MgRHJhZ1ByZXZpZXdEaXJlY3RpdmUge1xuICBASW5wdXQoJ2REcmFnUHJldmlldycpIGRyYWdQcmV2aWV3VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGRyYWdQcmV2aWV3RGF0YTtcbiAgQElucHV0KCkgZHJhZ1ByZXZpZXdPcHRpb25zID0ge1xuICAgIHNraXBCYXRjaFByZXZpZXc6IGZhbHNlXG4gIH07XG4gIHB1YmxpYyBwcmV2aWV3UmVmO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIG92ZXJsYXlDb250YWluZXJSZWY6IE92ZXJsYXlDb250YWluZXJSZWYsIHByaXZhdGUgZHJhZ0Ryb3BTZXJ2aWNlOiBEcmFnRHJvcFNlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVQcmV2aWV3KCkge1xuICAgIGNvbnN0IGZpbmFsQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI7XG5cbiAgICBjb25zdCBwcmV2aWV3UmVmID0gdGhpcy5vdmVybGF5Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgIGZpbmFsQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KERyYWdQcmV2aWV3Q29tcG9uZW50KVxuICAgICk7XG4gICAgdGhpcy5wcmV2aWV3UmVmID0gcHJldmlld1JlZjtcbiAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3UmVmO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURhdGEoKSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLnByZXZpZXdSZWYuaW5zdGFuY2UsIHtcbiAgICAgIHRlbXBsYXRlUmVmOiB0aGlzLmRyYWdQcmV2aWV3VGVtcGxhdGUsXG4gICAgICBkYXRhOiB0aGlzLmRyYWdQcmV2aWV3RGF0YSxcbiAgICAgIGRyYWdnZWRFbDogdGhpcy5kcmFnRHJvcFNlcnZpY2UuZHJhZ2dlZEVsLFxuICAgICAgZHJhZ0RhdGE6IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmRyYWdEYXRhLFxuICAgICAgYmF0Y2hEcmFnRGF0YTogIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLmJhdGNoRHJhZ0RhdGEgJiYgdGhpcy5kcmFnRHJvcFNlcnZpY2UuZ2V0QmF0Y2hEcmFnRGF0YSgpLFxuICAgICAgZHJhZ1N5bmNET01FbGVtZW50czogdGhpcy5kcmFnRHJvcFNlcnZpY2UuZHJhZ1N5bmNHcm91cERpcmVjdGl2ZXMgJiYgdGhpcy5nZXREcmFnU3luY0RPTUVsZW1lbnRzKClcbiAgICB9KTtcbiAgICB0aGlzLnByZXZpZXdSZWYuaW5zdGFuY2UudXBkYXRlVGVtcGxhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95UHJldmlldygpIHtcbiAgICBpZiAodGhpcy5wcmV2aWV3UmVmKSB7XG4gICAgICB0aGlzLnByZXZpZXdSZWYuaG9zdFZpZXcuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRQcmV2aWV3RWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmV2aWV3UmVmICYmIHRoaXMucHJldmlld1JlZi5pbnN0YW5jZS5lbGVtZW50O1xuICB9XG4gIHByaXZhdGUgZ2V0RHJhZ1N5bmNET01FbGVtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5kcmFnRHJvcFNlcnZpY2UuZHJhZ1N5bmNHcm91cERpcmVjdGl2ZXMubWFwKGRpciA9PiBkaXIuZWwubmF0aXZlRWxlbWVudCk7XG4gIH1cbn1cbiJdfQ==