Skip to content

Commit

Permalink
feat: tabs now support deeplinking
Browse files Browse the repository at this point in the history
  • Loading branch information
blakef committed Mar 10, 2023
1 parent 5c41e87 commit ca9ca20
Show file tree
Hide file tree
Showing 553 changed files with 1,153 additions and 1,153 deletions.
6 changes: 3 additions & 3 deletions docs/_integration-with-existing-apps-objc.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Next, make sure you have [installed the yarn package manager](https://yarnpkg.co

Install the `react` and `react-native` packages. Open a terminal or command prompt, then navigate to the directory with your `package.json` file and run:

<Tabs groupId="package-manager" defaultValue={constants.defaultPackageManager} values={constants.packageManagers}>
<Tabs groupId="package-manager" queryString defaultValue={constants.defaultPackageManager} values={constants.packageManagers}>
<TabItem value="npm">

```shell
Expand All @@ -62,7 +62,7 @@ This will print a message similar to the following (scroll up in the yarn output
This is OK, it means we also need to install React:

<Tabs groupId="package-manager" defaultValue={constants.defaultPackageManager} values={constants.packageManagers}>
<Tabs groupId="package-manager" queryString defaultValue={constants.defaultPackageManager} values={constants.packageManagers}>
<TabItem value="npm">

```shell
Expand Down Expand Up @@ -346,7 +346,7 @@ Apple has blocked implicit cleartext HTTP resource loading. So we need to add th

To run your app, you need to first start the development server. To do this, run the following command in the root directory of your React Native project:

<Tabs groupId="package-manager" defaultValue={constants.defaultPackageManager} values={constants.packageManagers}>
<Tabs groupId="package-manager" queryString defaultValue={constants.defaultPackageManager} values={constants.packageManagers}>
<TabItem value="npm">

```shell
Expand Down
4 changes: 2 additions & 2 deletions docs/accessibilityinfo.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Sometimes it's useful to know whether or not the device has a screen reader that

## Example

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

```SnackPlayer name=AccessibilityInfo%20Function%20Component%20Example&supportedPlatforms=android,ios
Expand Down Expand Up @@ -76,7 +76,7 @@ export default App;
</TabItem>
<TabItem value="classical">

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=AccessibilityInfo%20Class%20Component%20Example&supportedPlatforms=android,ios&ext=js
Expand Down
2 changes: 1 addition & 1 deletion docs/activityindicator.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Displays a circular loading indicator.

## Example

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

```SnackPlayer name=ActivityIndicator%20Function%20Component%20Example
Expand Down
2 changes: 1 addition & 1 deletion docs/alert.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ This is an API that works both on Android and iOS and can show static alerts. Al

## Example

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

```SnackPlayer name=Alert%20Function%20Component%20Example&supportedPlatforms=ios,android
Expand Down
4 changes: 2 additions & 2 deletions docs/animated.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The `Animated` library is designed to make animations fluid, powerful, and painl

The core workflow for creating an animation is to create an `Animated.Value`, hook it up to one or more style attributes of an animated component, and then drive updates via animations using `Animated.timing()`.

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

> Don't modify the animated value directly. You can use the [`useRef` Hook](https://reactjs.org/docs/hooks-reference.html#useref) to return a mutable ref object. This ref object's `current` property is initialized as the given argument and persists throughout the component lifecycle.
Expand All @@ -26,7 +26,7 @@ The core workflow for creating an animation is to create an `Animated.Value`, ho

The following example contains a `View` which will fade in and fade out based on the animated value `fadeAnim`

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

```SnackPlayer name=Animated
Expand Down
8 changes: 4 additions & 4 deletions docs/animations.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ The [`Animated`](animated) API is designed to concisely express a wide variety o

For example, a container view that fades in when it is mounted may look like this:

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer ext=js
Expand Down Expand Up @@ -310,7 +310,7 @@ The following example implements a horizontal scrolling carousel where the scrol

#### ScrollView with Animated Event Example

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

```SnackPlayer name=Animated&supportedPlatforms=ios,android
Expand Down Expand Up @@ -441,7 +441,7 @@ export default App;
</TabItem>
<TabItem value="classical">
<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">
```SnackPlayer name=Animated&supportedPlatforms=ios,android&ext=js
Expand Down Expand Up @@ -774,7 +774,7 @@ onPanResponderMove={Animated.event(

#### PanResponder with Animated Event Example

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

```SnackPlayer name=Animated
Expand Down
2 changes: 1 addition & 1 deletion docs/appearance.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The `Appearance` module exposes information about the user's appearance preferen

#### Developer notes

<Tabs groupId="guide" defaultValue="web" values={constants.getDevNotesTabs(["android", "ios", "web"])}>
<Tabs groupId="guide" queryString defaultValue="web" values={constants.getDevNotesTabs(["android", "ios", "web"])}>

<TabItem value="web">

Expand Down
4 changes: 2 additions & 2 deletions docs/appstate.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ For more information, see [Apple's documentation](https://developer.apple.com/do

To see the current state, you can check `AppState.currentState`, which will be kept up-to-date. However, `currentState` will be null at launch while `AppState` retrieves it over the bridge.

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

```SnackPlayer name=AppState%20Function%20Component%20Example
Expand Down Expand Up @@ -77,7 +77,7 @@ If you don't want to see the AppState update from `active` to `inactive` on iOS
</TabItem>
<TabItem value="classical">

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=AppState%20Class%20Component%20Example&ext=js
Expand Down
4 changes: 2 additions & 2 deletions docs/backhandler.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ BackHandler.addEventListener('hardwareBackPress', function () {

The following example implements a scenario where you confirm if the user wants to exit the app:

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

```SnackPlayer name=BackHandler&supportedPlatforms=android
Expand Down Expand Up @@ -99,7 +99,7 @@ export default App;
</TabItem>
<TabItem value="classical">

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=BackHandler&supportedPlatforms=android&ext=js
Expand Down
2 changes: 1 addition & 1 deletion docs/building-for-tv.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import con

TV devices support has been implemented with the intention of making existing React Native applications work on Apple TV and Android TV, with few or no changes needed in the JavaScript code for the applications.

<Tabs groupId="tv" defaultValue="androidtv" values={[ {label: 'Android TV', value: 'androidtv'}, {label: '🚧 tvOS', value: 'tvos'}, ]}>
<Tabs groupId="tv" queryString defaultValue="androidtv" values={[ {label: 'Android TV', value: 'androidtv'}, {label: '🚧 tvOS', value: 'tvos'}, ]}>

<TabItem value="androidtv">

Expand Down
4 changes: 2 additions & 2 deletions docs/communication-android.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Properties are the most straightforward way of cross-component communication. So

You can pass properties down to the React Native app by providing a custom implementation of `ReactActivityDelegate` in your main activity. This implementation should override `getLaunchOptions` to return a `Bundle` with the desired properties.

<Tabs groupId="android-language" defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<Tabs groupId="android-language" queryString defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>

<TabItem value="java">

Expand Down Expand Up @@ -82,7 +82,7 @@ export default class ImageBrowserApp extends React.Component {

`ReactRootView` provides a read-write property `appProperties`. After `appProperties` is set, the React Native app is re-rendered with new properties. The update is only performed when the new updated properties differ from the previous ones.

<Tabs groupId="android-language" defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<Tabs groupId="android-language" queryString defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>

<TabItem value="java">

Expand Down
10 changes: 5 additions & 5 deletions docs/custom-webview-android.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ To get started, you'll need to create a subclass of `RNCWebViewManager`, `RNCWeb
- `getName`
- `addEventEmitters`

<Tabs groupId="android-language" defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<Tabs groupId="android-language" queryString defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<TabItem value="java">

```java
Expand Down Expand Up @@ -94,7 +94,7 @@ You'll need to follow the usual steps to [register the module](native-modules-an

To add a new property, you'll need to add it to `CustomWebView`, and then expose it in `CustomWebViewManager`.

<Tabs groupId="android-language" defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<Tabs groupId="android-language" queryString defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<TabItem value="java">

```java
Expand Down Expand Up @@ -149,7 +149,7 @@ class CustomWebViewManager : RNCWebViewManager() {

For events, you'll first need to make create event subclass.

<Tabs groupId="android-language" defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<Tabs groupId="android-language" queryString defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<TabItem value="java">

```java
Expand Down Expand Up @@ -198,7 +198,7 @@ You can trigger the event in your web view client. You can hook existing handler

You should refer to [RNCWebViewManager.java](https://github.com/react-native-webview/react-native-webview/blob/master/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java) in the React Native WebView codebase to see what handlers are available and how they are implemented. You can extend any methods here to provide extra functionality.

<Tabs groupId="android-language" defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<Tabs groupId="android-language" queryString defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<TabItem value="java">

```java
Expand Down Expand Up @@ -274,7 +274,7 @@ protected class CustomWebViewClient : RNCWebViewClient() {

Finally, you'll need to expose the events in `CustomWebViewManager` through `getExportedCustomDirectEventTypeConstants`. Note that currently, the default implementation returns `null`, but this may change in the future.

<Tabs groupId="android-language" defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<Tabs groupId="android-language" queryString defaultValue={constants.defaultAndroidLanguage} values={constants.androidLanguages}>
<TabItem value="java">

```java
Expand Down
2 changes: 1 addition & 1 deletion docs/datepickerios.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Use `DatePickerIOS` to render a date/time picker (selector) on iOS. This is a co

### Example

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

```SnackPlayer name=DatePickerIOS&supportedPlatforms=ios
Expand Down
2 changes: 1 addition & 1 deletion docs/debugging.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ You can use [the standalone version of React Developer Tools](https://github.com

> Note: Version 4 of `react-devtools` requires `react-native` version 0.62 or higher to work properly.
<Tabs groupId="package-manager" defaultValue={constants.defaultPackageManager} values={constants.packageManagers}>
<Tabs groupId="package-manager" queryString defaultValue={constants.defaultPackageManager} values={constants.packageManagers}>
<TabItem value="npm">

```shell
Expand Down
4 changes: 2 additions & 2 deletions docs/dimensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ If you are targeting foldable devices or devices which can change the screen siz

## Example

<Tabs groupId="syntax" defaultValue={constants.defaultSyntax} values={constants.syntax}>
<Tabs groupId="syntax" queryString defaultValue={constants.defaultSyntax} values={constants.syntax}>
<TabItem value="functional">

```SnackPlayer name=Dimensions
Expand Down Expand Up @@ -86,7 +86,7 @@ export default App;
</TabItem>
<TabItem value="classical">

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=Dimensions&ext=js
Expand Down
8 changes: 4 additions & 4 deletions docs/direct-manipulation.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ If you look at the implementation of `setNativeProps` in [NativeMethodsMixin](ht

Composite components are not backed by a native view, so you cannot call `setNativeProps` on them. Consider this example:

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=setNativeProps%20with%20Composite%20Components&ext=js
Expand Down Expand Up @@ -116,7 +116,7 @@ If you run this you will immediately see this error: `Touchable child must eithe

Since the `setNativeProps` method exists on any ref to a `View` component, it is enough to forward a ref on your custom component to one of the `<View />` components that it renders. This means that a call to `setNativeProps` on the custom component will have the same effect as if you called `setNativeProps` on the wrapped `View` component itself.

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=Forwarding%20setNativeProps&ext=js
Expand Down Expand Up @@ -171,7 +171,7 @@ You may have noticed that we passed all of the props down to the child view usin

Another very common use case of `setNativeProps` is to edit the value of the TextInput. The `controlled` prop of TextInput can sometimes drop characters when the `bufferDelay` is low and the user types very quickly. Some developers prefer to skip this prop entirely and instead use `setNativeProps` to directly manipulate the TextInput value when necessary. For example, the following code demonstrates editing the input when you tap a button:

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=Clear%20text&ext=js
Expand Down Expand Up @@ -316,7 +316,7 @@ Like `measure()`, but measures the view relative to an ancestor, specified with
This method can also be called with a `relativeToNativeNode` handler (instead of reference), but this variant is deprecated.
:::

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=measureLayout%20example&supportedPlatforms=android,ios&ext=js
Expand Down
2 changes: 1 addition & 1 deletion docs/drawerlayoutandroid.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ React component that wraps the platform `DrawerLayout` (Android only). The Drawe

## Example

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=DrawerLayoutAndroid%20Component%20Example&supportedPlatforms=android&ext=js
Expand Down
2 changes: 1 addition & 1 deletion docs/dynamiccolorios.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ At runtime, the system will choose which of the colors to display depending on t

#### Developer notes

<Tabs groupId="guide" defaultValue="web" values={constants.getDevNotesTabs(["ios", "web"])}>
<Tabs groupId="guide" queryString defaultValue="web" values={constants.getDevNotesTabs(["ios", "web"])}>

<TabItem value="web">

Expand Down
2 changes: 1 addition & 1 deletion docs/easing.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ The following helpers are used to modify other easing functions.

## Example

<Tabs groupId="language" defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.defaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=Easing%20Demo&ext=js
Expand Down
4 changes: 2 additions & 2 deletions docs/flatlist.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ If you need section support, use [`<SectionList>`](sectionlist.md).

## Example

<Tabs groupId="language" defaultValue={constants.dewfaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.dewfaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=flatlist-simple&ext=js
Expand Down Expand Up @@ -166,7 +166,7 @@ More complex, selectable example below.
- By passing `extraData={selectedId}` to `FlatList` we make sure `FlatList` itself will re-render when the state changes. Without setting this prop, `FlatList` would not know it needs to re-render any items because it is a `PureComponent` and the prop comparison will not show any changes.
- `keyExtractor` tells the list to use the `id`s for the react keys instead of the default `key` property.

<Tabs groupId="language" defaultValue={constants.dewfaultSnackLanguage} values={constants.snackLanguages}>
<Tabs groupId="language" queryString defaultValue={constants.dewfaultSnackLanguage} values={constants.snackLanguages}>
<TabItem value="javascript">

```SnackPlayer name=flatlist-selectable&ext=js
Expand Down
Loading

0 comments on commit ca9ca20

Please sign in to comment.