1
1
import AbstractEvent from 'shared/AbstractEvent' ;
2
2
3
+ import {
4
+ DragEvent ,
5
+ DragEventData ,
6
+ DragOverEvent ,
7
+ DragOutEvent ,
8
+ DragOverContainerEvent ,
9
+ DragOutContainerEvent ,
10
+ } from '../../Draggable/DragEvent' ;
11
+
12
+ interface SortableEventData {
13
+ dragEvent : DragEvent < DragEventData > ;
14
+ }
15
+
3
16
/**
4
17
* Base sortable event
5
18
* @class SortableEvent
6
19
* @module SortableEvent
7
20
* @extends AbstractEvent
8
21
*/
9
- export class SortableEvent extends AbstractEvent {
22
+ export class SortableEvent <
23
+ T extends SortableEventData ,
24
+ > extends AbstractEvent < SortableEventData > {
10
25
static type = 'sortable' ;
11
26
27
+ /**
28
+ * SortableEvent constructor.
29
+ * @constructs SortableEvent
30
+ * @param {SortableEventData } data - Event data
31
+ */
32
+ constructor ( public data : T ) {
33
+ super ( data ) ;
34
+ }
35
+
12
36
/**
13
37
* Original drag event that triggered this sortable event
14
38
* @property dragEvent
@@ -20,13 +44,18 @@ export class SortableEvent extends AbstractEvent {
20
44
}
21
45
}
22
46
47
+ interface SortableStartEventData extends SortableEventData {
48
+ startIndex : number ;
49
+ startContainer : HTMLElement ;
50
+ }
51
+
23
52
/**
24
53
* Sortable start event
25
54
* @class SortableStartEvent
26
55
* @module SortableStartEvent
27
56
* @extends SortableEvent
28
57
*/
29
- export class SortableStartEvent extends SortableEvent {
58
+ export class SortableStartEvent extends SortableEvent < SortableStartEventData > {
30
59
static type = 'sortable:start' ;
31
60
static cancelable = true ;
32
61
@@ -51,13 +80,23 @@ export class SortableStartEvent extends SortableEvent {
51
80
}
52
81
}
53
82
83
+ interface SortableSortEventData extends SortableEventData {
84
+ dragEvent :
85
+ | DragOverEvent
86
+ | DragOutEvent
87
+ | DragOverContainerEvent
88
+ | DragOutContainerEvent ;
89
+ currentIndex : number ;
90
+ over : HTMLElement ;
91
+ }
92
+
54
93
/**
55
94
* Sortable sort event
56
95
* @class SortableSortEvent
57
96
* @module SortableSortEvent
58
97
* @extends SortableEvent
59
98
*/
60
- export class SortableSortEvent extends SortableEvent {
99
+ export class SortableSortEvent extends SortableEvent < SortableSortEventData > {
61
100
static type = 'sortable:sort' ;
62
101
static cancelable = true ;
63
102
@@ -92,13 +131,20 @@ export class SortableSortEvent extends SortableEvent {
92
131
}
93
132
}
94
133
134
+ interface SortableSortedEventData extends SortableEventData {
135
+ oldIndex : number ;
136
+ newIndex : number ;
137
+ oldContainer : HTMLElement ;
138
+ newContainer : HTMLElement ;
139
+ }
140
+
95
141
/**
96
142
* Sortable sorted event
97
143
* @class SortableSortedEvent
98
144
* @module SortableSortedEvent
99
145
* @extends SortableEvent
100
146
*/
101
- export class SortableSortedEvent extends SortableEvent {
147
+ export class SortableSortedEvent extends SortableEvent < SortableSortedEventData > {
102
148
static type = 'sortable:sorted' ;
103
149
104
150
/**
@@ -142,13 +188,20 @@ export class SortableSortedEvent extends SortableEvent {
142
188
}
143
189
}
144
190
191
+ interface SortableStopEventData extends SortableEventData {
192
+ oldIndex : number ;
193
+ newIndex : number ;
194
+ oldContainer : HTMLElement ;
195
+ newContainer : HTMLElement ;
196
+ }
197
+
145
198
/**
146
199
* Sortable stop event
147
200
* @class SortableStopEvent
148
201
* @module SortableStopEvent
149
202
* @extends SortableEvent
150
203
*/
151
- export class SortableStopEvent extends SortableEvent {
204
+ export class SortableStopEvent extends SortableEvent < SortableStopEventData > {
152
205
static type = 'sortable:stop' ;
153
206
154
207
/**
0 commit comments