3.3.0 • Published 5 months ago

react-native-dynamically-selected-picker v3.3.0

Weekly downloads
22
License
MIT
Repository
github
Last release
5 months ago

react-native-dynamically-selected-picker

React Native Picker for Android and IOS with dynamically updating selected items on scroll. Idea was taken at react-native-swipe-picker

Android Ios

Installation

yarn add react-native-dynamically-selected-picker react-native-linear-gradient

or

npm i react-native-dynamically-selected-picker react-native-linear-gradient --save

Then, if you didn't install react-native-linear-gradient before: Enter command cd /ios and pod install. Now you can run project

Basic usage

import React, { useState } from 'react';
import { Dimensions, StyleSheet, Text, View } from 'react-native';

import DynamicallySelectedPicker from 'react-native-dynamically-selected-picker';

export default function App() {
  const [selectedItemIndex, setSelectedItemIndex] = useState<number>(0);
  const initialSelectedIndex = 1;
  const windowWidth = Dimensions.get('window').width;
  const height = 300;

  return (
    <View style={styles.container}>
      <DynamicallySelectedPicker
        items={[
          {
            value: 1,
            label: 'Item 1',
          },
          {
            value: 2,
            label: 'Item 2',
          },
          {
            value: 3,
            label: 'Item 3',
          },
          {
            value: 4,
            label: 'Item 4',
            itemColor: 'blue',
          },
          {
            value: 5,
            label: 'Item 5',
          },
        ]}
        onScroll={({ index }) => setSelectedItemIndex(index)}
        onMomentumScrollBegin={({ index }) => setSelectedItemIndex(index)}
        onMomentumScrollEnd={({ index }) => setSelectedItemIndex(index)}
        onScrollBeginDrag={({ index }) => setSelectedItemIndex(index)}
        onScrollEndDrag={({ index }) => setSelectedItemIndex(index)}
        initialSelectedIndex={initialSelectedIndex}
        height={height}
        width={windowWidth}
      />
      <View style={styles.selectedItemWrapper}>
        <Text>Selected item index {selectedItemIndex}</Text>
      </View>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
  selectedItemWrapper: {
    marginTop: 50
  },
});

Properties (All are optional)

PropDefaultTypeDescription
items{value: 0, label: 'No items', itemColor: 'red'}Array<object>-
onScroll-funcReturns selected selected index
onMomentumScrollBegin-funcReturns selected selected index
onMomentumScrollEnd-funcReturns selected selected index
onScrollBeginDrag-funcReturns selected selected index
onScrollEndDrag-funcReturns selected selected index
initialSelectedIndex0numberSet index number of initial item.
transparentItemRows3numberSet number of items at top and bottom of selected index.
width300number-
height300number-
horizontalfalsebooleanIf true then a Horizontal picker.
allItemsColor#000string-
selectedItemBorderColor'#cecece'string-
fontSize-number-
fontFamily'Arial'string-
renderItem-funcCustom render function for each item. Passed in PickerListItemProps See source for a working example.
renderGradientOverlaytruebooleanRender gradient over outer items.
topGradientColors...Array<string>See default value in source.
bottomGradientColors...Array<string>See default value in source.