UNPKG

react-typeahead

Version:

React-based typeahead and typeahead-tokenizer

62 lines (54 loc) 1.56 kB
var React = require('react'); var classNames = require('classnames'); var createReactClass = require('create-react-class'); var PropTypes = require('prop-types'); /** * Encapsulates the rendering of an option that has been "selected" in a * TypeaheadTokenizer */ var Token = createReactClass({ displayName: 'Token', propTypes: { className: PropTypes.string, name: PropTypes.string, children: PropTypes.string, object: PropTypes.oneOfType([PropTypes.string, PropTypes.object]), onRemove: PropTypes.func, value: PropTypes.string }, render: function () { var className = classNames(["typeahead-token", this.props.className]); return React.createElement( 'div', { className: className }, this._renderHiddenInput(), this.props.children, this._renderCloseButton() ); }, _renderHiddenInput: function () { // If no name was set, don't create a hidden input if (!this.props.name) { return null; } return React.createElement('input', { type: 'hidden', name: this.props.name + '[]', value: this.props.value || this.props.object }); }, _renderCloseButton: function () { if (!this.props.onRemove) { return ""; } return React.createElement( 'a', { className: this.props.className || "typeahead-token-close", href: '#', onClick: function (event) { this.props.onRemove(this.props.object); event.preventDefault(); }.bind(this) }, '\xD7' ); } }); module.exports = Token;