1.0.0 • Published 2 years ago

react-native-according-smashup v1.0.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

react-native-according-smashup

This is React native javaScript component which is used to expand the list hide/show the list etc...

Installation

npm install react-native-according-smashup

yarn add react-native-according-smashup

Usage

import {SmashUp,Head, Body, ClickToExpand} from 'react-native-according-smashup';

//Simple collapsable
<SmashUp>
    <Head>
      <View>
        <Text>Click here</Text>
      </View>
    </Head>
    <Body>
      <Text>Ta daa!</Text>
    </Body>
</SmashUp>

//click to Expand  
<ClickToExpand
        list={this.state.list}
        header={this._head}
        body={this._body}
        keyExtractor={item => item.key}
      />

SmashUp Components are considered as View , so you can use all the props of the View Component like style.

Demo

Simple Collapse

import {  View,Text } from 'react-native';
import { SmashUp, Head, Body } from "react-native-according-smashup";
import { Thumbnail, List, ListItem, Separator } from 'native-base';

<View>
    <SmashUp>
      <Head>
        <Separator bordered>
          <Text>FORWARD</Text>
        </Separator>
      </Head>
      <Body>
        <ListItem >
          <Text>Aaron Bennet</Text>
        </ListItem>
        <ListItem>
          <Text>Claire Barclay</Text>
        </ListItem>
        <ListItem last>
          <Text>Kelso Brittany</Text>
        </ListItem>
      </Body>
    </SmashUp>
    <SmashUp>
      <Head>
        <Separator bordered>
          <Text>FORWARD</Text>
        </Separator>
      </Head>
      <Body>
        <ListItem >
          <Text>Aaron Bennet</Text>
        </ListItem>
        <ListItem>
          <Text>Claire Barclay</Text>
        </ListItem>
        <ListItem last>
          <Text>Kelso Brittany</Text>
        </ListItem>
      </Body>
    </SmashUp>
  </View>

Click To Expand List

import {ClickToExpand} from "react-native-according-smashup";
import { Separator } from 'native-base';
import { View, Text} from 'react-native';

this.state={
  list:[
      {
        id:1,
        title: 'Getting Started',
        body: 'React native according?smashUp component, very good to use in toggles & show/hide content'
      },
      {
        id:2,
        title: 'Components',
        body: 'ClickToExpand,SmashUp,Head & Body'
      }
      ],
}

_head(item){
    return(
        <Separator bordered style={{alignItems:'center'}}>
          <Text>{item.title}</Text>
        </Separator>
    );
}

_body(item){
    return (
        <View style={{padding:10}}>
          <Text style={{textAlign:'center'}}>{item.body}</Text>
        </View>
    );
}

render() {
    return (
          <ClickToExpand
            list={this.state.list}
            header={this._head}
            body={this._body}
            keyExtractor={item => `${item.id}`}
          />
    );
}

Components

Head & Body you can use Head and Body as a view and you can styule it as per your prefences when you touched the header it will SmashUp(that means it will expand) the body will be appear

Collapse yopu need to use SmashUp to wrap your Head and body

Props NameDefaultTypeDescription
isExpandedfalsebooleanshow the Body if true
disabledfalsebooleandisable the click on the collapse header if true
onToggle()=> booleanFunction(isExpanded:boolean)this function take a input in boolean
handleLongPressvoid()Function()it handless the longPress if user longPress on header at that time this function calls
touchableOpacityProps{}Objectyou can pass extra props to yopu touch events

if you want to change the state of parent then you can use the onToggle or isExoanded as an input and output to syncronise the parenr srare and child state

ClickToExpand

ClickToExpand components allow you to show an accordion with list of sections (head&body)

It's based on FlatList. Which means all the props related to FlatList are supported.

Props NameDefaultTypeDescription
list or data[]Array
header(item, index, isExpanded)=>functionFunctionthis function takes an array as an input and render the array into header
body(item, index, isExpanded)=>functionFunctionthis function takes an array as an input and render the array into body
onToggle(keyExtractor(item, index) or index, index, isExpanded) => undefinedFunction
expandedKeyundefinedAny
expandedIndexundefinednumber
isDisabled(item, index) => undefinedFunctionthis function will allow boolean value and it will disable the List