Skip to content

Commit

Permalink
feat(default): library-release
Browse files Browse the repository at this point in the history
  • Loading branch information
EQuimper committed May 7, 2024
1 parent 393ef20 commit 10a3964
Show file tree
Hide file tree
Showing 14 changed files with 19,027 additions and 32 deletions.
114 changes: 99 additions & 15 deletions README.md
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,
},
}}
/>
);
};
```
6 changes: 3 additions & 3 deletions example/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
"expo": "~50.0.17",
"expo-status-bar": "~1.11.1",
"react": "18.2.0",
"react-native": "0.73.6",
"react-dom": "18.2.0",
"react-native": "0.73.6",
"react-native-web": "~0.19.6"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"babel-plugin-module-resolver": "^5.0.0",
"@expo/webpack-config": "^18.0.1",
"babel-loader": "^8.1.0"
"babel-loader": "^8.1.0",
"babel-plugin-module-resolver": "^5.0.0"
},
"private": true
}
9 changes: 1 addition & 8 deletions example/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,11 @@
import * as React from 'react';

import { StyleSheet, View, Text } from 'react-native';
import { multiply } from '@appandflow/rn-magic-scroll';

export default function App() {
const [result, setResult] = React.useState<number | undefined>();

React.useEffect(() => {
multiply(3, 7).then(setResult);
}, []);

return (
<View style={styles.container}>
<Text>Result: {result}</Text>
<Text>To Be There</Text>
</View>
);
}
Expand Down
12 changes: 9 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@appandflow/rn-magic-scroll",
"version": "0.1.0",
"version": "0.0.1",
"description": "Library to help managing keyboard interaction in form",
"main": "lib/commonjs/index",
"module": "lib/module/index",
Expand Down Expand Up @@ -69,6 +69,7 @@
"react": "18.2.0",
"react-native": "0.73.6",
"react-native-builder-bob": "^0.23.2",
"react-native-reanimated": "^3.11.0",
"release-it": "^15.0.0",
"typescript": "^5.2.2"
},
Expand All @@ -77,7 +78,8 @@
},
"peerDependencies": {
"react": "*",
"react-native": "*"
"react-native": "*",
"react-native-reanimated": "^3.0.0"
},
"workspaces": [
"example"
Expand Down Expand Up @@ -128,7 +130,8 @@
"trailingComma": "es5",
"useTabs": false
}
]
],
"react-hooks/exhaustive-deps": "off"
}
},
"eslintIgnore": [
Expand All @@ -155,5 +158,8 @@
}
]
]
},
"dependencies": {
"jotai": "^2.8.0"
}
}
Loading

0 comments on commit 10a3964

Please sign in to comment.