backpack-ui
Version:
Lonely Planet's Components
131 lines (93 loc) • 2.83 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _radium = require("radium");
var _radium2 = _interopRequireDefault(_radium);
var _styles = require("./styles");
var _styles2 = _interopRequireDefault(_styles);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function Select(_ref) {
var id = _ref.id;
var options = _ref.options;
var label = _ref.label;
var name = _ref.name;
var defaultValue = _ref.defaultValue;
var required = _ref.required;
var size = _ref.size;
var theme = _ref.theme;
var noBorder = _ref.noBorder;
var style = _ref.style;
var onChange = _ref.onChange;
var componentStyles = [_styles2.default.base, style];
componentStyles.push(_styles2.default.element.select.base);
if (size) {
componentStyles.push(_styles2.default.size[size]);
componentStyles.push(_styles2.default.element.select.size[size]);
}
if (theme) {
componentStyles.push(_styles2.default.theme[theme]);
componentStyles.push(_styles2.default.element.select.theme[theme]);
}
if (noBorder) {
componentStyles.push(_styles2.default.noBorder);
}
return _react2.default.createElement(
"select",
{
style: componentStyles,
id: id,
name: name || id,
defaultValue: defaultValue,
required: required,
"aria-label": label,
title: label,
onChange: onChange
},
options.map(function (value, index) {
return _react2.default.createElement(
"option",
{
value: value,
key: index
},
value
);
})
);
}
Select.propTypes = {
id: _react2.default.PropTypes.string.isRequired,
options: _react2.default.PropTypes.arrayOf(_react2.default.PropTypes.string).isRequired,
label: _react2.default.PropTypes.string.isRequired,
name: _react2.default.PropTypes.string,
defaultValue: _react2.default.PropTypes.string,
required: _react2.default.PropTypes.bool,
size: _react2.default.PropTypes.oneOf(["tiny", "small", "medium", "large", "huge"]),
theme: _react2.default.PropTypes.oneOf(["base", "light", "dark", "inputGroup"]),
/**
* Remove border
*/
noBorder: _react2.default.PropTypes.bool,
style: _react2.default.PropTypes.objectOf(_react2.default.PropTypes.string, _react2.default.PropTypes.number),
/**
* onChange function for the select element
*/
onChange: _react2.default.PropTypes.func
};
Select.defaultProps = {
id: "",
options: [],
label: "",
name: "",
defaultValue: "",
required: false,
size: "medium",
theme: "base",
noBorder: false,
style: {}
};
Select.styles = _styles2.default;
exports.default = (0, _radium2.default)(Select);