Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/olahol/react-tagsinput
Highly customizable React component for inputing tags.
https://github.com/olahol/react-tagsinput
input javascript react tags tagsinput
Last synced: 20 days ago
JSON representation
Highly customizable React component for inputing tags.
- Host: GitHub
- URL: https://github.com/olahol/react-tagsinput
- Owner: olahol
- License: mit
- Created: 2014-06-24T07:54:19.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-06-10T19:25:45.000Z (over 1 year ago)
- Last Synced: 2024-10-01T23:04:01.160Z (about 1 month ago)
- Topics: input, javascript, react, tags, tagsinput
- Language: JavaScript
- Homepage:
- Size: 1.65 MB
- Stars: 1,346
- Watchers: 23
- Forks: 233
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-react-components-all - react-tagsinput - A simple react component for inputing tags. (Uncategorized / Uncategorized)
- awesome-react-components - react-tagsinput - A simple react component for inputing tags. (UI Components / Form Components)
- awesome-react - react-tagsinput - A simple react component for inputing tags. ![](https://img.shields.io/github/stars/olahol/react-tagsinput.svg?style=social&label=Star) (UI Components / Form Components)
- awesome-list - react-tagsinput - A simple react component for inputing tags. (Demos / Form Components)
- awesome-react-components - react-tagsinput - A simple react component for inputing tags. (UI Components / Form Components)
- awesome-react-components - react-tagsinput - A simple react component for inputing tags. (UI Components / Form Components)
- awesome-react-components - react-tagsinput - A simple react component for inputing tags. (UI Components / Form Components)
- fucking-awesome-react-components - react-tagsinput - A simple react component for inputing tags. (UI Components / Form Components)
README
# react-tagsinput
[![NPM version][npm-image]][npm-url]
[![Size][size-image]][size-url]
[![Code coverage][codecov-image]][codecov-url]
[![Download count][downloads-image]][downloads-url]
[![js-standard-style][standard-image]][standard-url]Highly customizable [React](http://facebook.github.io/react/index.html) component for inputing tags.
![Demo](./example/demo.gif)
## Example
```javascript
import React from 'react'
import TagsInput from 'react-tagsinput'import 'react-tagsinput/react-tagsinput.css'
class Example extends React.Component {
constructor() {
super()
this.state = {tags: []}
}handleChange = (tags) => {
this.setState({tags})
}render() {
return
}
}
```## Table of Contents
* [Example](#example)
* [Styling](#styling)
* [Component Interface](#component-interface)
* [Props](#props)
* [value (required)](#value-required)
* [onChange (required)](#onchange-required)
* [onChangeInput](#onchangeinput)
* [addKeys](#addkeys)
* [currentValue](#currentvalue)
* [inputValue](#inputvalue)
* [onlyUnique](#onlyunique)
* [validate](#validate)
* [validationRegex](#validationregex)
* [onValidationReject](#onvalidationreject)
* [disabled](#disabled)
* [maxTags](#maxtags)
* [addOnBlur](#addonblur)
* [addOnPaste](#addonpaste)
* [pasteSplit](#pastesplit)
* [removeKeys](#removekeys)
* [tagProps](#tagprops)
* [inputProps](#inputprops)
* [renderTag](#rendertag)
* [renderInput](#renderinput)
* [renderLayout](#renderlayout)
* [preventSubmit](#preventSubmit)
* [Methods](#methods)
* [focus()](#focus)
* [blur()](#blur)
* [accept()](#accept)
* [addTag()](#addTag)
* [clearInput()](#clearInput)
* [Contributors](#contributors)
* [Changelog](#changelog)
* [License](#license)## Styling
Look at [react-tagsinput.css](./react-tagsinput.css) for a basic style.
## Component Interface
### Props
##### value (required)
An array of tags.
##### onChange (required)
Callback when tags change, gets three arguments `tags` which is the new
tag array, `changed` which is an array of the tags that have changed and
`changedIndexes` which is an array of the indexes that have changed.##### onChangeInput
Callback from the input box, gets one argument `value` which is the content of the input box.
(onChangeInput is only called if the input box is [controlled](https://facebook.github.io/react/docs/forms.html#controlled-components), for this to happen both inputValue and onChangeInput need to be set)##### addKeys
An array of [keys](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key) or [key codes](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/which) that add a tag, default is `[9, 13]` (Tab and Enter).
##### currentValue
A string to set a value on the input.
##### inputValue
Similar to `currentValue` but needed for controlling the input box. (inputValue is only useful if you use it together with onChangeInput)
##### onlyUnique
Allow only unique tags, default is `false`.
##### validate
Allow only tags that pass this validation function. Gets one argument `tag` which is the tag to validate. Default is `() => true`.
##### validationRegex
Allow only tags that pass this regex to be added. Default is `/.*/`.
##### onValidationReject
Callback when tags are rejected through validationRegex, passing array of tags as the argument.
##### disabled
Passes the disabled prop to `renderInput` and `renderTag`, by default this
will "disable" the component.##### maxTags
Allow limit number of tags, default is `-1` for infinite.
##### addOnBlur
Add a tag if input blurs. Default false.
##### addOnPaste
Add a tags if HTML5 paste on input. Default false.
##### pasteSplit
Function that splits pasted text. Default is:
```javascript
function defaultPasteSplit (data) {
return data.split(' ').map(d => d.trim())
}
```##### removeKeys
An array of key codes that remove a tag, default is `[8]` (Backspace).
##### className
Specify the wrapper className. Default is `react-tagsinput`.
##### focusedClassName
Specify the class to add to the wrapper when the component is focused. Default is `react-tagsinput--focused`.
##### tagProps
Props passed down to every tag component. Default is:
```javascript
{
className: 'react-tagsinput-tag',
classNameRemove: 'react-tagsinput-remove'
}
```##### inputProps
Props passed down to input. Default is:
```javascript
{
className: 'react-tagsinput-input',
placeholder: 'Add a tag'
}
```##### tagDisplayProp
The tags' property to be used when displaying/adding one. Default is: `null` which causes the tags to be an array of strings.
##### renderTag
Render function for every tag. Default is:
```javascript
function defaultRenderTag (props) {
let {tag, key, disabled, onRemove, classNameRemove, getTagDisplayValue, ...other} = props
return (
{getTagDisplayValue(tag)}
{!disabled &&
onRemove(key)} />
}
)
}
```##### renderInput
Render function for input. Default is:
```javascript
function defaultRenderInput (props) {
let {onChange, value, addTag, ...other} = props
return (
)
}
```*Note: renderInput also receives `addTag` as a prop.*
##### renderLayout
Renders the layout of the component. Takes `tagElements` and `inputElement` as args. Default is:
```javascript
function defaultRenderLayout (tagElements, inputElement) {
return (
{tagElements}
{inputElement}
)
}
```##### preventSubmit
A `boolean` to prevent the default submit event when adding an 'empty' tag.
Default: `true`Set to `false` if you want the default submit to fire when pressing enter again after adding a tag.
### Methods
##### focus()
Focus on input element.
##### blur()
Blur input element.
##### accept()
Try to add whatever value is currently in input element.
##### addTag(tag)
Convenience method that adds a tag.
##### clearInput()
Clears the input value.
## Contributors
## [Changelog](./CHANGELOG.md)
## [License](./LICENSE)
---
[MIT Licensed](https://tldrlegal.com/license/mit-license)
[npm-image]: https://img.shields.io/npm/v/react-tagsinput.svg?style=flat-square
[npm-url]: https://npmjs.org/package/react-tagsinput
[downloads-image]: http://img.shields.io/npm/dm/react-tagsinput.svg?style=flat-square
[downloads-url]: https://npmjs.org/package/react-tagsinput
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[standard-url]: https://github.com/feross/standard
[size-image]: https://img.badgesize.io/olahol/react-tagsinput/master/react-tagsinput.js.svg?style=flat-square
[size-url]: https://github.com/olahol/react-tagsinput/blob/master/react-tagsinput.js
[codecov-image]: https://img.shields.io/codecov/c/github/olahol/react-tagsinput?style=flat-square
[codecov-url]: https://app.codecov.io/github/olahol/react-tagsinput