UNPKG

hiromi

Version:

React components for Bulma. http://bulma.io/

137 lines (107 loc) 4.33 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Option = exports.default = undefined; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 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 _utils = require('../utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } var valueAtPath = function valueAtPath(item, path) { var value = item; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = path[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var key = _step.value; value = value[key]; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return value; }; var placeholder = function placeholder(name, value) { if (!name) return null; return _react2.default.createElement(Option, { labelPath: ['name'], valuePath: ['value'], item: { name: name, value: value } }); }; var Option = function Option(_ref) { var item = _ref.item; var valuePath = _ref.valuePath; var labelPath = _ref.labelPath; var props = _objectWithoutProperties(_ref, ['item', 'valuePath', 'labelPath']); var value = valuePath ? valueAtPath(item, valuePath) : null; var label = valueAtPath(item, labelPath); return _react2.default.createElement( 'option', _extends({ value: value }, props), label ); }; Option.propTypes = { item: _propTypes2.default.object, valuePath: _propTypes2.default.array, labelPath: _propTypes2.default.array.isRequired }; Option.defaultProps = { labelPath: ['name'] }; var Select = function Select(_ref2) { var children = _ref2.children; var options = _ref2.options; var className = _ref2.className; var valuePath = _ref2.valuePath; var labelPath = _ref2.labelPath; var onChange = _ref2.onChange; var defaultValue = _ref2.defaultValue; var value = _ref2.value; var placeholderText = _ref2.placeholderText; var placeholderValue = _ref2.placeholderValue; var props = _objectWithoutProperties(_ref2, ['children', 'options', 'className', 'valuePath', 'labelPath', 'onChange', 'defaultValue', 'value', 'placeholderText', 'placeholderValue']); var _modifierClassList = (0, _utils.modifierClassList)(props); var classList = _modifierClassList.classList; var finalProps = _objectWithoutProperties(_modifierClassList, ['classList']); classList = (0, _classnames2.default)('select', className, classList); return _react2.default.createElement( 'span', _extends({ className: classList }, finalProps), _react2.default.createElement( 'select', { onChange: onChange, defaultValue: defaultValue, value: value }, children, placeholder(placeholderText, placeholderValue), options.map(function (option, idx) { return _react2.default.createElement(Option, { key: 'select-option-' + idx, item: option, valuePath: valuePath, labelPath: labelPath }); }) ) ); }; Select.propTypes = _extends({ options: _propTypes2.default.array.isRequired, valuePath: _propTypes2.default.array, labelPath: _propTypes2.default.array.isRequired, children: _propTypes2.default.node }, _utils.defaultReactProps); Select.defaultProps = _extends({ labelPath: ['name'] }, _utils.defaultReactPropsValues); exports.default = Select; exports.Option = Option;