1
1
import AbstractEvent from 'shared/AbstractEvent' ;
2
2
3
+ import { DragEvent , DragEventData } from '../../Draggable/DragEvent' ;
4
+
5
+ interface SwappableEventData {
6
+ dragEvent : DragEvent < DragEventData > ;
7
+ }
8
+
3
9
/**
4
10
* Base swappable event
5
11
* @class SwappableEvent
6
12
* @module SwappableEvent
7
13
* @extends AbstractEvent
8
14
*/
9
- export class SwappableEvent extends AbstractEvent {
15
+ export class SwappableEvent <
16
+ T extends SwappableEventData ,
17
+ > extends AbstractEvent < SwappableEventData > {
10
18
static type = 'swappable' ;
11
19
20
+ /**
21
+ * SwappableEvent constructor.
22
+ * @constructs SwappableEvent
23
+ * @param {SwappableEventData } data - Event data
24
+ */
25
+ constructor ( public data : T ) {
26
+ super ( data ) ;
27
+ }
28
+
12
29
/**
13
30
* Original drag event that triggered this swappable event
14
31
* @property dragEvent
@@ -26,18 +43,23 @@ export class SwappableEvent extends AbstractEvent {
26
43
* @module SwappableStartEvent
27
44
* @extends SwappableEvent
28
45
*/
29
- export class SwappableStartEvent extends SwappableEvent {
46
+ export class SwappableStartEvent extends SwappableEvent < SwappableEventData > {
30
47
static type = 'swappable:start' ;
31
48
static cancelable = true ;
32
49
}
33
50
51
+ interface SwappableSwapEventData extends SwappableEventData {
52
+ over : HTMLElement ;
53
+ overContainer : HTMLElement ;
54
+ }
55
+
34
56
/**
35
57
* Swappable swap event
36
58
* @class SwappableSwapEvent
37
59
* @module SwappableSwapEvent
38
60
* @extends SwappableEvent
39
61
*/
40
- export class SwappableSwapEvent extends SwappableEvent {
62
+ export class SwappableSwapEvent extends SwappableEvent < SwappableSwapEventData > {
41
63
static type = 'swappable:swap' ;
42
64
static cancelable = true ;
43
65
@@ -62,13 +84,17 @@ export class SwappableSwapEvent extends SwappableEvent {
62
84
}
63
85
}
64
86
87
+ interface SwappableSwappedEventData extends SwappableEventData {
88
+ swappedElement : HTMLElement ;
89
+ }
90
+
65
91
/**
66
92
* Swappable swapped event
67
93
* @class SwappableSwappedEvent
68
94
* @module SwappableSwappedEvent
69
95
* @extends SwappableEvent
70
96
*/
71
- export class SwappableSwappedEvent extends SwappableEvent {
97
+ export class SwappableSwappedEvent extends SwappableEvent < SwappableSwappedEventData > {
72
98
static type = 'swappable:swapped' ;
73
99
74
100
/**
@@ -88,6 +114,6 @@ export class SwappableSwappedEvent extends SwappableEvent {
88
114
* @module SwappableStopEvent
89
115
* @extends SwappableEvent
90
116
*/
91
- export class SwappableStopEvent extends SwappableEvent {
117
+ export class SwappableStopEvent extends SwappableEvent < SwappableEventData > {
92
118
static type = 'swappable:stop' ;
93
119
}
0 commit comments