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.