UNPKG

backpack-ui

Version:

Lonely Planet's Components

131 lines (93 loc) 2.83 kB
"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);