1.0.1 • Published 4 months ago

react-native-drop-select v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
4 months ago

React Native Drop Select

A highly customizable dropdown select component for React Native.

Features

  • 🎨 Themeable design with light and dark themes
  • 📱 Responsive positioning (appears above or below based on available space)
  • ⌨️ Keyboard aware positioning
  • 🎯 Customizable styles through theme or direct props
  • 💫 Smooth animations
  • 🎭 Multiple variants with border support
  • 🔄 Controlled selection options

Installation

npm install react-native-drop-select
# or
yarn add react-native-drop-select

Dependencies

This package requires the following dependencies:

yarn add react-native-haptic-feedback react-native-safe-area-context react-native-text-size-latest

Usage

Basic Usage

import React from "react";
import { View } from "react-native";
import DropSelect from "react-native-drop-select";

const App = () => {
  const items = [
    { label: "Option 1", value: 1 },
    { label: "Option 2", value: 2 },
    { label: "Option 3", value: 3 },
  ];

  return (
    <View style={{ padding: 20 }}>
      <DropSelect
        items={items}
        onSelect={(item) => console.log(item)}
        label="Select an option"
      />
    </View>
  );
};

export default App;

With Theme Customization

import React from "react";
import { View } from "react-native";
import DropSelect, { lightTheme, darkTheme } from "react-native-drop-select";

const App = () => {
  const items = [
    { label: "Option 1", value: 1 },
    { label: "Option 2", value: 2 },
    { label: "Option 3", value: 3 },
  ];

  // Using the light theme
  return (
    <View style={{ padding: 20 }}>
      <DropSelect
        items={items}
        onSelect={(item) => console.log(item)}
        label="Light Theme"
        theme={lightTheme}
      />

      {/* With custom theme */}
      <DropSelect
        items={items}
        onSelect={(item) => console.log(item)}
        label="Custom Theme"
        theme={{
          ...darkTheme,
          colors: {
            ...darkTheme.colors,
            primary: "#7047EB",
            buttonText: "#FFFFFF",
          },
          borders: {
            enabled: true,
          },
        }}
      />
    </View>
  );
};

export default App;

With Placeholder (No Auto-Selection)

import React from "react";
import { View } from "react-native";
import DropSelect from "react-native-drop-select";

const App = () => {
  const items = [
    { label: "Option 1", value: 1 },
    { label: "Option 2", value: 2 },
    { label: "Option 3", value: 3 },
  ];

  return (
    <View style={{ padding: 20 }}>
      <DropSelect
        items={items}
        onSelect={(item) => console.log(item)}
        label="Select an option"
        autoSelectFirst={false}
        placeholder="Choose an option..."
      />
    </View>
  );
};

export default App;

Props

PropTypeDefaultDescription
itemsArray<{label: string, value: any}>-Array of items to display in the dropdown
defaultValue{label: string, value: any}-Default selected item
onSelect(item) => void-Function called when an item is selected
labelstring-Label text displayed above the dropdown
containerStyleViewStyle-Style for the container
parentRefReact.RefObject<View>-Reference to parent component
fullWidthbooleanfalseWhether to take full width of parent
fixedSizebooleanfalseWhether to calculate width based on content
themeThemeTypedarkThemeTheme object for styling
customValuestring-Custom text to display
includeSelectedbooleanfalseWhether to include selected item in dropdown
disabledbooleanfalseWhether the dropdown is disabled
heightnumber-Custom height for the dropdown button
textStyleTextStyle-Style for the button text
labelStyleTextStyle-Style for the label text
dropdownTextStyleTextStyle-Style for the dropdown text
autoSelectFirstbooleantrueWhether to auto-select the first item
placeholderstring'Select an option'Placeholder text when no item is selected

License

MIT

1.0.1

4 months ago

1.0.0

4 months ago