Skip to content

Commit 74c35e5

Browse files
committed
Convert SwappableEvent to typescript
1 parent fb5354f commit 74c35e5

File tree

3 files changed

+36
-5
lines changed

3 files changed

+36
-5
lines changed

.changeset/grumpy-zebras-move.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/draggable': patch
3+
---
4+
5+
Convert SwappableEvent to typescript

src/Swappable/SwappableEvent/SwappableEvent.js renamed to src/Swappable/SwappableEvent/SwappableEvent.ts

Lines changed: 31 additions & 5 deletions
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 SwappableEventData {
6+
dragEvent: DragEvent<DragEventData>;
7+
}
8+
39
/**
410
* Base swappable event
511
* @class SwappableEvent
612
* @module SwappableEvent
713
* @extends AbstractEvent
814
*/
9-
export class SwappableEvent extends AbstractEvent {
15+
export class SwappableEvent<
16+
T extends SwappableEventData,
17+
> extends AbstractEvent<SwappableEventData> {
1018
static type = 'swappable';
1119

20+
/**
21+
* SwappableEvent constructor.
22+
* @constructs SwappableEvent
23+
* @param {SwappableEventData} data - Event data
24+
*/
25+
constructor(public data: T) {
26+
super(data);
27+
}
28+
1229
/**
1330
* Original drag event that triggered this swappable event
1431
* @property dragEvent
@@ -26,18 +43,23 @@ export class SwappableEvent extends AbstractEvent {
2643
* @module SwappableStartEvent
2744
* @extends SwappableEvent
2845
*/
29-
export class SwappableStartEvent extends SwappableEvent {
46+
export class SwappableStartEvent extends SwappableEvent<SwappableEventData> {
3047
static type = 'swappable:start';
3148
static cancelable = true;
3249
}
3350

51+
interface SwappableSwapEventData extends SwappableEventData {
52+
over: HTMLElement;
53+
overContainer: HTMLElement;
54+
}
55+
3456
/**
3557
* Swappable swap event
3658
* @class SwappableSwapEvent
3759
* @module SwappableSwapEvent
3860
* @extends SwappableEvent
3961
*/
40-
export class SwappableSwapEvent extends SwappableEvent {
62+
export class SwappableSwapEvent extends SwappableEvent<SwappableSwapEventData> {
4163
static type = 'swappable:swap';
4264
static cancelable = true;
4365

@@ -62,13 +84,17 @@ export class SwappableSwapEvent extends SwappableEvent {
6284
}
6385
}
6486

87+
interface SwappableSwappedEventData extends SwappableEventData {
88+
swappedElement: HTMLElement;
89+
}
90+
6591
/**
6692
* Swappable swapped event
6793
* @class SwappableSwappedEvent
6894
* @module SwappableSwappedEvent
6995
* @extends SwappableEvent
7096
*/
71-
export class SwappableSwappedEvent extends SwappableEvent {
97+
export class SwappableSwappedEvent extends SwappableEvent<SwappableSwappedEventData> {
7298
static type = 'swappable:swapped';
7399

74100
/**
@@ -88,6 +114,6 @@ export class SwappableSwappedEvent extends SwappableEvent {
88114
* @module SwappableStopEvent
89115
* @extends SwappableEvent
90116
*/
91-
export class SwappableStopEvent extends SwappableEvent {
117+
export class SwappableStopEvent extends SwappableEvent<SwappableEventData> {
92118
static type = 'swappable:stop';
93119
}

0 commit comments

Comments
 (0)