react-typeahead
Version:
React-based typeahead and typeahead-tokenizer
66 lines (53 loc) • 1.6 kB
JavaScript
/**
* @jsx React.DOM
*/
var React = require('react');
var classNames = require('classnames');
/**
* A single option within the TypeaheadSelector
*/
var TypeaheadOption = React.createClass({displayName: "TypeaheadOption",
propTypes: {
customClasses: React.PropTypes.object,
customValue: React.PropTypes.string,
onClick: React.PropTypes.func,
children: React.PropTypes.string,
hover: React.PropTypes.bool
},
getDefaultProps: function() {
return {
customClasses: {},
onClick: function(event) {
event.preventDefault();
}
};
},
render: function() {
var classes = {};
classes[this.props.customClasses.hover || "hover"] = !!this.props.hover;
classes[this.props.customClasses.listItem] = !!this.props.customClasses.listItem;
if (this.props.customValue) {
classes[this.props.customClasses.customAdd] = !!this.props.customClasses.customAdd;
}
var classList = classNames(classes);
return (
React.createElement("li", {className: classList, onClick: this._onClick},
React.createElement("a", {href: "javascript: void 0;", className: this._getClasses(), ref: "anchor"},
this.props.children
)
)
);
},
_getClasses: function() {
var classes = {
"typeahead-option": true,
};
classes[this.props.customClasses.listAnchor] = !!this.props.customClasses.listAnchor;
return classNames(classes);
},
_onClick: function(event) {
event.preventDefault();
return this.props.onClick(event);
}
});
module.exports = TypeaheadOption;