Skip to content

Commit c174023

Browse files
committed
feat: expose interfaces for all events
1 parent 22530b9 commit c174023

File tree

5 files changed

+30
-17
lines changed

5 files changed

+30
-17
lines changed

demo/demo.component.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Component } from '@angular/core';
2+
import { DropEvent } from '../src';
23

34
@Component({
45
selector: 'mwl-demo-app',
@@ -59,7 +60,7 @@ import { Component } from '@angular/core';
5960
export class DemoComponent {
6061
droppedData: string = '';
6162

62-
onDrop({ dropData }: { dropData: any }): void {
63+
onDrop({ dropData }: DropEvent<string>): void {
6364
this.droppedData = dropData;
6465
setTimeout(() => {
6566
this.droppedData = '';

src/draggable.directive.ts

+13-9
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,15 @@ export interface SnapGrid {
4444
y?: number;
4545
}
4646

47-
export interface DragStart {
47+
export interface DragPointerDownEvent extends Coordinates {}
48+
49+
export interface DragStartEvent {
4850
cancelDrag$: ReplaySubject<void>;
4951
}
5052

51-
export interface DragEnd extends Coordinates {
53+
export interface DragMoveEvent extends Coordinates {}
54+
55+
export interface DragEndEvent extends Coordinates {
5256
dragCancelled: boolean;
5357
}
5458

@@ -117,14 +121,14 @@ export class DraggableDirective implements OnInit, OnChanges, OnDestroy {
117121
/**
118122
* Called when the element can be dragged along one axis and has the mouse or pointer device pressed on it
119123
*/
120-
@Output() dragPointerDown = new EventEmitter<Coordinates>();
124+
@Output() dragPointerDown = new EventEmitter<DragPointerDownEvent>();
121125

122126
/**
123127
* Called when the element has started to be dragged.
124128
* Only called after at least one mouse or touch move event.
125129
* If you call $event.cancelDrag$.emit() it will cancel the current drag
126130
*/
127-
@Output() dragStart = new EventEmitter<DragStart>();
131+
@Output() dragStart = new EventEmitter<DragStartEvent>();
128132

129133
/**
130134
* Called after the ghost element has been created
@@ -134,27 +138,27 @@ export class DraggableDirective implements OnInit, OnChanges, OnDestroy {
134138
/**
135139
* Called when the element is being dragged
136140
*/
137-
@Output() dragging = new EventEmitter<Coordinates>();
141+
@Output() dragging = new EventEmitter<DragMoveEvent>();
138142

139143
/**
140144
* Called after the element is dragged
141145
*/
142-
@Output() dragEnd = new EventEmitter<DragEnd>();
146+
@Output() dragEnd = new EventEmitter<DragEndEvent>();
143147

144148
/**
145149
* @hidden
146150
*/
147-
pointerDown: Subject<PointerEvent> = new Subject();
151+
pointerDown = new Subject<PointerEvent>();
148152

149153
/**
150154
* @hidden
151155
*/
152-
pointerMove: Subject<PointerEvent> = new Subject();
156+
pointerMove = new Subject<PointerEvent>();
153157

154158
/**
155159
* @hidden
156160
*/
157-
pointerUp: Subject<PointerEvent> = new Subject();
161+
pointerUp = new Subject<PointerEvent>();
158162

159163
private eventListenerSubscriptions: {
160164
mousemove?: () => void;

src/droppable.directive.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ function isCoordinateWithinRectangle(
2626
);
2727
}
2828

29-
export interface DropData {
30-
dropData: any;
29+
export interface DropEvent<T = any> {
30+
dropData: T;
3131
}
3232

3333
@Directive({
@@ -47,22 +47,22 @@ export class DroppableDirective implements OnInit, OnDestroy {
4747
/**
4848
* Called when a draggable element starts overlapping the element
4949
*/
50-
@Output() dragEnter = new EventEmitter<DropData>();
50+
@Output() dragEnter = new EventEmitter<DropEvent>();
5151

5252
/**
5353
* Called when a draggable element stops overlapping the element
5454
*/
55-
@Output() dragLeave = new EventEmitter<DropData>();
55+
@Output() dragLeave = new EventEmitter<DropEvent>();
5656

5757
/**
5858
* Called when a draggable element is moved over the element
5959
*/
60-
@Output() dragOver = new EventEmitter<DropData>();
60+
@Output() dragOver = new EventEmitter<DropEvent>();
6161

6262
/**
6363
* Called when a draggable element is dropped on this element
6464
*/
65-
@Output() drop = new EventEmitter<DropData>(); // tslint:disable-line no-output-named-after-standard-event
65+
@Output() drop = new EventEmitter<DropEvent>(); // tslint:disable-line no-output-named-after-standard-event
6666

6767
currentDragSubscription: Subscription;
6868

src/index.ts

+7
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
11
export * from './drag-and-drop.module';
2+
export { DropEvent } from './droppable.directive';
3+
export {
4+
DragPointerDownEvent,
5+
DragStartEvent,
6+
DragMoveEvent,
7+
DragEndEvent
8+
} from './draggable.directive';

tslint.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"no-unused-expression": [false],
66
"max-inline-declarations": false,
77
"enforce-component-selector": false,
8-
"no-unused-css": false
8+
"no-unused-css": false,
9+
"no-empty-interface": false
910
}
1011
}

0 commit comments

Comments
 (0)