-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
14 changed files
with
19,027 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,115 @@ | ||
# @appandflow/rn-magic-scroll | ||
|
||
Library to help managing keyboard interaction in form | ||
The objective of the library is to ease the discomfort of scrolling by implementing keyboard management for user input. While another solution offered plug-and-play functionality, we opted against it because it lacked the flexibility to address issues when they arise. We believe our approach will empower you to resolve any challenges your app may encounter. | ||
|
||
## Installation | ||
|
||
```sh | ||
npm install @appandflow/rn-magic-scroll | ||
yarn install @appandflow/rn-magic-scroll | ||
``` | ||
|
||
```sh | ||
npm i @appandflow/rn-magic-scroll | ||
``` | ||
|
||
## Usage | ||
## Basic Usage | ||
|
||
```js | ||
import { multiply } from '@appandflow/rn-magic-scroll'; | ||
Wrap your form/screen within our ScrollView. Utilizing context requires it to be one level higher for enhanced control over your inputs. Alternatively, you can employ the Higher Order Component (HOC) for this purpose. | ||
|
||
// ... | ||
```tsx | ||
import MagicScroll from '@appandflow/rn-magic-scroll'; | ||
|
||
const result = await multiply(3, 7); | ||
// rest of your imports | ||
|
||
const YourScreen = () => { | ||
return ( | ||
<MagicScroll.SmartScrollView> | ||
<YourForm /> | ||
</MagicScroll.SmartScrollView> | ||
); | ||
}; | ||
|
||
// Don't forget this portion | ||
export default MagicScroll.withSmartScroll(YourScreen); | ||
``` | ||
|
||
## Contributing | ||
Then inside your form/component you can use our TextInput. | ||
|
||
See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow. | ||
```tsx | ||
import MagicScroll from '@appandflow/rn-magic-scroll'; | ||
|
||
## License | ||
// rest of your imports | ||
|
||
const YourForm = () => { | ||
return ( | ||
<View> | ||
<MagicScroll.TextInput | ||
name="email" | ||
renderTop={() => <Text>Email</Text>} | ||
textInputProps={{ | ||
style: { | ||
height: 50, | ||
backgroundColor: '#ddd', | ||
borderRadius: 10, | ||
marginTop: 8, | ||
}, | ||
}} | ||
/> | ||
<MagicScroll.TextInput | ||
name="password" | ||
// This is where you can design your custom label | ||
renderTop={() => <Text>Password</Text>} | ||
textInputProps={{ | ||
secureTextEntry: true, | ||
style: { | ||
height: 50, | ||
backgroundColor: '#ddd', | ||
borderRadius: 10, | ||
marginTop: 8, | ||
}, | ||
}} | ||
/> | ||
</View> | ||
); | ||
}; | ||
``` | ||
|
||
MIT | ||
## Advance usage | ||
|
||
--- | ||
As mentioned in the introduction, the drawback of a plug-and-play library is its limitations when you need to deviate from the standard functionality. That's precisely why our library allows for customization, enabling you to tailor its usage to suit your specific needs and use cases. | ||
|
||
Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob) | ||
## Tips | ||
|
||
We encourage you to wrap our TextInput with your custom one. | ||
|
||
Here an example | ||
|
||
```tsx | ||
import MagicScroll from '@appandflow/rn-magic-scroll'; | ||
|
||
// rest of your imports | ||
|
||
interface Props { | ||
label?: string; | ||
isPassword?: boolean; | ||
name?: string; | ||
description?: string; | ||
} | ||
|
||
const YourCustomInput = (props: Props) => { | ||
return ( | ||
<MagicScroll.TextInput | ||
name={props.name} | ||
renderTop={() => <Text>{props.label}</Text>} | ||
renderBottom={() => <Text>{props.description}</Text>} | ||
textInputProps={{ | ||
secureTextEntry: props.isPassword, | ||
style: { | ||
height: 50, | ||
backgroundColor: '#ddd', | ||
borderRadius: 10, | ||
marginTop: 8, | ||
}, | ||
}} | ||
/> | ||
); | ||
}; | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.