@react-navigation/stack 7.11.2 → 7.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,7 +48,8 @@ function StackNavigator({
48
48
  // This is necessary to know if preventDefault() has been called
49
49
  handle = requestAnimationFrame(() => {
50
50
  const currentState = navigation.getState();
51
- if (isFocused && currentState.index > 0 && !e.defaultPrevented) {
51
+ const event = e;
52
+ if (isFocused && event.data?.behavior?.popToTop !== false && currentState.index > 0 && !event.defaultPrevented) {
52
53
  // When user taps on already focused tab and we're inside the tab,
53
54
  // reset the stack to replicate native behaviour
54
55
  navigation.dispatch({
@@ -1 +1 @@
1
- {"version":3,"names":["createNavigatorFactory","createScreenFactory","StackActions","StackRouter","useLocale","useNavigationBuilder","React","StackView","jsx","_jsx","StackNavigator","id","initialRouteName","UNSTABLE_routeNamesChangeBehavior","children","layout","screenListeners","screenOptions","screenLayout","UNSTABLE_router","rest","direction","state","describe","descriptors","navigation","render","useEffect","handle","unsubscribe","addListener","e","isFocused","cancelAnimationFrame","requestAnimationFrame","currentState","getState","index","defaultPrevented","dispatch","popToTop","target","key","createStackNavigator","config","createStackScreen"],"sourceRoot":"../../../src","sources":["navigators/createStackNavigator.tsx"],"mappings":";;AAAA,SACEA,sBAAsB,EACtBC,mBAAmB,EAKnBC,YAAY,EAEZC,WAAW,EAIXC,SAAS,EACTC,oBAAoB,QACf,0BAA0B;AACjC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAQ9B,SAASC,SAAS,QAAQ,6BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAErD,SAASC,cAAcA,CAAC;EACtBC,EAAE;EACFC,gBAAgB;EAChBC,iCAAiC;EACjCC,QAAQ;EACRC,MAAM;EACNC,eAAe;EACfC,aAAa;EACbC,YAAY;EACZC,eAAe;EACf,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAM;IAAEC;EAAU,CAAC,GAAGjB,SAAS,CAAC,CAAC;EAEjC,MAAM;IAAEkB,KAAK;IAAEC,QAAQ;IAAEC,WAAW;IAAEC,UAAU;IAAEC;EAAO,CAAC,GACxDrB,oBAAoB,CAMlBF,WAAW,EAAE;IACbQ,EAAE;IACFC,gBAAgB;IAChBC,iCAAiC;IACjCC,QAAQ;IACRC,MAAM;IACNC,eAAe;IACfC,aAAa;IACbC,YAAY;IACZC;EACF,CAAC,CAAC;EAEJb,KAAK,CAACqB,SAAS,CAAC,MAAM;IACpB,IAAIC,MAA4D;;IAEhE;IACA,MAAMC,WAAW,GAAGJ,UAAU,CAACK,WAAW,GAAG,UAAU,EAAGC,CAAC,IAAK;MAC9D,MAAMC,SAAS,GAAGP,UAAU,CAACO,SAAS,CAAC,CAAC;MAExCC,oBAAoB,CAACL,MAAM,CAAC;;MAE5B;MACA;MACAA,MAAM,GAAGM,qBAAqB,CAAC,MAAM;QACnC,MAAMC,YAAY,GAAGV,UAAU,CAACW,QAAQ,CAAC,CAAC;QAE1C,IACEJ,SAAS,IACTG,YAAY,CAACE,KAAK,GAAG,CAAC,IACtB,CAAEN,CAAC,CAAgCO,gBAAgB,EACnD;UACA;UACA;UACAb,UAAU,CAACc,QAAQ,CAAC;YAClB,GAAGrC,YAAY,CAACsC,QAAQ,CAAC,CAAC;YAC1BC,MAAM,EAAEN,YAAY,CAACO;UACvB,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,MAAM;MACXT,oBAAoB,CAACL,MAAM,CAAC;MAC5BC,WAAW,GAAG,CAAC;IACjB,CAAC;EACH,CAAC,EAAE,CAACJ,UAAU,CAAC,CAAC;EAEhB,OAAOC,MAAM,cACXjB,IAAA,CAACF,SAAS;IAAA,GACJa,IAAI;IACRC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbC,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBC,UAAU,EAAEA;EAAW,CACxB,CACH,CAAC;AACH;AAqBA,OAAO,SAASkB,oBAAoBA,CAQlCC,MAAe,EAAmC;EAClD,OAAO5C,sBAAsB,CAACU,cAAc,CAAC,CAACkC,MAAM,CAAC;AACvD;AAEA,OAAO,MAAMC,iBAAiB,GAAG5C,mBAAmB,CAAe,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createNavigatorFactory","createScreenFactory","StackActions","StackRouter","useLocale","useNavigationBuilder","React","StackView","jsx","_jsx","StackNavigator","id","initialRouteName","UNSTABLE_routeNamesChangeBehavior","children","layout","screenListeners","screenOptions","screenLayout","UNSTABLE_router","rest","direction","state","describe","descriptors","navigation","render","useEffect","handle","unsubscribe","addListener","e","isFocused","cancelAnimationFrame","requestAnimationFrame","currentState","getState","event","data","behavior","popToTop","index","defaultPrevented","dispatch","target","key","createStackNavigator","config","createStackScreen"],"sourceRoot":"../../../src","sources":["navigators/createStackNavigator.tsx"],"mappings":";;AAAA,SACEA,sBAAsB,EACtBC,mBAAmB,EAKnBC,YAAY,EAEZC,WAAW,EAIXC,SAAS,EACTC,oBAAoB,QACf,0BAA0B;AACjC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAQ9B,SAASC,SAAS,QAAQ,6BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQrD,SAASC,cAAcA,CAAC;EACtBC,EAAE;EACFC,gBAAgB;EAChBC,iCAAiC;EACjCC,QAAQ;EACRC,MAAM;EACNC,eAAe;EACfC,aAAa;EACbC,YAAY;EACZC,eAAe;EACf,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAM;IAAEC;EAAU,CAAC,GAAGjB,SAAS,CAAC,CAAC;EAEjC,MAAM;IAAEkB,KAAK;IAAEC,QAAQ;IAAEC,WAAW;IAAEC,UAAU;IAAEC;EAAO,CAAC,GACxDrB,oBAAoB,CAMlBF,WAAW,EAAE;IACbQ,EAAE;IACFC,gBAAgB;IAChBC,iCAAiC;IACjCC,QAAQ;IACRC,MAAM;IACNC,eAAe;IACfC,aAAa;IACbC,YAAY;IACZC;EACF,CAAC,CAAC;EAEJb,KAAK,CAACqB,SAAS,CAAC,MAAM;IACpB,IAAIC,MAA4D;;IAEhE;IACA,MAAMC,WAAW,GAAGJ,UAAU,CAACK,WAAW,GAAG,UAAU,EAAGC,CAAC,IAAK;MAC9D,MAAMC,SAAS,GAAGP,UAAU,CAACO,SAAS,CAAC,CAAC;MAExCC,oBAAoB,CAACL,MAAM,CAAC;;MAE5B;MACA;MACAA,MAAM,GAAGM,qBAAqB,CAAC,MAAM;QACnC,MAAMC,YAAY,GAAGV,UAAU,CAACW,QAAQ,CAAC,CAAC;QAC1C,MAAMC,KAAK,GAAGN,CAAqB;QAEnC,IACEC,SAAS,IACTK,KAAK,CAACC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ,KAAK,KAAK,IACxCL,YAAY,CAACM,KAAK,GAAG,CAAC,IACtB,CAACJ,KAAK,CAACK,gBAAgB,EACvB;UACA;UACA;UACAjB,UAAU,CAACkB,QAAQ,CAAC;YAClB,GAAGzC,YAAY,CAACsC,QAAQ,CAAC,CAAC;YAC1BI,MAAM,EAAET,YAAY,CAACU;UACvB,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,MAAM;MACXZ,oBAAoB,CAACL,MAAM,CAAC;MAC5BC,WAAW,GAAG,CAAC;IACjB,CAAC;EACH,CAAC,EAAE,CAACJ,UAAU,CAAC,CAAC;EAEhB,OAAOC,MAAM,cACXjB,IAAA,CAACF,SAAS;IAAA,GACJa,IAAI;IACRC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbC,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBC,UAAU,EAAEA;EAAW,CACxB,CACH,CAAC;AACH;AAqBA,OAAO,SAASqB,oBAAoBA,CAQlCC,MAAe,EAAmC;EAClD,OAAO/C,sBAAsB,CAACU,cAAc,CAAC,CAACqC,MAAM,CAAC;AACvD;AAEA,OAAO,MAAMC,iBAAiB,GAAG/C,mBAAmB,CAAe,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"createStackNavigator.d.ts","sourceRoot":"","sources":["../../../../src/navigators/createStackNavigator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAGlB,KAAK,oBAAoB,EAGzB,KAAK,YAAY,EACjB,KAAK,cAAc,EAGpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,aAAU,CAAC;AAGlB,iBAAS,cAAc,CAAC,EACtB,EAAE,EACF,gBAAgB,EAChB,iCAAiC,EACjC,QAAQ,EACR,MAAM,EACN,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAmErB;AAED,MAAM,MAAM,YAAY,CACtB,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,WAAW,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,IACzD;IACF,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACvC,aAAa,EAAE,sBAAsB,CAAC;IACtC,QAAQ,EAAE,uBAAuB,CAAC;IAClC,cAAc,EAAE;SACb,SAAS,IAAI,MAAM,SAAS,GAAG,mBAAmB,CACjD,SAAS,EACT,SAAS,EACT,WAAW,CACZ;KACF,CAAC;IACF,SAAS,EAAE,OAAO,cAAc,CAAC;CAClC,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,KAAK,CAAC,SAAS,SAAS,aAAa,EACrC,KAAK,CAAC,WAAW,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EACjE,KAAK,CAAC,OAAO,SAAS,oBAAoB,GAAG,YAAY,CACvD,SAAS,EACT,WAAW,CACZ,EACD,KAAK,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAClE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAElD;AAED,eAAO,MAAM,iBAAiB,uGAAsC,CAAC"}
1
+ {"version":3,"file":"createStackNavigator.d.ts","sourceRoot":"","sources":["../../../../src/navigators/createStackNavigator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAGlB,KAAK,oBAAoB,EAGzB,KAAK,YAAY,EACjB,KAAK,cAAc,EAGpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,aAAU,CAAC;AASlB,iBAAS,cAAc,CAAC,EACtB,EAAE,EACF,gBAAgB,EAChB,iCAAiC,EACjC,QAAQ,EACR,MAAM,EACN,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAqErB;AAED,MAAM,MAAM,YAAY,CACtB,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,WAAW,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,IACzD;IACF,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACvC,aAAa,EAAE,sBAAsB,CAAC;IACtC,QAAQ,EAAE,uBAAuB,CAAC;IAClC,cAAc,EAAE;SACb,SAAS,IAAI,MAAM,SAAS,GAAG,mBAAmB,CACjD,SAAS,EACT,SAAS,EACT,WAAW,CACZ;KACF,CAAC;IACF,SAAS,EAAE,OAAO,cAAc,CAAC;CAClC,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,KAAK,CAAC,SAAS,SAAS,aAAa,EACrC,KAAK,CAAC,WAAW,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EACjE,KAAK,CAAC,OAAO,SAAS,oBAAoB,GAAG,YAAY,CACvD,SAAS,EACT,WAAW,CACZ,EACD,KAAK,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EAClE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAElD;AAED,eAAO,MAAM,iBAAiB,uGAAsC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-navigation/stack",
3
3
  "description": "Stack navigator component for iOS and Android with animated transitions and gestures",
4
- "version": "7.11.2",
4
+ "version": "7.12.0",
5
5
  "keywords": [
6
6
  "react-native-component",
7
7
  "react-component",
@@ -45,13 +45,13 @@
45
45
  "clean": "del lib"
46
46
  },
47
47
  "dependencies": {
48
- "@react-navigation/elements": "^2.9.43",
48
+ "@react-navigation/elements": "^2.9.44",
49
49
  "color": "^4.2.3",
50
50
  "use-latest-callback": "^0.2.4"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@jest/globals": "^30.0.0",
54
- "@react-navigation/native": "^7.4.1",
54
+ "@react-navigation/native": "^7.5.0",
55
55
  "@testing-library/react-native": "^13.2.1",
56
56
  "@types/color": "^4.2.0",
57
57
  "@types/react": "~19.2.4",
@@ -66,7 +66,7 @@
66
66
  "typescript": "~6.0.3"
67
67
  },
68
68
  "peerDependencies": {
69
- "@react-navigation/native": "^7.4.1",
69
+ "@react-navigation/native": "^7.5.0",
70
70
  "react": ">= 18.2.0",
71
71
  "react-native": "*",
72
72
  "react-native-gesture-handler": ">= 2.0.0",
@@ -91,5 +91,5 @@
91
91
  ]
92
92
  ]
93
93
  },
94
- "gitHead": "af1ea6efd22431d62141db20ee68577f78f4d828"
94
+ "gitHead": "47f787dc7580c092238e17af8a86cad32573bd32"
95
95
  }
@@ -24,6 +24,12 @@ import type {
24
24
  } from '../types';
25
25
  import { StackView } from '../views/Stack/StackView';
26
26
 
27
+ type TabPressEventArg = EventArg<
28
+ 'tabPress',
29
+ true,
30
+ { behavior?: { popToTop?: boolean } } | undefined
31
+ >;
32
+
27
33
  function StackNavigator({
28
34
  id,
29
35
  initialRouteName,
@@ -70,11 +76,13 @@ function StackNavigator({
70
76
  // This is necessary to know if preventDefault() has been called
71
77
  handle = requestAnimationFrame(() => {
72
78
  const currentState = navigation.getState();
79
+ const event = e as TabPressEventArg;
73
80
 
74
81
  if (
75
82
  isFocused &&
83
+ event.data?.behavior?.popToTop !== false &&
76
84
  currentState.index > 0 &&
77
- !(e as EventArg<'tabPress', true>).defaultPrevented
85
+ !event.defaultPrevented
78
86
  ) {
79
87
  // When user taps on already focused tab and we're inside the tab,
80
88
  // reset the stack to replicate native behaviour