tiramisu-react-form
Version:
form component for reactjs
172 lines (125 loc) • 5.28 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Select = undefined;
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _reactClickOutside = require('react-click-outside');
var _reactClickOutside2 = _interopRequireDefault(_reactClickOutside);
var _Label = require('../Label');
var _Label2 = _interopRequireDefault(_Label);
var _Error = require('../Error');
var _Error2 = _interopRequireDefault(_Error);
var _Dropdown = require('./Dropdown');
var _Dropdown2 = _interopRequireDefault(_Dropdown);
var _setWidth = require('../../utils/style/setWidth');
var _setWidth2 = _interopRequireDefault(_setWidth);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var Select = function (_Component) {
_inherits(Select, _Component);
function Select() {
_classCallCheck(this, Select);
var _this = _possibleConstructorReturn(this, (Select.__proto__ || Object.getPrototypeOf(Select)).call(this));
_this.onClick = _this.onClick.bind(_this);
_this.onSelect = _this.onSelect.bind(_this);
_this.state = { show: false, display: '' };
return _this;
}
_createClass(Select, [{
key: 'componentDidMount',
value: function componentDidMount() {
var _props = this.props,
name = _props.name,
options = _props.options;
this.setState({ display: options[0].display });
var e = {
target: {
value: options[0].value,
name: name
}
};
this.props.onChange(e, this.props);
}
}, {
key: 'onClick',
value: function onClick(e) {
var show = this.state.show;
this.setState({ show: !show });
}
}, {
key: 'onSelect',
value: function onSelect(e) {
var name = this.props.name;
e.target.value = e.target.id;
e.target.name = name;
this.setState({
display: e.target.textContent,
show: false
});
this.props.onChange(e, this.props);
}
}, {
key: 'handleClickOutside',
value: function handleClickOutside() {
this.setState({ show: false });
}
}, {
key: 'render',
value: function render() {
var _state = this.state,
show = _state.show,
display = _state.display;
var _props2 = this.props,
name = _props2.name,
options = _props2.options,
width = _props2.width,
classNames = _props2.classNames,
errors = _props2.errors,
initialValue = _props2.initialValue,
label = _props2.label;
var error = '';
if (errors) {
error = errors[name];
}
return _react2.default.createElement(
'div',
{ className: classNames.select, style: { width: width } },
label ? _react2.default.createElement(_Label2.default, this.props) : _react2.default.createElement('div', null),
_react2.default.createElement(
'div',
{
className: classNames.selectInput,
onClick: this.onClick },
display,
show ? _react2.default.createElement(_Dropdown2.default, {
classNames: classNames,
onSelect: this.onSelect,
options: options }) : _react2.default.createElement('div', null)
),
error ? _react2.default.createElement(_Error2.default, { text: error, classNames: classNames }) : _react2.default.createElement('div', null)
);
}
}]);
return Select;
}(_react.Component);
Select.propTypes = {
name: _propTypes2.default.string.isRequired,
displayName: _propTypes2.default.string,
options: _propTypes2.default.array.isRequired,
width: _propTypes2.default.string.isRequired,
isRequired: _propTypes2.default.bool
};
Select.defaultProps = {
name: 'select',
options: [],
width: '100%'
};
exports.Select = Select = (0, _reactClickOutside2.default)(Select);
exports.Select = Select;