Skip to content
This repository was archived by the owner on Feb 25, 2020. It is now read-only.

Commit 2d8274f

Browse files
tchayenosdnk
authored andcommitted
feat: inform whether screen is opening/closing in onTransition callbacks (#169)
1 parent 2ddf3a4 commit 2d8274f

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

src/types.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ export type NavigationStackOptions = HeaderOptions &
107107
vertical?: number;
108108
horizontal?: number;
109109
};
110-
onTransitionStart?: () => void;
111-
onTransitionEnd?: () => void;
110+
onTransitionStart?: (closing: boolean) => void;
111+
onTransitionEnd?: (closing: boolean) => void;
112112
};
113113

114114
export type NavigationStackConfig = {

src/views/Stack/Stack.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -254,21 +254,27 @@ export default class Stack extends React.Component<Props, State> {
254254
}));
255255
};
256256

257-
private handleTransitionStart = ({ route }: { route: Route }) => {
257+
private handleTransitionStart = (
258+
{ route }: { route: Route },
259+
closing: boolean
260+
) => {
258261
const { descriptors } = this.props;
259262
const descriptor = descriptors[route.key];
260263

261264
descriptor &&
262265
descriptor.options.onTransitionStart &&
263-
descriptor.options.onTransitionStart();
266+
descriptor.options.onTransitionStart(closing);
264267
};
265268

266-
private handleTransitionEnd = ({ route }: { route: Route }) => {
269+
private handleTransitionEnd = (
270+
{ route }: { route: Route },
271+
closing: boolean
272+
) => {
267273
const descriptor = this.props.descriptors[route.key];
268274

269275
descriptor &&
270276
descriptor.options.onTransitionEnd &&
271-
descriptor.options.onTransitionEnd();
277+
descriptor.options.onTransitionEnd(closing);
272278
};
273279

274280
render() {

src/views/Stack/StackItem.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ type Props = TransitionPreset & {
3333
onOpenRoute: (props: { route: Route }) => void;
3434
onCloseRoute: (props: { route: Route }) => void;
3535
onGoBack: (props: { route: Route }) => void;
36-
onTransitionStart?: (props: { route: Route }) => void;
37-
onTransitionEnd?: (props: { route: Route }) => void;
36+
onTransitionStart?: (props: { route: Route }, closing: boolean) => void;
37+
onTransitionEnd?: (props: { route: Route }, closing: boolean) => void;
3838
onPageChangeStart?: () => void;
3939
onPageChangeConfirm?: () => void;
4040
onPageChangeCancel?: () => void;
@@ -52,14 +52,14 @@ export default class StackItem extends React.PureComponent<Props> {
5252
private handleOpen = () => {
5353
const { scene, onTransitionEnd, onOpenRoute } = this.props;
5454

55-
onTransitionEnd && onTransitionEnd({ route: scene.route });
55+
onTransitionEnd && onTransitionEnd({ route: scene.route }, false);
5656
onOpenRoute({ route: scene.route });
5757
};
5858

5959
private handleClose = () => {
6060
const { scene, onTransitionEnd, onCloseRoute } = this.props;
6161

62-
onTransitionEnd && onTransitionEnd({ route: scene.route });
62+
onTransitionEnd && onTransitionEnd({ route: scene.route }, true);
6363
onCloseRoute({ route: scene.route });
6464
};
6565

@@ -78,7 +78,7 @@ export default class StackItem extends React.PureComponent<Props> {
7878
onPageChangeCancel && onPageChangeCancel();
7979
}
8080

81-
onTransitionStart && onTransitionStart({ route: scene.route });
81+
onTransitionStart && onTransitionStart({ route: scene.route }, closing);
8282
closing && onGoBack({ route: scene.route });
8383
};
8484

0 commit comments

Comments
 (0)