react-native-nested-checboxes
Version:
react-native-nested-checkboxes is a simple implementation of checkboxes in nested hierarical style.
106 lines (94 loc) • 2.96 kB
Markdown
# react-native-nested-checboxes
`react-native-nested-checboxes` is the simple implementation of checkboxes in nested style. They can be used when data is in a parent-child relation and needed to be selected.
<img src="https://raw.githubusercontent.com/gagtic/NestedCheckBox/master/preview/nested_checbox.gif" width="180">
# Getting started
## Installation
```bash
npm i react-native-nested-checboxes
```
Please Make sure that imported `react-native-nested-checboxes` is v2.0.1 or above
```json
"react-native-nested-checboxes": "^2.0.1",
```
You would also need `@react-native-community/checkbox` for this.
```bash
npm install @react-native-community/checkbox
```
You would also need `react-native-vector-icons` for this.
```bash
npm install react-native-vector-icons
```
## Linking
From react-native >= 0.60 autolinking will take care of the link (on iOS and Android)
# Usage
## Import
Import the library like any other module
```javascript
import NestedCheckBoxesMain from 'react-native-nested-checboxes'
```
# Input
`react-native-nested-checboxes` takes customized input of a hierarchical object, that then will be used to form a parent child related checkbox.
### Example
```javascript
const [data, setData] = useState([
{
parent: 'Parent 1',
is_checked: false,
children: [
{
value: 'Child 1',
is_checked: false,
},
{
value: 'Child 2',
is_checked: false,
},
{
value: 'Child 3',
is_checked: false,
},
]
},
{
parent: 'Parent 2',
is_checked: false,
children: [
{
value: 'Child 1',
is_checked: false,
},
]
},
])
```
# Usage
The user can set any amount of childern that are assigned to a single parent.
```javascript
<NestedCheckBoxesMain
data_list={data}
/>
```
When any of the box is pressed, it's subsequent `is_checked` will be toggled true.
```javascript
//...
{
parent: 'Parent 1',
is_checked: false, //<-this will be updated
children: [
{
value: 'Child 1',
is_checked: false, //<-this will be updated
},
{
//..
//...
}
}
```
# Properties
| Property | Default | Description |
| ------------- |:-------------: | :----- |
| data_list | `Check Example` | Input data which will be manipulated by the library |
# Future Prospects
I will be adding a strict mode to the library that wil not allow parent to be unselected while any child is selected. That mode will usually cover usecase of showing weather all the childern are selected or not.
Furthermore I will be adding a stylized list expanding feature that will be better for organizing large amount of data.