react-native-autocomplete-tags
v2.0.0
Published
Autocomplete text input with tags
Downloads
1,170
Maintainers
Readme
react-native-autocomplete-tags
A quick and easy solutions for projects that need an input with both autocomplete and tags
Features
- custom tag and suggestions components
- separate extractors for tags and for suggestions
- easy to integrate and use
- configurable
What's new in version 2?
- no more mandatory controlled TextInput (although you still can if you want)
- TypeScript support!
- no more tag/suggestion styles - if you need custom styles, use
renderTag
orrenderSuggestion
instead
Installation
yarn add react-native-autocomplete-tags
or
npm install react-native-autocomplete-tags --save
Dependency
Requires RN >= 0.63 If using RN < 0.63, use v1 instead.
Useage
Also see the demo projects
const suggestions = ['apple', 'orange', 'banana', 'kiwi'];
const SimpleExample = () => {
const [tags, setTags] = useState<string[]>([]);
const labelExtractor = (tag: string) => tag;
return (
<AutocompleteTags
tags={tags}
suggestions={suggestions}
onChangeTags={setTags}
labelExtractor={labelExtractor}
/>
);
};
export default SimpleExample;
Props
| Prop | type | Description | required | default |
|---------------------------|---------------------------------------------------------------------------|---------------------------------------------------------------------------------------|----------|----------------------------------------------------------|
| tags
| Tag[]
| The current tags to be rendered | yes | |
| labelExtractor
| (tag: Tag) => string
| Determines what property of tags
is displayed | yes | |
| onChangeTags
| (newTags: Tag[]) => void
| called when tags change (i.e. by deleting), should be used to set tags
| yes | |
| suggestions
| Suggestion[]
| All possible suggestions | no | []
|
| suggestionExtractor
| (suggestion: Suggestion) => string
| determines which property of suggestions
is displayed | no | uses labelExtractor
|
| onSuggestionPress
| (suggestion: Suggestion) => void
| called when suggestion is pressed | no | calls onChangeTags
with [...tags, pressedSuggestion]
|
| onTagPress
| (tag: Tag) => void
| called when tag is pressed | no | calls onChangeTags
with the pressed tag removed |
| renderSuggestion
| (suggestion: Suggestion, onPress: (tag: Suggestion) => void) => Element
| renders a custom suggestion component | no | |
| renderTag
| (tag: Tag, onPress: (tag: Tag) => void) => Element
| renders a custom tag component | no | |
| filterSuggestions
| (text: string) => Suggestion[]
| filters suggestions based on users text input | no | |
| inputProps
| TextInput
props | any additional props for TextInput
| no | |
| flatListProps
| FlatList
props | any additional props for FlatList
| no | |
| allowCustomTags
| boolean
| whether or not to allow the user to create a Tag that doesn't come from suggestions
| no | true
|
| parseChars
| string[]
| an array of characters that should trigger a new tag and clear the TextInput | no | [',', ' ', ';', '\n']
|
| onAddNewTag
| (userInput: string) => void
| called when the user types a character in parseChars
| no | calls onChangeTags
with [...tags, userInputText]
|
Style Props
No style props are required.
| Prop | Description |
|-------------------------|-------------------------------------------------------------------------------------|
| containerStyle
| style for the outer-most View that houses both the tagContainer and suggestion list |
| tagContainerStyle
| Container for the tags
and the TextInput
|
| inputStyle
| Applied to the TextInput
directly |
| flatListStyle
| Applied to the FlatList
which renders suggestions |
Contributing
PRs and issues welcome!