react-typeahead
Version:
React-based typeahead and typeahead-tokenizer
64 lines (53 loc) • 1.59 kB
JavaScript
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;