How to create a Modal that has multiple steps? - react-native

I would like to create a Modal that pops up from the bottom of the screen (similar to Payment Request API) where a user would fill a form and then presses continue, and the modal scrolls to the next step (i.e the modal remains but next step slides in). Is there any plugin that already exists, or has this been done before? (I'm not sure of the limitations of React Native). Just a side note I know how to make a modal popup from the bottom of the screen but not sure how to make the modal slide horizontal in steps.

define a step in your state
this.state={step:'intial'}
and in your render method use step to find out which model to show
<Modal open={true}>
(this.state.step=='intial'?<view></view>:null>
(this.state.step=='second'?<view></view>:null>
</Modal>
you can use animation to make work better

Related

disable navigation if some condition [react-native-router-flux]

I'm in some component where user can provide some data. If user clicks any button or swipes or do anything to navigate to some different Scene I want to detect if he provided some changes he didn't save and if yes, I want him to stay on the current screen, not navigate, and finally probably show some modal with warning. How can I achieve that with react-native-router-flex?
I've tried many approaches with onExit function f.e but failed to make any use of it...

React Native CLI - Creating a button in a ScrollView

Hey I'm just starting out with React Native CLI.
I want to have a button which will add an item in the ScrollView. And the new Item should lead to a new Screen when you press it. But I don't have an idea how to make this nor do I know how to google that xD. Does anyone know how I can make this?
I just have a button which leads to another screen when pressing it.
I hope someone can help me :)
First you have to clear few things and make the logic.
1)Either you want to save that item datathen show it in scroll view, make it Pressable and then u can navigate to a different screen.
Or
You just want to show the data in the scroll view. Once you reload, the data is gone. So that's my bro (In my opinion) is of no use.
For the first step .
You need to store the data in a storage and then fetch it in a scroll view,
make it Pressable and navigate to a different screen.
(hint: If you want to make it Pressable then you can fetch the data into a card component and then call that component in a scroll view).
Now grab your keyboard and start searching on it.

react native - Cannot select button behind "transparentModal"

I use transparentModal for open a modal in react native.
Stack Group 1: Contains App Screens
Stack Group 2: using transparentModal for handling modal
The modal only occupies 2/3 of screen, and there are some button on the top which should be clickable. However, we cannot press these buttons.
Please take a look at the image below
If you have any idea, please let me know.
Thank you in advance!
Transparent modals are just another screen (s. docs). Meaning that the background's screen is set to transparent, but the underlying screen is not pressable.
A possible solution is to move your buttons in a custom header component for your transparentModal screen (s. docs).
Alternatively (but in your case that's seems not the right way to go), you can set cardOverlayEnabled: true to make the screen close if you tap on the background of your transparent modal screen.
Bad news is that we cannot do it using react-navigation
Please take a look at this link

RNNv2 CustomBackButton leaves a gap on the Nav Bar

I have made a custom back button component simply to pop up an alert to the user on certain screens where they may be changing data for an entity and will lose those changes if they do not hit Save before navigating away from the screen.
Link to snack for full CustomBackButton component code
(the snack won't run, I'm just using it to provide the full code I am using)
This logic/implementation works as intended, however the appearance is grossly different from the native back button appearance on iOS. I am wondering how best to emulate this as close as possible so the user can feel that the button is the same as the native experience everywhere throughout the application.
What would you advise? I am open to any and all suggestions such as flexbox improvements, hacky RNN mods, etc. etc.
custom back button:
native back button:
for now i am using a marginLeft: -20 on the button container (styles.button)

How to always show a keypad in react native?

I have a view, in which there is a redux form field linked to a text input.
First of all, is there a way to show that keypad on initial rendering without the sliding in animation?
Second, on finished editing, is there a way to still keep the keypad up there?
I have tried to set blurOnSubmit to false in TextInput, it seems to stop me from losing the focus by clicking outside.
Lastly, there is also a button on that page which will start a request with the input value, on resolved, a modal will slide up from the bottom to show a success screen. This modal is implemented using react-navigation. The modal is a relatively small rectangle shape with the rest part transparent. So users can see the original page even when the success modal is up. In this case, is there a way to always show the keypad in the original screen even when the modal is up?
First of all, is there a way to show that keypad on initial rendering without the sliding in animation?
No. React Native doesn't support a way to disable the slide animation.
Second, on finished editing, is there a way to still keep the keypad up there?
If the TextInput is being rendered inside a ScrollView, add keyboardShouldPersistTaps=handled. https://facebook.github.io/react-native/docs/scrollview#keyboardshouldpersisttaps. It will hold the focus.