From 74c35e5aa4bd5c3bb7dcaf8cc432c4d5d932ee3f Mon Sep 17 00:00:00 2001 From: Max Hoffmann Date: Wed, 4 Oct 2023 09:54:02 -0700 Subject: [PATCH] Convert SwappableEvent to typescript --- .changeset/grumpy-zebras-move.md | 5 +++ .../{SwappableEvent.js => SwappableEvent.ts} | 36 ++++++++++++++++--- .../SwappableEvent/{index.js => index.ts} | 0 3 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 .changeset/grumpy-zebras-move.md rename src/Swappable/SwappableEvent/{SwappableEvent.js => SwappableEvent.ts} (62%) rename src/Swappable/SwappableEvent/{index.js => index.ts} (100%) diff --git a/.changeset/grumpy-zebras-move.md b/.changeset/grumpy-zebras-move.md new file mode 100644 index 0000000..b535f02 --- /dev/null +++ b/.changeset/grumpy-zebras-move.md @@ -0,0 +1,5 @@ +--- +'@shopify/draggable': patch +--- + +Convert SwappableEvent to typescript diff --git a/src/Swappable/SwappableEvent/SwappableEvent.js b/src/Swappable/SwappableEvent/SwappableEvent.ts similarity index 62% rename from src/Swappable/SwappableEvent/SwappableEvent.js rename to src/Swappable/SwappableEvent/SwappableEvent.ts index 47c0212..09d6f4c 100644 --- a/src/Swappable/SwappableEvent/SwappableEvent.js +++ b/src/Swappable/SwappableEvent/SwappableEvent.ts @@ -1,14 +1,31 @@ import AbstractEvent from 'shared/AbstractEvent'; +import {DragEvent, DragEventData} from '../../Draggable/DragEvent'; + +interface SwappableEventData { + dragEvent: DragEvent; +} + /** * Base swappable event * @class SwappableEvent * @module SwappableEvent * @extends AbstractEvent */ -export class SwappableEvent extends AbstractEvent { +export class SwappableEvent< + T extends SwappableEventData, +> extends AbstractEvent { static type = 'swappable'; + /** + * SwappableEvent constructor. + * @constructs SwappableEvent + * @param {SwappableEventData} data - Event data + */ + constructor(public data: T) { + super(data); + } + /** * Original drag event that triggered this swappable event * @property dragEvent @@ -26,18 +43,23 @@ export class SwappableEvent extends AbstractEvent { * @module SwappableStartEvent * @extends SwappableEvent */ -export class SwappableStartEvent extends SwappableEvent { +export class SwappableStartEvent extends SwappableEvent { static type = 'swappable:start'; static cancelable = true; } +interface SwappableSwapEventData extends SwappableEventData { + over: HTMLElement; + overContainer: HTMLElement; +} + /** * Swappable swap event * @class SwappableSwapEvent * @module SwappableSwapEvent * @extends SwappableEvent */ -export class SwappableSwapEvent extends SwappableEvent { +export class SwappableSwapEvent extends SwappableEvent { static type = 'swappable:swap'; static cancelable = true; @@ -62,13 +84,17 @@ export class SwappableSwapEvent extends SwappableEvent { } } +interface SwappableSwappedEventData extends SwappableEventData { + swappedElement: HTMLElement; +} + /** * Swappable swapped event * @class SwappableSwappedEvent * @module SwappableSwappedEvent * @extends SwappableEvent */ -export class SwappableSwappedEvent extends SwappableEvent { +export class SwappableSwappedEvent extends SwappableEvent { static type = 'swappable:swapped'; /** @@ -88,6 +114,6 @@ export class SwappableSwappedEvent extends SwappableEvent { * @module SwappableStopEvent * @extends SwappableEvent */ -export class SwappableStopEvent extends SwappableEvent { +export class SwappableStopEvent extends SwappableEvent { static type = 'swappable:stop'; } diff --git a/src/Swappable/SwappableEvent/index.js b/src/Swappable/SwappableEvent/index.ts similarity index 100% rename from src/Swappable/SwappableEvent/index.js rename to src/Swappable/SwappableEvent/index.ts