mirror of
https://github.com/zhigang1992/react-navigation.git
synced 2026-01-15 22:45:41 +08:00
Compare commits
11 Commits
@react-nav
...
@react-nav
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b353a4aea | ||
|
|
3728390b60 | ||
|
|
a8342aaf3d | ||
|
|
860adbfd8b | ||
|
|
38d680833e | ||
|
|
cae115fc17 | ||
|
|
87b51476d0 | ||
|
|
b1b211855f | ||
|
|
60fe0dbb0a | ||
|
|
bb294b16f9 | ||
|
|
4ca2d2d22b |
@@ -3,6 +3,44 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.11.8](https://github.com/react-navigation/react-navigation/compare/@react-navigation/bottom-tabs@5.11.7...@react-navigation/bottom-tabs@5.11.8) (2021-02-21)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/bottom-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.11.7](https://github.com/react-navigation/react-navigation/compare/@react-navigation/bottom-tabs@5.11.6...@react-navigation/bottom-tabs@5.11.7) (2021-01-25)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* fix drawer screen content not being interactable on Android ([87b5147](https://github.com/react-navigation/react-navigation/commit/87b51476d0bce8f2dae793416c2976da30a1a5f7))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.11.6](https://github.com/react-navigation/react-navigation/compare/@react-navigation/bottom-tabs@5.11.5...@react-navigation/bottom-tabs@5.11.6) (2021-01-22)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* fix pointerEvents in ResourceSavingScene ([60fe0db](https://github.com/react-navigation/react-navigation/commit/60fe0dbb0ae443fdb21016d368c919b933cb64e7)), closes [#9241](https://github.com/react-navigation/react-navigation/issues/9241) [#9242](https://github.com/react-navigation/react-navigation/issues/9242)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.11.5](https://github.com/react-navigation/react-navigation/compare/@react-navigation/bottom-tabs@5.11.4...@react-navigation/bottom-tabs@5.11.5) (2021-01-22)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/bottom-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.11.4](https://github.com/react-navigation/react-navigation/compare/@react-navigation/bottom-tabs@5.11.3...@react-navigation/bottom-tabs@5.11.4) (2021-01-21)
|
## [5.11.4](https://github.com/react-navigation/react-navigation/compare/@react-navigation/bottom-tabs@5.11.3...@react-navigation/bottom-tabs@5.11.4) (2021-01-21)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/bottom-tabs",
|
"name": "@react-navigation/bottom-tabs",
|
||||||
"description": "Bottom tab navigator following iOS design guidelines",
|
"description": "Bottom tab navigator following iOS design guidelines",
|
||||||
"version": "5.11.4",
|
"version": "5.11.8",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native-component",
|
"react-native-component",
|
||||||
"react-component",
|
"react-component",
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
"react-native-iphone-x-helper": "^1.3.0"
|
"react-native-iphone-x-helper": "^1.3.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-navigation/native": "^5.9.1",
|
"@react-navigation/native": "^5.9.3",
|
||||||
"@testing-library/react-native": "^7.1.0",
|
"@testing-library/react-native": "^7.1.0",
|
||||||
"@types/color": "^3.0.1",
|
"@types/color": "^3.0.1",
|
||||||
"@types/react": "^16.9.53",
|
"@types/react": "^16.9.53",
|
||||||
|
|||||||
@@ -60,7 +60,11 @@ export default function ResourceSavingScene({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={[styles.container, style]}>
|
<View
|
||||||
|
style={[styles.container, style]}
|
||||||
|
// box-none doesn't seem to work properly on Android
|
||||||
|
pointerEvents={isVisible ? 'auto' : 'none'}
|
||||||
|
>
|
||||||
<View
|
<View
|
||||||
collapsable={false}
|
collapsable={false}
|
||||||
removeClippedSubviews={
|
removeClippedSubviews={
|
||||||
|
|||||||
@@ -3,6 +3,22 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.3.14](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.13...@react-navigation/compat@5.3.14) (2021-02-21)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/compat
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.3.13](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.12...@react-navigation/compat@5.3.13) (2021-01-22)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/compat
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.3.12](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.11...@react-navigation/compat@5.3.12) (2021-01-21)
|
## [5.3.12](https://github.com/react-navigation/react-navigation/compare/@react-navigation/compat@5.3.11...@react-navigation/compat@5.3.12) (2021-01-21)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/compat
|
**Note:** Version bump only for package @react-navigation/compat
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/compat",
|
"name": "@react-navigation/compat",
|
||||||
"description": "Compatibility layer to write navigator definitions in static configuration format",
|
"description": "Compatibility layer to write navigator definitions in static configuration format",
|
||||||
"version": "5.3.12",
|
"version": "5.3.14",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
"clean": "del lib"
|
"clean": "del lib"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-navigation/native": "^5.9.1",
|
"@react-navigation/native": "^5.9.3",
|
||||||
"@types/react": "^16.9.53",
|
"@types/react": "^16.9.53",
|
||||||
"react": "~16.13.1",
|
"react": "~16.13.1",
|
||||||
"react-native-builder-bob": "^0.17.0",
|
"react-native-builder-bob": "^0.17.0",
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.15.2](https://github.com/react-navigation/react-navigation/compare/@react-navigation/core@5.15.1...@react-navigation/core@5.15.2) (2021-02-21)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/core
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.15.1](https://github.com/react-navigation/react-navigation/compare/@react-navigation/core@5.15.0...@react-navigation/core@5.15.1) (2021-01-21)
|
## [5.15.1](https://github.com/react-navigation/react-navigation/compare/@react-navigation/core@5.15.0...@react-navigation/core@5.15.1) (2021-01-21)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/core
|
**Note:** Version bump only for package @react-navigation/core
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/core",
|
"name": "@react-navigation/core",
|
||||||
"description": "Core utilities for building navigators",
|
"description": "Core utilities for building navigators",
|
||||||
"version": "5.15.1",
|
"version": "5.15.2",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react",
|
"react",
|
||||||
"react-native",
|
"react-native",
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
"clean": "del lib"
|
"clean": "del lib"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@react-navigation/routers": "^5.7.1",
|
"@react-navigation/routers": "^5.7.2",
|
||||||
"escape-string-regexp": "^4.0.0",
|
"escape-string-regexp": "^4.0.0",
|
||||||
"nanoid": "^3.1.15",
|
"nanoid": "^3.1.15",
|
||||||
"query-string": "^6.13.6",
|
"query-string": "^6.13.6",
|
||||||
|
|||||||
@@ -3,6 +3,14 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.1.21](https://github.com/react-navigation/react-navigation/compare/@react-navigation/devtools@5.1.20...@react-navigation/devtools@5.1.21) (2021-02-21)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/devtools
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.1.20](https://github.com/react-navigation/react-navigation/compare/@react-navigation/devtools@5.1.19...@react-navigation/devtools@5.1.20) (2021-01-21)
|
## [5.1.20](https://github.com/react-navigation/react-navigation/compare/@react-navigation/devtools@5.1.19...@react-navigation/devtools@5.1.20) (2021-01-21)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/devtools
|
**Note:** Version bump only for package @react-navigation/devtools
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/devtools",
|
"name": "@react-navigation/devtools",
|
||||||
"description": "Developer tools for React Navigation",
|
"description": "Developer tools for React Navigation",
|
||||||
"version": "5.1.20",
|
"version": "5.1.21",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react",
|
"react",
|
||||||
"react-native",
|
"react-native",
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
"clean": "del lib"
|
"clean": "del lib"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@react-navigation/core": "^5.15.1",
|
"@react-navigation/core": "^5.15.2",
|
||||||
"deep-equal": "^2.0.4"
|
"deep-equal": "^2.0.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -3,6 +3,44 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.12.4](https://github.com/react-navigation/react-navigation/compare/@react-navigation/drawer@5.12.3...@react-navigation/drawer@5.12.4) (2021-02-21)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/drawer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.12.3](https://github.com/react-navigation/react-navigation/compare/@react-navigation/drawer@5.12.2...@react-navigation/drawer@5.12.3) (2021-01-25)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* fix drawer screen content not being interactable on Android ([87b5147](https://github.com/react-navigation/react-navigation/commit/87b51476d0bce8f2dae793416c2976da30a1a5f7))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.12.2](https://github.com/react-navigation/react-navigation/compare/@react-navigation/drawer@5.12.1...@react-navigation/drawer@5.12.2) (2021-01-22)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* fix pointerEvents in ResourceSavingScene ([60fe0db](https://github.com/react-navigation/react-navigation/commit/60fe0dbb0ae443fdb21016d368c919b933cb64e7)), closes [#9241](https://github.com/react-navigation/react-navigation/issues/9241) [#9242](https://github.com/react-navigation/react-navigation/issues/9242)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.12.1](https://github.com/react-navigation/react-navigation/compare/@react-navigation/drawer@5.12.0...@react-navigation/drawer@5.12.1) (2021-01-22)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/drawer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.12.0](https://github.com/react-navigation/react-navigation/compare/@react-navigation/drawer@5.11.5...@react-navigation/drawer@5.12.0) (2021-01-21)
|
# [5.12.0](https://github.com/react-navigation/react-navigation/compare/@react-navigation/drawer@5.11.5...@react-navigation/drawer@5.12.0) (2021-01-21)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/drawer",
|
"name": "@react-navigation/drawer",
|
||||||
"description": "Drawer navigator component with animated transitions and gesturess",
|
"description": "Drawer navigator component with animated transitions and gesturess",
|
||||||
"version": "5.12.0",
|
"version": "5.12.4",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native-component",
|
"react-native-component",
|
||||||
"react-component",
|
"react-component",
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
"react-native-iphone-x-helper": "^1.3.0"
|
"react-native-iphone-x-helper": "^1.3.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-navigation/native": "^5.9.1",
|
"@react-navigation/native": "^5.9.3",
|
||||||
"@testing-library/react-native": "^7.1.0",
|
"@testing-library/react-native": "^7.1.0",
|
||||||
"@types/react": "^16.9.53",
|
"@types/react": "^16.9.53",
|
||||||
"@types/react-native": "^0.63.30",
|
"@types/react-native": "^0.63.30",
|
||||||
|
|||||||
@@ -60,7 +60,11 @@ export default function ResourceSavingScene({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={[styles.container, style]}>
|
<View
|
||||||
|
style={[styles.container, style]}
|
||||||
|
// box-none doesn't seem to work properly on Android
|
||||||
|
pointerEvents={isVisible ? 'auto' : 'none'}
|
||||||
|
>
|
||||||
<View
|
<View
|
||||||
collapsable={false}
|
collapsable={false}
|
||||||
removeClippedSubviews={
|
removeClippedSubviews={
|
||||||
|
|||||||
@@ -3,6 +3,22 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.3.14](https://github.com/react-navigation/react-navigation/compare/@react-navigation/material-bottom-tabs@5.3.13...@react-navigation/material-bottom-tabs@5.3.14) (2021-02-21)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/material-bottom-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.3.13](https://github.com/react-navigation/react-navigation/compare/@react-navigation/material-bottom-tabs@5.3.12...@react-navigation/material-bottom-tabs@5.3.13) (2021-01-22)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/material-bottom-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.3.12](https://github.com/react-navigation/react-navigation/compare/@react-navigation/material-bottom-tabs@5.3.11...@react-navigation/material-bottom-tabs@5.3.12) (2021-01-21)
|
## [5.3.12](https://github.com/react-navigation/react-navigation/compare/@react-navigation/material-bottom-tabs@5.3.11...@react-navigation/material-bottom-tabs@5.3.12) (2021-01-21)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/material-bottom-tabs
|
**Note:** Version bump only for package @react-navigation/material-bottom-tabs
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/material-bottom-tabs",
|
"name": "@react-navigation/material-bottom-tabs",
|
||||||
"description": "Integration for bottom navigation component from react-native-paper",
|
"description": "Integration for bottom navigation component from react-native-paper",
|
||||||
"version": "5.3.12",
|
"version": "5.3.14",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native-component",
|
"react-native-component",
|
||||||
"react-component",
|
"react-component",
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
"clean": "del lib"
|
"clean": "del lib"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-navigation/native": "^5.9.1",
|
"@react-navigation/native": "^5.9.3",
|
||||||
"@testing-library/react-native": "^7.1.0",
|
"@testing-library/react-native": "^7.1.0",
|
||||||
"@types/react": "^16.9.53",
|
"@types/react": "^16.9.53",
|
||||||
"@types/react-native": "^0.63.30",
|
"@types/react-native": "^0.63.30",
|
||||||
|
|||||||
@@ -3,6 +3,22 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.3.14](https://github.com/react-navigation/react-navigation/compare/@react-navigation/material-top-tabs@5.3.13...@react-navigation/material-top-tabs@5.3.14) (2021-02-21)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.3.13](https://github.com/react-navigation/react-navigation/compare/@react-navigation/material-top-tabs@5.3.12...@react-navigation/material-top-tabs@5.3.13) (2021-01-22)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.3.12](https://github.com/react-navigation/react-navigation/compare/@react-navigation/material-top-tabs@5.3.11...@react-navigation/material-top-tabs@5.3.12) (2021-01-21)
|
## [5.3.12](https://github.com/react-navigation/react-navigation/compare/@react-navigation/material-top-tabs@5.3.11...@react-navigation/material-top-tabs@5.3.12) (2021-01-21)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
**Note:** Version bump only for package @react-navigation/material-top-tabs
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/material-top-tabs",
|
"name": "@react-navigation/material-top-tabs",
|
||||||
"description": "Integration for the animated tab view component from react-native-tab-view",
|
"description": "Integration for the animated tab view component from react-native-tab-view",
|
||||||
"version": "5.3.12",
|
"version": "5.3.14",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native-component",
|
"react-native-component",
|
||||||
"react-component",
|
"react-component",
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
"color": "^3.1.3"
|
"color": "^3.1.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-navigation/native": "^5.9.1",
|
"@react-navigation/native": "^5.9.3",
|
||||||
"@testing-library/react-native": "^7.1.0",
|
"@testing-library/react-native": "^7.1.0",
|
||||||
"@types/react": "^16.9.53",
|
"@types/react": "^16.9.53",
|
||||||
"@types/react-native": "^0.63.30",
|
"@types/react-native": "^0.63.30",
|
||||||
|
|||||||
@@ -3,6 +3,28 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.9.3](https://github.com/react-navigation/react-navigation/compare/@react-navigation/native@5.9.2...@react-navigation/native@5.9.3) (2021-02-21)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* address breaking change in react-native for Linking ([a8342aa](https://github.com/react-navigation/react-navigation/commit/a8342aaf3d1ba8fb29faa91c7b63ed25f11745e5))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.9.2](https://github.com/react-navigation/react-navigation/compare/@react-navigation/native@5.9.1...@react-navigation/native@5.9.2) (2021-01-22)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* normalize prefix when parsing. fixes [#9081](https://github.com/react-navigation/react-navigation/issues/9081) ([4ca2d2d](https://github.com/react-navigation/react-navigation/commit/4ca2d2d22bc9eccf87451b15c823174d98cbd0a2))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.9.1](https://github.com/react-navigation/react-navigation/compare/@react-navigation/native@5.9.0...@react-navigation/native@5.9.1) (2021-01-21)
|
## [5.9.1](https://github.com/react-navigation/react-navigation/compare/@react-navigation/native@5.9.0...@react-navigation/native@5.9.1) (2021-01-21)
|
||||||
|
|
||||||
**Note:** Version bump only for package @react-navigation/native
|
**Note:** Version bump only for package @react-navigation/native
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/native",
|
"name": "@react-navigation/native",
|
||||||
"description": "React Native integration for React Navigation",
|
"description": "React Native integration for React Navigation",
|
||||||
"version": "5.9.1",
|
"version": "5.9.3",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native",
|
"react-native",
|
||||||
"react-navigation",
|
"react-navigation",
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
"clean": "del lib"
|
"clean": "del lib"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@react-navigation/core": "^5.15.1",
|
"@react-navigation/core": "^5.15.2",
|
||||||
"escape-string-regexp": "^4.0.0",
|
"escape-string-regexp": "^4.0.0",
|
||||||
"nanoid": "^3.1.15"
|
"nanoid": "^3.1.15"
|
||||||
},
|
},
|
||||||
|
|||||||
318
packages/native/src/__tests__/extractPathFromURL.test.tsx
Normal file
318
packages/native/src/__tests__/extractPathFromURL.test.tsx
Normal file
@@ -0,0 +1,318 @@
|
|||||||
|
import extractPathFromURL from '../extractPathFromURL';
|
||||||
|
|
||||||
|
it('extracts path from URL with protocol', () => {
|
||||||
|
expect(extractPathFromURL(['scheme://'], 'scheme://some/path')).toBe(
|
||||||
|
'some/path'
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme://'], 'scheme:some/path')).toBe(
|
||||||
|
'some/path'
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme://'], 'scheme:///some/path')).toBe(
|
||||||
|
'some/path'
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:///'], 'scheme:some/path')).toBe(
|
||||||
|
'some/path'
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:'], 'scheme:some/path')).toBe('some/path');
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:'], 'scheme://some/path')).toBe(
|
||||||
|
'some/path'
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:'], 'scheme:///some/path')).toBe(
|
||||||
|
'some/path'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('extracts path from URL with protocol and host', () => {
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme://example.com'],
|
||||||
|
'scheme://example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme://example.com'], 'scheme:example.com/some/path')
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme://example.com'],
|
||||||
|
'scheme:///example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:///example.com'],
|
||||||
|
'scheme:example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme:example.com'], 'scheme:example.com/some/path')
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme:example.com'], 'scheme://example.com/some/path')
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:example.com'],
|
||||||
|
'scheme:///example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('extracts path from URL with protocol and host with wildcard', () => {
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme://*.example.com'],
|
||||||
|
'scheme://test.example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme://*.example.com'],
|
||||||
|
'scheme:test.example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme://*.example.com'],
|
||||||
|
'scheme:///test.example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:///*.example.com'],
|
||||||
|
'scheme:test.example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:*.example.com'],
|
||||||
|
'scheme:test.example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:*.example.com'],
|
||||||
|
'scheme://test.example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:*.example.com'],
|
||||||
|
'scheme:///test.example.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('extracts path from URL with protocol, host and path', () => {
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme://example.com/test'],
|
||||||
|
'scheme://example.com/test/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme://example.com'], 'scheme:example.com/some/path')
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme://example.com/test'],
|
||||||
|
'scheme:///example.com/test/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:///example.com/test'],
|
||||||
|
'scheme:example.com/test/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:example.com/test'],
|
||||||
|
'scheme:example.com/test/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:example.com/test'],
|
||||||
|
'scheme://example.com/test/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:example.com/test'],
|
||||||
|
'scheme:///example.com/test/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:example.com/test'],
|
||||||
|
'scheme:///example.com//test/some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:example.com/test'],
|
||||||
|
'scheme:///example.com/test//some/path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:example.com/test'],
|
||||||
|
'scheme:///example.com/test/some//path'
|
||||||
|
)
|
||||||
|
).toBe('/some/path');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns undefined for non-matching protocol', () => {
|
||||||
|
expect(extractPathFromURL(['scheme://'], 'foo://some/path')).toBe(undefined);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme://'], 'foo:some/path')).toBe(undefined);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme://'], 'foo:///some/path')).toBe(undefined);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:///'], 'foo:some/path')).toBe(undefined);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:'], 'foo:some/path')).toBe(undefined);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:'], 'foo://some/path')).toBe(undefined);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:'], 'foo:///some/path')).toBe(undefined);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns undefined for non-matching path', () => {
|
||||||
|
expect(extractPathFromURL(['scheme://foo'], 'scheme://some/path')).toBe(
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme://foo'], 'scheme:some/path')).toBe(
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme://foo'], 'scheme:///some/path')).toBe(
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:///foo'], 'scheme:some/path')).toBe(
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:foo'], 'scheme:some/path')).toBe(
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:foo'], 'scheme://some/path')).toBe(
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(extractPathFromURL(['scheme:foo'], 'scheme:///some/path')).toBe(
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns undefined for non-matching host', () => {
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme://example.com'], 'scheme://foo.com/some/path')
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme://example.com'], 'scheme:foo.com/some/path')
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme://example.com'], 'scheme:///foo.com/some/path')
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme:///example.com'], 'scheme:foo.com/some/path')
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme:example.com'], 'scheme:foo.com/some/path')
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme:example.com'], 'scheme://foo.com/some/path')
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(['scheme:example.com'], 'scheme:///foo.com/some/path')
|
||||||
|
).toBe(undefined);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns undefined for non-matching host with wildcard', () => {
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme://*.example.com'],
|
||||||
|
'scheme://test.foo.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme://*.example.com'],
|
||||||
|
'scheme:test.foo.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme://*.example.com'],
|
||||||
|
'scheme:///test.foo.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:///*.example.com'],
|
||||||
|
'scheme:test.foo.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:*.example.com'],
|
||||||
|
'scheme:test.foo.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:*.example.com'],
|
||||||
|
'scheme://test.foo.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe(undefined);
|
||||||
|
|
||||||
|
expect(
|
||||||
|
extractPathFromURL(
|
||||||
|
['scheme:*.example.com'],
|
||||||
|
'scheme:///test.foo.com/some/path'
|
||||||
|
)
|
||||||
|
).toBe(undefined);
|
||||||
|
});
|
||||||
26
packages/native/src/extractPathFromURL.tsx
Normal file
26
packages/native/src/extractPathFromURL.tsx
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
import escapeStringRegexp from 'escape-string-regexp';
|
||||||
|
|
||||||
|
export default function extractPathFromURL(prefixes: string[], url: string) {
|
||||||
|
for (const prefix of prefixes) {
|
||||||
|
const protocol = prefix.match(/^[^:]+:/)?.[0] ?? '';
|
||||||
|
const host = prefix
|
||||||
|
.replace(new RegExp(`^${escapeStringRegexp(protocol)}`), '')
|
||||||
|
.replace(/\/+/g, '/') // Replace multiple slash (//) with single ones
|
||||||
|
.replace(/^\//, ''); // Remove extra leading slash
|
||||||
|
|
||||||
|
const prefixRegex = new RegExp(
|
||||||
|
`^${escapeStringRegexp(protocol)}(/)*${host
|
||||||
|
.split('.')
|
||||||
|
.map((it) => (it === '*' ? '[^/]+' : escapeStringRegexp(it)))
|
||||||
|
.join('\\.')}`
|
||||||
|
);
|
||||||
|
|
||||||
|
const normalizedURL = url.replace(/\/+/g, '/');
|
||||||
|
|
||||||
|
if (prefixRegex.test(normalizedURL)) {
|
||||||
|
return normalizedURL.replace(prefixRegex, '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ import {
|
|||||||
getStateFromPath as getStateFromPathDefault,
|
getStateFromPath as getStateFromPathDefault,
|
||||||
NavigationContainerRef,
|
NavigationContainerRef,
|
||||||
} from '@react-navigation/core';
|
} from '@react-navigation/core';
|
||||||
import escapeStringRegexp from 'escape-string-regexp';
|
import extractPathFromURL from './extractPathFromURL';
|
||||||
import type { LinkingOptions } from './types';
|
import type { LinkingOptions } from './types';
|
||||||
|
|
||||||
type ResultState = ReturnType<typeof getStateFromPathDefault>;
|
type ResultState = ReturnType<typeof getStateFromPathDefault>;
|
||||||
@@ -30,9 +30,18 @@ export default function useLinking(
|
|||||||
subscribe = (listener) => {
|
subscribe = (listener) => {
|
||||||
const callback = ({ url }: { url: string }) => listener(url);
|
const callback = ({ url }: { url: string }) => listener(url);
|
||||||
|
|
||||||
Linking.addEventListener('url', callback);
|
const subscription = Linking.addEventListener('url', callback) as
|
||||||
|
| { remove(): void }
|
||||||
|
| undefined;
|
||||||
|
|
||||||
return () => Linking.removeEventListener('url', callback);
|
return () => {
|
||||||
|
// https://github.com/facebook/react-native/commit/6d1aca806cee86ad76de771ed3a1cc62982ebcd7
|
||||||
|
if (subscription?.remove) {
|
||||||
|
subscription.remove();
|
||||||
|
} else {
|
||||||
|
Linking.removeEventListener('url', callback);
|
||||||
|
}
|
||||||
|
};
|
||||||
},
|
},
|
||||||
getStateFromPath = getStateFromPathDefault,
|
getStateFromPath = getStateFromPathDefault,
|
||||||
getActionFromState = getActionFromStateDefault,
|
getActionFromState = getActionFromStateDefault,
|
||||||
@@ -80,24 +89,6 @@ export default function useLinking(
|
|||||||
getActionFromStateRef.current = getActionFromState;
|
getActionFromStateRef.current = getActionFromState;
|
||||||
});
|
});
|
||||||
|
|
||||||
const extractPathFromURL = React.useCallback((url: string) => {
|
|
||||||
for (const prefix of prefixesRef.current) {
|
|
||||||
const protocol = prefix.match(/^[^:]+:\/\//)?.[0] ?? '';
|
|
||||||
const host = prefix.replace(protocol, '');
|
|
||||||
const prefixRegex = new RegExp(
|
|
||||||
`^${escapeStringRegexp(protocol)}${host
|
|
||||||
.split('.')
|
|
||||||
.map((it) => (it === '*' ? '[^/]+' : escapeStringRegexp(it)))
|
|
||||||
.join('\\.')}`
|
|
||||||
);
|
|
||||||
if (prefixRegex.test(url)) {
|
|
||||||
return url.replace(prefixRegex, '');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return undefined;
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const getInitialState = React.useCallback(() => {
|
const getInitialState = React.useCallback(() => {
|
||||||
let state: ResultState | undefined;
|
let state: ResultState | undefined;
|
||||||
|
|
||||||
@@ -106,7 +97,9 @@ export default function useLinking(
|
|||||||
|
|
||||||
if (url != null && typeof url !== 'string') {
|
if (url != null && typeof url !== 'string') {
|
||||||
return url.then((url) => {
|
return url.then((url) => {
|
||||||
const path = url ? extractPathFromURL(url) : null;
|
const path = url
|
||||||
|
? extractPathFromURL(prefixesRef.current, url)
|
||||||
|
: null;
|
||||||
|
|
||||||
return path
|
return path
|
||||||
? getStateFromPathRef.current(path, configRef.current)
|
? getStateFromPathRef.current(path, configRef.current)
|
||||||
@@ -114,7 +107,7 @@ export default function useLinking(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const path = url ? extractPathFromURL(url) : null;
|
const path = url ? extractPathFromURL(prefixesRef.current, url) : null;
|
||||||
|
|
||||||
state = path
|
state = path
|
||||||
? getStateFromPathRef.current(path, configRef.current)
|
? getStateFromPathRef.current(path, configRef.current)
|
||||||
@@ -131,7 +124,7 @@ export default function useLinking(
|
|||||||
};
|
};
|
||||||
|
|
||||||
return thenable as PromiseLike<ResultState | undefined>;
|
return thenable as PromiseLike<ResultState | undefined>;
|
||||||
}, [extractPathFromURL]);
|
}, []);
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
const listener = (url: string) => {
|
const listener = (url: string) => {
|
||||||
@@ -139,7 +132,7 @@ export default function useLinking(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const path = extractPathFromURL(url);
|
const path = extractPathFromURL(prefixesRef.current, url);
|
||||||
const navigation = ref.current;
|
const navigation = ref.current;
|
||||||
|
|
||||||
if (navigation && path) {
|
if (navigation && path) {
|
||||||
@@ -182,7 +175,7 @@ export default function useLinking(
|
|||||||
};
|
};
|
||||||
|
|
||||||
return subscribe(listener);
|
return subscribe(listener);
|
||||||
}, [enabled, ref, subscribe, extractPathFromURL]);
|
}, [enabled, ref, subscribe]);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
getInitialState,
|
getInitialState,
|
||||||
|
|||||||
@@ -3,6 +3,17 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.7.2](https://github.com/react-navigation/react-navigation/compare/@react-navigation/routers@5.7.1...@react-navigation/routers@5.7.2) (2021-02-21)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* fix getId being called for incorrect routes. closes [#9343](https://github.com/react-navigation/react-navigation/issues/9343) ([3728390](https://github.com/react-navigation/react-navigation/commit/3728390b60814ba414bd15cc5b7e5b51baa1f026))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [5.7.1](https://github.com/react-navigation/react-navigation/compare/@react-navigation/routers@5.7.0...@react-navigation/routers@5.7.1) (2021-01-21)
|
## [5.7.1](https://github.com/react-navigation/react-navigation/compare/@react-navigation/routers@5.7.0...@react-navigation/routers@5.7.1) (2021-01-21)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/routers",
|
"name": "@react-navigation/routers",
|
||||||
"description": "Routers to help build custom navigators",
|
"description": "Routers to help build custom navigators",
|
||||||
"version": "5.7.1",
|
"version": "5.7.2",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react",
|
"react",
|
||||||
"react-native",
|
"react-native",
|
||||||
|
|||||||
@@ -270,7 +270,9 @@ export default function StackRouter(options: StackRouterOptions) {
|
|||||||
)
|
)
|
||||||
: id
|
: id
|
||||||
? state.routes.find(
|
? state.routes.find(
|
||||||
(route) => id === getId?.({ params: route.params })
|
(route) =>
|
||||||
|
route.name === action.payload.name &&
|
||||||
|
id === getId?.({ params: route.params })
|
||||||
)
|
)
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
@@ -369,7 +371,9 @@ export default function StackRouter(options: StackRouterOptions) {
|
|||||||
|
|
||||||
if (id) {
|
if (id) {
|
||||||
index = state.routes.findIndex(
|
index = state.routes.findIndex(
|
||||||
(route) => id === getId?.({ params: route.params })
|
(route) =>
|
||||||
|
route.name === action.payload.name &&
|
||||||
|
id === getId?.({ params: route.params })
|
||||||
);
|
);
|
||||||
} else if (
|
} else if (
|
||||||
(state.routes[state.index].name === action.payload.name &&
|
(state.routes[state.index].name === action.payload.name &&
|
||||||
|
|||||||
@@ -616,6 +616,48 @@ it('ensures unique ID for navigate', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('ensure unique ID is only per route name for navigate', () => {
|
||||||
|
const router = StackRouter({});
|
||||||
|
const options: RouterConfigOptions = {
|
||||||
|
routeNames: ['baz', 'bar', 'qux'],
|
||||||
|
routeParamList: {},
|
||||||
|
routeGetIdList: {
|
||||||
|
baz: ({ params }) => params?.foo,
|
||||||
|
bar: ({ params }) => params?.foo,
|
||||||
|
qux: ({ params }) => params?.test,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(
|
||||||
|
router.getStateForAction(
|
||||||
|
{
|
||||||
|
stale: false,
|
||||||
|
type: 'stack',
|
||||||
|
key: 'root',
|
||||||
|
index: 1,
|
||||||
|
routeNames: ['baz', 'bar', 'qux'],
|
||||||
|
routes: [
|
||||||
|
{ key: 'qux-test', name: 'qux', params: { test: 'a' } },
|
||||||
|
{ key: 'baz-test', name: 'baz', params: { foo: 'a' } },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
CommonActions.navigate('bar', { foo: 'a' }),
|
||||||
|
options
|
||||||
|
)
|
||||||
|
).toEqual({
|
||||||
|
stale: false,
|
||||||
|
type: 'stack',
|
||||||
|
key: 'root',
|
||||||
|
index: 2,
|
||||||
|
routeNames: ['baz', 'bar', 'qux'],
|
||||||
|
routes: [
|
||||||
|
{ key: 'qux-test', name: 'qux', params: { test: 'a' } },
|
||||||
|
{ key: 'baz-test', name: 'baz', params: { foo: 'a' } },
|
||||||
|
{ key: 'bar-test', name: 'bar', params: { foo: 'a' } },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('handles go back action', () => {
|
it('handles go back action', () => {
|
||||||
const router = StackRouter({});
|
const router = StackRouter({});
|
||||||
const options: RouterConfigOptions = {
|
const options: RouterConfigOptions = {
|
||||||
@@ -1307,6 +1349,48 @@ it('ensures unique ID for push', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('ensure unique ID is only per route name for push', () => {
|
||||||
|
const router = StackRouter({});
|
||||||
|
const options: RouterConfigOptions = {
|
||||||
|
routeNames: ['baz', 'bar', 'qux'],
|
||||||
|
routeParamList: {},
|
||||||
|
routeGetIdList: {
|
||||||
|
baz: ({ params }) => params?.foo,
|
||||||
|
bar: ({ params }) => params?.foo,
|
||||||
|
qux: ({ params }) => params?.test,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(
|
||||||
|
router.getStateForAction(
|
||||||
|
{
|
||||||
|
stale: false,
|
||||||
|
type: 'stack',
|
||||||
|
key: 'root',
|
||||||
|
index: 1,
|
||||||
|
routeNames: ['baz', 'bar', 'qux'],
|
||||||
|
routes: [
|
||||||
|
{ key: 'qux-test', name: 'qux', params: { test: 'a' } },
|
||||||
|
{ key: 'baz-test', name: 'baz', params: { foo: 'a' } },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
StackActions.push('bar', { foo: 'a' }),
|
||||||
|
options
|
||||||
|
)
|
||||||
|
).toEqual({
|
||||||
|
stale: false,
|
||||||
|
type: 'stack',
|
||||||
|
key: 'root',
|
||||||
|
index: 2,
|
||||||
|
routeNames: ['baz', 'bar', 'qux'],
|
||||||
|
routes: [
|
||||||
|
{ key: 'qux-test', name: 'qux', params: { test: 'a' } },
|
||||||
|
{ key: 'baz-test', name: 'baz', params: { foo: 'a' } },
|
||||||
|
{ key: 'bar-test', name: 'bar', params: { foo: 'a' } },
|
||||||
|
],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('merges params on navigate to an existing screen', () => {
|
it('merges params on navigate to an existing screen', () => {
|
||||||
const router = StackRouter({});
|
const router = StackRouter({});
|
||||||
const options: RouterConfigOptions = {
|
const options: RouterConfigOptions = {
|
||||||
|
|||||||
@@ -3,6 +3,33 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
||||||
|
|
||||||
|
## [5.14.3](https://github.com/react-navigation/react-navigation/compare/@react-navigation/stack@5.14.2...@react-navigation/stack@5.14.3) (2021-02-21)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/stack
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.14.2](https://github.com/react-navigation/react-navigation/compare/@react-navigation/stack@5.14.1...@react-navigation/stack@5.14.2) (2021-01-25)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* fix transparent modal on web ([38d6808](https://github.com/react-navigation/react-navigation/commit/38d680833e31e62736da19f79328aec553ced814))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## [5.14.1](https://github.com/react-navigation/react-navigation/compare/@react-navigation/stack@5.14.0...@react-navigation/stack@5.14.1) (2021-01-22)
|
||||||
|
|
||||||
|
**Note:** Version bump only for package @react-navigation/stack
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [5.14.0](https://github.com/react-navigation/react-navigation/compare/@react-navigation/stack@5.13.0...@react-navigation/stack@5.14.0) (2021-01-21)
|
# [5.14.0](https://github.com/react-navigation/react-navigation/compare/@react-navigation/stack@5.13.0...@react-navigation/stack@5.14.0) (2021-01-21)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@react-navigation/stack",
|
"name": "@react-navigation/stack",
|
||||||
"description": "Stack navigator component for iOS and Android with animated transitions and gestures",
|
"description": "Stack navigator component for iOS and Android with animated transitions and gestures",
|
||||||
"version": "5.14.0",
|
"version": "5.14.3",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"react-native-component",
|
"react-native-component",
|
||||||
"react-component",
|
"react-component",
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@react-native-community/masked-view": "^0.1.10",
|
"@react-native-community/masked-view": "^0.1.10",
|
||||||
"@react-navigation/native": "^5.9.1",
|
"@react-navigation/native": "^5.9.3",
|
||||||
"@testing-library/react-native": "^7.1.0",
|
"@testing-library/react-native": "^7.1.0",
|
||||||
"@types/color": "^3.0.1",
|
"@types/color": "^3.0.1",
|
||||||
"@types/react": "^16.9.53",
|
"@types/react": "^16.9.53",
|
||||||
|
|||||||
@@ -508,7 +508,7 @@ export default class CardStack extends React.Component<Props, State> {
|
|||||||
// For the old implementation, it stays the same it was
|
// For the old implementation, it stays the same it was
|
||||||
let isScreenActive: Animated.AnimatedInterpolation | 2 | 1 | 0 = 1;
|
let isScreenActive: Animated.AnimatedInterpolation | 2 | 1 | 0 = 1;
|
||||||
|
|
||||||
if (shouldUseActivityState) {
|
if (shouldUseActivityState || Platform.OS === 'web') {
|
||||||
if (index < self.length - activeScreensLimit - 1) {
|
if (index < self.length - activeScreensLimit - 1) {
|
||||||
// screen should be inactive because it is too deep in the stack
|
// screen should be inactive because it is too deep in the stack
|
||||||
isScreenActive = STATE_INACTIVE;
|
isScreenActive = STATE_INACTIVE;
|
||||||
|
|||||||
Reference in New Issue
Block a user