1.1.2 • Published 4 years ago

@horizonlime/react-native-select-multiple v1.1.2

Weekly downloads
5
License
ISC
Repository
github
Last release
4 years ago

@horizonlime/react-native-select-multiple

Build Status JavaScript Style Guide

A customizable FlatList that allows you to select multiple rows AND:

  • display checkboxes as disabled
  • use icons instead of images

This is a modified version of TABLEFLIP's react-native-select-multiple

select-multiple

Install

npm install @horizonlime/react-native-select-multiple

Usage

import React, { Component } from 'react'
import { View } from 'react-native'
import SelectMultiple from '@horizonlime/react-native-select-multiple'

const fruits = ['Apples', 'Oranges', 'Pears']
// --- OR ---
// const fruits = [
//   { label: 'Apples', value: 'appls', disable: false },
//   { label: 'Oranges', value: 'orngs', disable: true },
//   { label: 'Pears', value: 'pears', disable: false }
// ]

class App extends Component {
  state = { selectedFruits: [] }

  onSelectionsChange = (selectedFruits) => {
    // selectedFruits is array of { label, value }
    this.setState({ selectedFruits })
  }

  render () {
    return (
      <View>
        <SelectMultiple
          items={fruits}
          selectedItems={this.state.selectedFruits}
          onSelectionsChange={this.onSelectionsChange} />
      </View>
    )
  }
}
export default App

Customize label

import React, { Component } from 'react'
import { View, Text, Image } from 'react-native'
import SelectMultiple from '@horizonlime/react-native-select-multiple'
import { Ionicons } from '@expo/vector-icons'

const fruits = ['Apples', 'Oranges', 'Pears']
// --- OR ---
// const fruits = [
//   { label: 'Apples', value: 'appls', disable: false },
//   { label: 'Oranges', value: 'orngs', disable: true },
//   { label: 'Pears', value: 'pears', disable: false }
// ]

const renderLabel = (label, style) => {
  return (
    <View style={{flexDirection: 'row', alignItems: 'center'}}>
      <Image style={{width: 42, height: 42}} source={{uri: 'https://dummyimage.com/100x100/52c25a/fff&text=S'}} />
      <View style={{marginLeft: 10}}>
        <Text style={style}>{label}</Text>
      </View>
    </View>
  )
}

class App extends Component {
  state = { selectedFruits: [] }

  onSelectionsChange = (selectedFruits) => {
    // selectedFruits is array of { label, value }
    this.setState({ selectedFruits })
  }

  render () {
    return (
      <View>
        <SelectMultiple
          items={fruits}
          renderLabel={renderLabel}
          selectedItems={this.state.selectedFruits}
          onSelectionsChange={this.onSelectionsChange}
          checkboxIcon={<Ionicons name="ios-radio-button-off" size={30} color={grey} />} />
      </View>
    )
  }
}

Properties

PropDefaultTypeDescription
items-arrayAll items available in the list (array of string or { label, value })
selectedItems[]arrayThe currently selected items (array of string or { label, value })
onSelectionsChange-funcCallback called when a user selects or de-selects an item, passed (selections, item)
keyExtractorindexfunckeyExtractor for the FlatList
checkboxSourceimageobjectImage source for the checkbox (unchecked).
selectedCheckboxSourceimageobjectImage source for the checkbox (checked).
disabledCheckboxSourceimageobjectImage source for the checkbox (disabled).
checkboxIconelementobjectIcon component for the checkbox (unchecked).
selectedCheckboxIconelementobjectIcon component for the checkbox (checked).
disabledCheckboxIconelementobjectIcon component for the checkbox (disabled).
flatListProps{}objectAdditional props for the flat list
styledefault stylesobjectStyle for the FlatList container.
rowStyledefault stylesobjectStyle for the row container.
checkboxStyledefault stylesobjectStyle for the checkbox image.
labelStyledefault stylesobjectStyle for the text label.
selectedRowStyledefault stylesobjectStyle for the row container when selected.
selectedCheckboxStyledefault stylesobjectStyle for the checkbox image when selected.
selectedLabelStyledefault stylesobjectStyle for the text label when selected.
disabledRowStyledefault stylesobjectStyle for the row container when disabled.
disabledCheckboxStyledefault stylesobjectStyle for the checkbox image when disabled.
disabledLabelStyledefault stylesobjectStyle for the text label when disabled.
renderLabelnullfuncFunction for render label.
maxSelectnullintMaximum number of selected items

Contribute

Feel free to dive in! Open an issue or submit PRs.

License

ISC © Horizon Lime


Many thanks to TABLEFLIP's react-native-select-multiple