Skip to content

Commit a0c3c90

Browse files
committed
Convert DroppableEvent to typescript
1 parent 7734961 commit a0c3c90

File tree

3 files changed

+43
-5
lines changed

3 files changed

+43
-5
lines changed

.changeset/spicy-clouds-tickle.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/draggable': patch
3+
---
4+
5+
Convert DroppableEvent to typescript

src/Droppable/DroppableEvent/DroppableEvent.js renamed to src/Droppable/DroppableEvent/DroppableEvent.ts

+38-5
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,31 @@
11
import AbstractEvent from 'shared/AbstractEvent';
22

3+
import {DragEvent, DragEventData} from '../../Draggable/DragEvent';
4+
5+
interface DroppableEventData {
6+
dragEvent: DragEvent<DragEventData>;
7+
}
8+
39
/**
410
* Base droppable event
511
* @class DroppableEvent
612
* @module DroppableEvent
713
* @extends AbstractEvent
814
*/
9-
export class DroppableEvent extends AbstractEvent {
15+
export class DroppableEvent<
16+
T extends DroppableEventData,
17+
> extends AbstractEvent<DroppableEventData> {
1018
static type = 'droppable';
1119

20+
/**
21+
* DroppableEvent constructor.
22+
* @constructs DroppableEvent
23+
* @param {DroppableEventData} data - Event data
24+
*/
25+
constructor(public data: T) {
26+
super(data);
27+
}
28+
1229
/**
1330
* Original drag event that triggered this droppable event
1431
* @property dragEvent
@@ -20,13 +37,17 @@ export class DroppableEvent extends AbstractEvent {
2037
}
2138
}
2239

40+
interface DroppableStartEventData extends DroppableEventData {
41+
dropzone: HTMLElement;
42+
}
43+
2344
/**
2445
* Droppable start event
2546
* @class DroppableStartEvent
2647
* @module DroppableStartEvent
2748
* @extends DroppableEvent
2849
*/
29-
export class DroppableStartEvent extends DroppableEvent {
50+
export class DroppableStartEvent extends DroppableEvent<DroppableStartEventData> {
3051
static type = 'droppable:start';
3152
static cancelable = true;
3253

@@ -41,13 +62,17 @@ export class DroppableStartEvent extends DroppableEvent {
4162
}
4263
}
4364

65+
interface DroppableDroppedEventData extends DroppableEventData {
66+
dropzone: HTMLElement;
67+
}
68+
4469
/**
4570
* Droppable dropped event
4671
* @class DroppableDroppedEvent
4772
* @module DroppableDroppedEvent
4873
* @extends DroppableEvent
4974
*/
50-
export class DroppableDroppedEvent extends DroppableEvent {
75+
export class DroppableDroppedEvent extends DroppableEvent<DroppableDroppedEventData> {
5176
static type = 'droppable:dropped';
5277
static cancelable = true;
5378

@@ -62,13 +87,17 @@ export class DroppableDroppedEvent extends DroppableEvent {
6287
}
6388
}
6489

90+
interface DroppableReturnedEventData extends DroppableEventData {
91+
dropzone: HTMLElement;
92+
}
93+
6594
/**
6695
* Droppable returned event
6796
* @class DroppableReturnedEvent
6897
* @module DroppableReturnedEvent
6998
* @extends DroppableEvent
7099
*/
71-
export class DroppableReturnedEvent extends DroppableEvent {
100+
export class DroppableReturnedEvent extends DroppableEvent<DroppableReturnedEventData> {
72101
static type = 'droppable:returned';
73102
static cancelable = true;
74103

@@ -83,13 +112,17 @@ export class DroppableReturnedEvent extends DroppableEvent {
83112
}
84113
}
85114

115+
interface DroppableStopEventData extends DroppableEventData {
116+
dropzone: HTMLElement;
117+
}
118+
86119
/**
87120
* Droppable stop event
88121
* @class DroppableStopEvent
89122
* @module DroppableStopEvent
90123
* @extends DroppableEvent
91124
*/
92-
export class DroppableStopEvent extends DroppableEvent {
125+
export class DroppableStopEvent extends DroppableEvent<DroppableStopEventData> {
93126
static type = 'droppable:stop';
94127
static cancelable = true;
95128

0 commit comments

Comments
 (0)