React Suggest Field is an NPM package to help you quickly develop an auto-complete suggest field. You can try it on this live storybook demo!
- TypeScript
- React
- SCSS
$ npm install react-suggest-field
$ yarn add react-suggest-field
| Type | Detail |
|---|---|
| ItemType | { id: IdType, label: string } |
| IdType | string/number/null/undefined |
| ErrorMessagesType | { maximumReached: string, alreadyAdded: string, unavailableCharacters: string } |
| Props | Optional | Types | Default Value |
|---|---|---|---|
| originSuggestions | required | ItemType[] | [] |
| onClick | required | (selectedItem: ItemType) => void | - |
| btnLabel | optional | string | 'Search' |
| placeholder | optional | string | - |
| className | optional | string | - |
| Props | Optional | Types | Default Value |
|---|---|---|---|
| items | required | state: ItemType[] | - |
| setItems | required | React.Dispatch<React.SetStateAction<ItemType[]>> | - |
| originSuggestions | required | ItemType[] | - |
| inputRegexStr? | optional | string | /[A-Za-z0-9\s]/ |
| btnLabel | optional | string | 'Add' |
| className | optional | string | - |
| maxItemLength | optional | number | - |
| placeholder | optional | string | - |
| error | required | state: string | - |
| setError | required | React.Dispatch<React.SetStateAction> | - |
| showErrorMessage | optional | boolean | true |
| errorMessages | optional | ErrorMessagesType | maximumReached: 'Unable to add a new item as it reached 3 items.', alreadyAdded: 'This item is already added.', unavailableCharacters: 'Sorry... Only letters, and numbers are available.' |
| Props | Optional | Types | Default Value |
|---|---|---|---|
| children | required | React.Node | - |
| title | optional | string | - |
import React from 'react';
import { SimpleFilter, StoreSelectedItems, ItemType, CompContainer, ErrorMessagesType } from 'react-suggest-field';
import 'react-suggest-field/dist/bundle.css';
const originSuggestions = [
{
id: 1,
label: 'Red',
},
{
id: 2,
label: 'Blue',
},
{
id: 3,
label: 'Yellow',
},
{
id: 4,
label: 'Green',
},
{
id: 5,
label: 'Black',
},
{
id: 6,
label: 'White',
},
];
const initialItems = [
{
id: 7,
label: 'Rainbow',
},
];
const maxItemLength = 3
const myErrorMessages: ErrorMessagesType = {
maximumReached: `Unable to add a new item as it reached ${maxItemLength} items.`,
alreadyAdded: 'This item is already added.',
unavailableCharacters: 'Sorry... Only letters, numbers are available.',
};
function App() {
const [items, setItems] = useState<ItemType[]>(initialItems)
const [error, setError] = useState<string>('')
return (
<>
<CompContainer title={'Store Selected Items'}>
<StoreSelectedItems
items={items}
setItems={setItems}
error={error}
setError={setError}
originSuggestions={originSuggestions}
btnLabel={'Add'}
className={'wonderful-class'}
maxItemLength={maxItemLength}
placeholder="Input something to add"
errorMessages={myErrorMessages}
showErrorMessage={true}
/>
</CompContainer>
<CompContainer title={'Simple Filter'}>
<SimpleFilter
originSuggestions={originSuggestions}
placeholder="Input something to filter"
onClick={(selectedItem) => alert(`${selectedItem.label} is inputted!`)}
btnLabel={'Search!'}
className={'wonderful-class'}
/>
</CompContainer>
</>
);
}
export default App;👤 Yoko Saka
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Give a ⭐️ if you like this project!
This project is MIT licensed.

