react-list-hooks v1.0.5
react-list-hooks
React Components for handling item selection in a list. This is based on compound components pattern with hooks and context where state is implicitly handled.
Demo
You can customize your list styling and add sub lists to any level down. No need to worry about the state, that will be handled by react-list-hooks.
| Check box list | Button List | 
|---|---|
Getting Started
General prerequisites
- React 16.8+ 
Installation
See npm documentation on how to get started with npm.
npm install --save react-list-hooksUsing
Basic usage example
Import into your React project and render a list:
//CSS File
.is-disabled {pointer-event: none; opacity: 0.5;}//JS File
import { ListContext, List, ListItem, ToggleSubList, ToggleListItem } from 'react-list-hooks';
const TextWithCheckBox = ({isSelected, id, displayValue, customClass}) => {
    const {updateList} = useContext(ListContext);
    return (
        <div className={customClass} onClick={() => updateList(id)}>
            <input type="checkbox" checked={isSelected} />
            <span>{displayValue}</span>
        </div>
    )
};
class App extends Component {
  render() {
    return (
      <div>  
          <h1>Fruits List</h1>  
           <List>
                <ListItem id='apple'>
                    <TextWithCheckBox displayValue='Apple' />
                </ListItem>
                    {/*Sub List enable/disable based on parent list item id*/}
                    <ToggleSubList whenActive='apple' disableClass='is-disabled'>
                        <List customClass='sub-list'>
                            <ListItem id='red'>
                                <TextWithCheckBox displayValue='Red Apple' />
                            </ListItem>
                            <ListItem id='green'>
                                <TextWithCheckBox displayValue='Green Apple' />
                            </ListItem>
                        </List>
                    </ToggleSubList>
                <ListItem id='banana'>
                    <TextWithCheckBox displayValue='Banana' />
                </ListItem>
                <ListItem id='orange'>
                    <TextWithCheckBox displayValue='Orange' />
                </ListItem>
                {/*List Item enable/disable based on sibling list item id*/}
                <ToggleListItem id='sour' whenActive='orange' disableClass='is-disabled'>
                    <ListItem id='sour'>
                        <TextWithCheckBox displayValue='Sour Orange' />
                    </ListItem>
                </ToggleListItem>
            </List>
      </div>
    );
  }
}
export default App;Components
- List - A component that renders the list of items. - Available options with example values: - <List initialState = {[1, 3, 10]} onListUpdate = {(list) => console.log('Selected Items', list)} clearList = {false} customClass = 'has-green-background' > <ListItem>...</ListItem> </List>- Options Detail: - Parameter - Type - Required - Defaults - Description - initialState - Array - no - [] - Array of pre-selected items. - onListUpdate - Funtion - no - - - Passed function will call each type list updates. - clearList - Boolean - no - false - Prop passed to clear the list - customClass - String - no - - - Custom class for the list wrapper div. 
- ListItem - A component that renders a single item in a list. Anyone can select/deselect list from it's children component. - Available options with example values: - <ListItem id = {1}> ... </ListItem>- Options Detail: - Parameter - Type - Required - Defaults - Description - id - Any - yes - - - Unique item id. 
- ToggleSubList - A component that enable/disable a sub list based on its parent list item ID. - Available options with example values: - <ToggleSubList whenActive={2} disableClass='is-disabled'> <List>...</List> </ToggleSubList>- Options Detail: - Parameter - Type - Required - Defaults - Description - whenActive - Any - yes - - - Pass parent item id to this prop to enable/disable a sublist. - disableClass - string - no - - - Sub list disable class e.g 'is-display-none'. 
- ToggleListItem - A component that enable/disable a item in a same list based on its sibling item ID. - Available options with example values: - <ToggleListItem id='apple' whenActive='fruits' disableClass='is-disabled'> <ListItem>...</ListItem> </ToggleListItem>- Options Detail: - Parameter - Type - Required - Defaults - Description - id - Any - yes - - - List Item Id (you want to disable). - whenActive - Any - yes - - - Pass sibling item id to this prop to enable/disable a list item. - disableClass - string - no - - - List item disable class e.g 'is-disabled'.