From 77a857abff084c942de362fdf2c9fce68f882b23 Mon Sep 17 00:00:00 2001 From: Phil Nova Date: Mon, 26 Feb 2018 13:58:54 -0800 Subject: [PATCH 1/4] Add tag to SortEvent In order to check if the event target is a hyperlink and cancel sort if the user clicks a link, the recommended pattern is to check SortEvent.target.tagName. (see https://stackoverflow.com/questions/15661343/check-if-event-target-is-hyperlink). However, the typings do not support this pattern as SortEvent.target does not expect a tag attribute. --- types/react-sortable-hoc/index.d.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/types/react-sortable-hoc/index.d.ts b/types/react-sortable-hoc/index.d.ts index 851170036d..dbf402599f 100644 --- a/types/react-sortable-hoc/index.d.ts +++ b/types/react-sortable-hoc/index.d.ts @@ -18,6 +18,14 @@ export interface SortStart { export type SortEvent = React.MouseEvent | React.TouchEvent; +interface Tag extends React.EventTarget { + tagName: string; +} + +export interface SortEventWithTag extends SortEvent { + target: Tag; +} + export type SortStartHandler = (sort: SortStart, event: SortEvent) => void; export type SortMoveHandler = (event: SortEvent) => void; @@ -45,7 +53,7 @@ export interface SortableContainerProps { pressDelay?: number; pressThreshold?: number; distance?: number; - shouldCancelStart?: (event: SortEvent) => boolean; + shouldCancelStart?: (event: SortEvent | SortEventWithTag) => boolean; onSortStart?: SortStartHandler; onSortMove?: SortMoveHandler; onSortEnd?: SortEndHandler; From 5ce08904d77cbb323f34cdd8510cee32e880b649 Mon Sep 17 00:00:00 2001 From: Phil Nova Date: Wed, 28 Feb 2018 16:24:17 -0800 Subject: [PATCH 2/4] Use intersection type --- types/react-sortable-hoc/index.d.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/types/react-sortable-hoc/index.d.ts b/types/react-sortable-hoc/index.d.ts index dbf402599f..b3df2fb3a5 100644 --- a/types/react-sortable-hoc/index.d.ts +++ b/types/react-sortable-hoc/index.d.ts @@ -18,13 +18,11 @@ export interface SortStart { export type SortEvent = React.MouseEvent | React.TouchEvent; -interface Tag extends React.EventTarget { +export interface Tag extends React.EventTarget { tagName: string; } -export interface SortEventWithTag extends SortEvent { - target: Tag; -} +export type SortEventWithTag = SortEvent & { target: Tag } export type SortStartHandler = (sort: SortStart, event: SortEvent) => void; From 1e21e896dd0feacbd06c989aab202b706c17184a Mon Sep 17 00:00:00 2001 From: Phil Nova Date: Wed, 28 Feb 2018 16:34:31 -0800 Subject: [PATCH 3/4] Remove unneeded interface --- types/react-sortable-hoc/index.d.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/types/react-sortable-hoc/index.d.ts b/types/react-sortable-hoc/index.d.ts index b3df2fb3a5..41eda5ce40 100644 --- a/types/react-sortable-hoc/index.d.ts +++ b/types/react-sortable-hoc/index.d.ts @@ -18,12 +18,12 @@ export interface SortStart { export type SortEvent = React.MouseEvent | React.TouchEvent; -export interface Tag extends React.EventTarget { - tagName: string; +export type SortEventWithTag = SortEvent & { + target: { + tagName: string + } } -export type SortEventWithTag = SortEvent & { target: Tag } - export type SortStartHandler = (sort: SortStart, event: SortEvent) => void; export type SortMoveHandler = (event: SortEvent) => void; From 3d4d801f3a6660179b011fd4cbc37e1434b54f65 Mon Sep 17 00:00:00 2001 From: Phil Nova Date: Wed, 28 Feb 2018 16:38:47 -0800 Subject: [PATCH 4/4] Fix lint error --- types/react-sortable-hoc/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/react-sortable-hoc/index.d.ts b/types/react-sortable-hoc/index.d.ts index 41eda5ce40..9963ebd69e 100644 --- a/types/react-sortable-hoc/index.d.ts +++ b/types/react-sortable-hoc/index.d.ts @@ -22,7 +22,7 @@ export type SortEventWithTag = SortEvent & { target: { tagName: string } -} +}; export type SortStartHandler = (sort: SortStart, event: SortEvent) => void;