backpack-ui
Version:
Lonely Planet's Components
180 lines (137 loc) • 5.39 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = require("babel-runtime/helpers/defineProperty");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of");
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require("babel-runtime/helpers/classCallCheck");
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require("babel-runtime/helpers/createClass");
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require("babel-runtime/helpers/possibleConstructorReturn");
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require("babel-runtime/helpers/inherits");
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _classnames = require("classnames");
var _classnames2 = _interopRequireDefault(_classnames);
var _classNames = require("./utils/classNames");
var _classNames2 = _interopRequireDefault(_classNames);
var _createClassList = require("./utils/createClassList");
var _createClassList2 = _interopRequireDefault(_createClassList);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* A single option within the TypeaheadSelector
*/
var TypeaheadOption = function (_Component) {
(0, _inherits3.default)(TypeaheadOption, _Component);
function TypeaheadOption(props) {
(0, _classCallCheck3.default)(this, TypeaheadOption);
var _this = (0, _possibleConstructorReturn3.default)(this, (TypeaheadOption.__proto__ || (0, _getPrototypeOf2.default)(TypeaheadOption)).call(this, props));
_this.onClick = _this.onClick.bind(_this);
_this.onTouchStart = _this.onTouchStart.bind(_this);
_this.onMouseOver = _this.onMouseOver.bind(_this);
return _this;
}
(0, _createClass3.default)(TypeaheadOption, [{
key: "onClick",
value: function onClick(event) {
event.preventDefault();
return this.props.onClick(event);
}
}, {
key: "onTouchStart",
value: function onTouchStart(event) {
event.preventDefault();
return this.props.onClick(event);
}
}, {
key: "onMouseOver",
value: function onMouseOver(event) {
event.preventDefault();
return this.props.onMouseOver(event);
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var _props = this.props,
customClasses = _props.customClasses,
disableDefaultClassNames = _props.disableDefaultClassNames,
customValue = _props.customValue,
children = _props.children,
hover = _props.hover,
activeDescendantId = _props.activeDescendantId;
var classes = (0, _defineProperty3.default)({}, _classNames2.default.listItem, !disableDefaultClassNames);
classes[customClasses.hover || _classNames2.default.hover] = !!hover;
classes[customClasses.listItem] = !!customClasses.listItem;
if (customValue) {
classes[customClasses.customAdd || _classNames2.default.customAdd] = !!customClasses.customAdd;
}
var classList = (0, _classnames2.default)(classes);
var optionClassList = (0, _createClassList2.default)(customClasses.listAnchor, "listAnchor", disableDefaultClassNames);
return _react2.default.createElement(
"li",
{ // eslint-disable-line jsx-a11y/no-static-element-interactions
id: hover ? activeDescendantId : null,
className: classList,
role: "option",
"aria-selected": hover,
onClick: this.onClick,
onTouchStart: this.onTouchStart,
onMouseDown: this.onClick // https://github.com/fmoo/react-typeahead/pull/235
, onMouseOver: this.onMouseOver
},
_react2.default.createElement(
"div",
{
className: optionClassList,
ref: function ref(node) {
return _this2.option = node;
},
style: {
cursor: "default"
}
},
children
)
);
}
}]);
return TypeaheadOption;
}(_react.Component);
TypeaheadOption.propTypes = {
customClasses: _propTypes2.default.shape({
customAdd: _propTypes2.default.string,
hover: _propTypes2.default.string,
listAnchor: _propTypes2.default.string,
listItem: _propTypes2.default.string
}),
customValue: _propTypes2.default.string,
onClick: _propTypes2.default.func,
onMouseOver: _propTypes2.default.func,
children: _propTypes2.default.string,
hover: _propTypes2.default.bool,
activeDescendantId: _propTypes2.default.string,
disableDefaultClassNames: _propTypes2.default.bool
};
TypeaheadOption.defaultProps = {
customClasses: null,
customValue: null,
onClick: function onClick(event) {
event.preventDefault();
},
onMouseOver: function onMouseOver(event) {
event.preventDefault();
},
children: null,
hover: false,
activeDescendantId: "",
disableDefaultClassNames: false
};
exports.default = TypeaheadOption;