You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { Directive, ElementRef, HostListener, Input, OnInit } from '@angular/core';
|
|
import { FcCallbacks, FcConnector, FlowchartConstants } from './ngx-flowchart.models';
|
|
|
|
@Directive({
|
|
// tslint:disable-next-line:directive-selector
|
|
selector: '[fc-magnet]'
|
|
})
|
|
export class FcMagnetDirective implements OnInit {
|
|
|
|
@Input()
|
|
callbacks: FcCallbacks;
|
|
|
|
@Input()
|
|
connector: FcConnector;
|
|
|
|
constructor(public elementRef: ElementRef<HTMLElement>) {
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
const element = $(this.elementRef.nativeElement);
|
|
element.addClass(FlowchartConstants.magnetClass);
|
|
}
|
|
|
|
@HostListener('dragover', ['$event'])
|
|
dragover(event: DragEvent) {
|
|
return this.callbacks.edgeDragoverMagnet(event, this.connector);
|
|
}
|
|
|
|
@HostListener('dragleave', ['$event'])
|
|
dragleave(event: DragEvent) {
|
|
this.callbacks.edgeDragleaveMagnet(event);
|
|
}
|
|
|
|
@HostListener('drop', ['$event'])
|
|
drop(event: DragEvent) {
|
|
return this.callbacks.edgeDrop(event, this.connector);
|
|
}
|
|
|
|
@HostListener('dragend', ['$event'])
|
|
dragend(event: DragEvent) {
|
|
this.callbacks.edgeDragend(event);
|
|
}
|
|
|
|
}
|