1.0.1 • Published 10 months ago

@sarthak100/react-multi-select-search v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

Multi-Select Search Component

Introduction

The Multi-Select Search Component is a versatile React component designed to handle search functionality with multi-select capabilities. This component allows users to search through a list of items, select multiple items, and manage their selections with a highly customizable interface. It supports various states such as loading, error handling, and empty states, making it suitable for a wide range of applications.

Installation

To install the Multi-Select Search Component, you can use npm or yarn:

npm install @sarthak100/react-multi-select-search

or

yarn add @sarthak100/react-multi-select-search

Usage

Here is a basic example of how to use the Multi-Select Search Component in your React application:

import React, { useState } from 'react';
import Search, { SearchSize } from '@sarthak100/react-multi-select-search';

const App: React.FC = () => {
  const [data, setData] = useState<string[]>([]);
  const [loading, setLoading] = useState<boolean>(false);
  const [error, setError] = useState<string>('');
  const [chips, setChips] = useState<string[]>([]);

  const fetchData = async (query: string) => {
    setLoading(true);
    try {
      // Fetch data based on query
      // Example: const response = await fetch(`/api/search?q=${query}`);
      // const result = await response.json();
      // setData(result);
    } catch (err) {
      setError('Failed to fetch data');
    } finally {
      setLoading(false);
    }
  };

  return (
    <Search
      data={data}
      loading={loading}
      error={error}
      onQueryChange={fetchData}
      onChipsChange={setChips}
      placeholder="Search for items..."
      size={SearchSize.Medium}
      preSelectedChips={chips}
      isPreSelectedChipsRemovable={true}
    />
  );
};

export default App;

Props Description

PropTypeDefault ValueDescription
placeholderstring"Search..."Placeholder text for the search input field.
ListItemComponentReact.ComponentType<{ label: string; isFocused: boolean; onClick: () => void; }>SearchResultItemComponent used to render each search result item.
ChipComponentReact.ComponentType<{ label: string; size?: SearchSize; onRemove?: () => void; showRemoveIcon?: boolean; removeIcon?: React.ReactNode; }>ChipComponent used to render each chip.
showErrorbooleantrueWhether to show the error component when there is an error.
showLoadingbooleantrueWhether to show the loading component while fetching data.
LoadingComponentReact.ComponentTypeLoadingDefaultComponentComponent used to render the loading state.
ErrorComponentReact.ComponentType<{ message: string }>ErrorDefaultComponentComponent used to render the error state.
EmptyComponentReact.ComponentType<{ query: string }>EmptyDefaultComponentComponent used to render the empty state.
datastring[][]Array of search results data.
loadingbooleanfalseIndicates whether the search is in a loading state.
errorstring""Error message to display when an error occurs.
onQueryChange(query: string) => void-Callback function that is called when the search query changes.
onChipsChange(chips: string[]) => void-Callback function that is called when the selected chips change.
sizeSearchSizeSearchSize.MediumSize variant for the component (e.g., Small, Medium, Large).
customStyles{ searchContainer?: React.CSSProperties; input?: React.CSSProperties; resultsContainer?: React.CSSProperties; }-Custom styles for different parts of the component.
inputRefReact.RefObject<HTMLInputElement>-Ref object for the search input element.
preSelectedChipsstring[][]Array of pre-selected chips.
isPreSelectedChipsRemovablebooleanfalseWhether pre-selected chips can be removed.

License

This package is licensed under the MIT License. See the LICENSE file for more information.