focus-components-v3
Version:
Focus web components to build applications (based on Material Design)
142 lines (104 loc) • 11.7 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _inputRadio = require('../input-radio');
var _inputRadio2 = _interopRequireDefault(_inputRadio);
var _uniqueId = require('lodash/uniqueId');
var _uniqueId2 = _interopRequireDefault(_uniqueId);
var _i18next = require('i18next');
var _i18next2 = _interopRequireDefault(_i18next);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return 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) : _defaults(subClass, superClass); }
var SelectRadio = function (_Component) {
_inherits(SelectRadio, _Component);
function SelectRadio(props) {
_classCallCheck(this, SelectRadio);
var _this = _possibleConstructorReturn(this, _Component.call(this, props));
_this.state = {
uniqueName: (0, _uniqueId2.default)('options_'),
value: _this.props.rawInputValue
};
return _this;
}
SelectRadio.prototype.componentWillReceiveProps = function componentWillReceiveProps(newProps) {
this.setState({ value: newProps.rawInputValue });
};
/**
* Get the value from the select in the DOM.
* @return {string, number} selected value
*/
SelectRadio.prototype.getValue = function getValue() {
return this.state.value;
};
/**
* handle click on radio
* @param {object} event - the click event
*/
SelectRadio.prototype._handleRadioChange = function _handleRadioChange(newValue) {
var onChange = this.props.onChange;
if (onChange) {
onChange(newValue);
return;
}
//Set the state then call the change handler.
this.setState({ value: newValue });
};
/**
* Closure to capture key and radio status.
* @param {string} key the key of radio
* @return {func} status closure
*/
SelectRadio.prototype._getRadioChangeHandler = function _getRadioChangeHandler(key) {
var _this2 = this;
return function () {
_this2._handleRadioChange(key);
};
};
/**
* Render radio for each values
* @return {XML} the different radio values
*/
SelectRadio.prototype.renderSelectRadios = function renderSelectRadios() {
var _this3 = this;
var uniqueName = this.state.uniqueName;
return this.props.values.map(function (val, idx) {
var value = val[_this3.props.valueKey];
var label = val[_this3.props.labelKey];
var disabled = _this3.props.disabled;
var isChecked = value === _this3.state.value;
return _react2.default.createElement(_inputRadio2.default, { key: idx, label: _i18next2.default.t(label), name: uniqueName, onChange: _this3._getRadioChangeHandler(value), rawInputValue: isChecked, disabled: disabled });
});
};
SelectRadio.prototype.render = function render() {
return _react2.default.createElement(
'div',
{ 'data-focus': 'select-radio' },
this.renderSelectRadios()
);
};
return SelectRadio;
}(_react.Component);
SelectRadio.displayName = 'SelectRadio';
SelectRadio.defaultProps = {
values: [],
valueKey: 'code',
labelKey: 'label',
disabled: false
};
SelectRadio.propTypes = {
values: _react.PropTypes.array,
rawInputValue: _react.PropTypes.oneOfType([_react.PropTypes.number, _react.PropTypes.string]),
valueKey: _react.PropTypes.string,
labelKey: _react.PropTypes.string,
onChange: _react.PropTypes.func,
disabled: _react.PropTypes.bool
};
exports.default = SelectRadio;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZyLUZSLmpzIl0sIm5hbWVzIjpbIlNlbGVjdFJhZGlvIiwicHJvcHMiLCJzdGF0ZSIsInVuaXF1ZU5hbWUiLCJ2YWx1ZSIsInJhd0lucHV0VmFsdWUiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwibmV3UHJvcHMiLCJzZXRTdGF0ZSIsImdldFZhbHVlIiwiX2hhbmRsZVJhZGlvQ2hhbmdlIiwibmV3VmFsdWUiLCJvbkNoYW5nZSIsIl9nZXRSYWRpb0NoYW5nZUhhbmRsZXIiLCJrZXkiLCJyZW5kZXJTZWxlY3RSYWRpb3MiLCJ2YWx1ZXMiLCJtYXAiLCJ2YWwiLCJpZHgiLCJ2YWx1ZUtleSIsImxhYmVsIiwibGFiZWxLZXkiLCJkaXNhYmxlZCIsImlzQ2hlY2tlZCIsInQiLCJyZW5kZXIiLCJkaXNwbGF5TmFtZSIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsImFycmF5Iiwib25lT2ZUeXBlIiwibnVtYmVyIiwic3RyaW5nIiwiZnVuYyIsImJvb2wiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7OztJQUVNQSxXO2NBQUFBLFc7O0FBQ0YsYUFERUEsV0FDRixDQUFZQyxLQUFaLEVBQWtCO0FBQUEsOEJBRGhCRCxXQUNnQjs7QUFBQSxxREFDZCxzQkFBTUMsS0FBTixDQURjOztBQUVkLGNBQUtDLEtBQUwsR0FBYTtBQUNUQyx3QkFBWSx3QkFBUyxVQUFULENBREg7QUFFVEMsbUJBQU8sTUFBS0gsS0FBTCxDQUFXSTtBQUZULFNBQWI7QUFGYztBQU1qQjs7QUFQQ0wsZSxXQVNGTSx5QixzQ0FBMEJDLFEsRUFBVTtBQUNoQyxhQUFLQyxRQUFMLENBQWMsRUFBQ0osT0FBT0csU0FBU0YsYUFBakIsRUFBZDtBQUNILEs7O0FBRUQ7Ozs7OztBQWJFTCxlLFdBaUJGUyxRLHVCQUFZO0FBQ1IsZUFBTyxLQUFLUCxLQUFMLENBQVdFLEtBQWxCO0FBQ0gsSzs7QUFFRDs7Ozs7O0FBckJFSixlLFdBeUJGVSxrQiwrQkFBbUJDLFEsRUFBVTtBQUFBLFlBQ2xCQyxRQURrQixHQUNOLEtBQUtYLEtBREMsQ0FDbEJXLFFBRGtCOztBQUV6QixZQUFHQSxRQUFILEVBQWE7QUFDVEEscUJBQVNELFFBQVQ7QUFDQTtBQUNIO0FBQ0Q7QUFDQSxhQUFLSCxRQUFMLENBQWMsRUFBQ0osT0FBT08sUUFBUixFQUFkO0FBQ0gsSzs7QUFFRDs7Ozs7OztBQW5DRVgsZSxXQXdDRmEsc0IsbUNBQXVCQyxHLEVBQUs7QUFBQTs7QUFDeEIsZUFBTyxZQUFNO0FBQ1QsbUJBQUtKLGtCQUFMLENBQXdCSSxHQUF4QjtBQUNILFNBRkQ7QUFHSCxLOztBQUVEOzs7Ozs7QUE5Q0VkLGUsV0FrREZlLGtCLGlDQUFxQjtBQUFBOztBQUFBLFlBQ1ZaLFVBRFUsR0FDSSxLQUFLRCxLQURULENBQ1ZDLFVBRFU7O0FBRWpCLGVBQU8sS0FBS0YsS0FBTCxDQUFXZSxNQUFYLENBQWtCQyxHQUFsQixDQUFzQixVQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBYztBQUN2QyxnQkFBTWYsUUFBUWMsSUFBSSxPQUFLakIsS0FBTCxDQUFXbUIsUUFBZixDQUFkO0FBQ0EsZ0JBQU1DLFFBQVFILElBQUksT0FBS2pCLEtBQUwsQ0FBV3FCLFFBQWYsQ0FBZDtBQUNBLGdCQUFNQyxXQUFXLE9BQUt0QixLQUFMLENBQVdzQixRQUE1QjtBQUNBLGdCQUFNQyxZQUFZcEIsVUFBVSxPQUFLRixLQUFMLENBQVdFLEtBQXZDO0FBQ0EsbUJBQ0ksc0RBQU8sS0FBS2UsR0FBWixFQUFpQixPQUFPLGtCQUFRTSxDQUFSLENBQVVKLEtBQVYsQ0FBeEIsRUFBMEMsTUFBTWxCLFVBQWhELEVBQTRELFVBQVUsT0FBS1Usc0JBQUwsQ0FBNEJULEtBQTVCLENBQXRFLEVBQTBHLGVBQWVvQixTQUF6SCxFQUFvSSxVQUFVRCxRQUE5SSxHQURKO0FBR0gsU0FSTSxDQUFQO0FBU0gsSzs7QUE3REN2QixlLFdBK0RGMEIsTSxxQkFBUztBQUNMLGVBQ0k7QUFBQTtBQUFBLGNBQUssY0FBVyxjQUFoQjtBQUNLLGlCQUFLWCxrQkFBTDtBQURMLFNBREo7QUFLSCxLOztXQXJFQ2YsVzs7O0FBd0VOQSxZQUFZMkIsV0FBWixHQUEwQixhQUExQjtBQUNBM0IsWUFBWTRCLFlBQVosR0FBMkI7QUFDdkJaLFlBQVEsRUFEZTtBQUV2QkksY0FBVSxNQUZhO0FBR3ZCRSxjQUFVLE9BSGE7QUFJdkJDLGNBQVU7QUFKYSxDQUEzQjtBQU1BdkIsWUFBWTZCLFNBQVosR0FBd0I7QUFDcEJiLFlBQVEsaUJBQVVjLEtBREU7QUFFcEJ6QixtQkFBZSxpQkFBVTBCLFNBQVYsQ0FBb0IsQ0FBQyxpQkFBVUMsTUFBWCxFQUFtQixpQkFBVUMsTUFBN0IsQ0FBcEIsQ0FGSztBQUdwQmIsY0FBVSxpQkFBVWEsTUFIQTtBQUlwQlgsY0FBVSxpQkFBVVcsTUFKQTtBQUtwQnJCLGNBQVUsaUJBQVVzQixJQUxBO0FBTXBCWCxjQUFVLGlCQUFVWTtBQU5BLENBQXhCO2tCQVFlbkMsVyIsImZpbGUiOiJmci1GUi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge0NvbXBvbmVudCwgUHJvcFR5cGVzfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBSYWRpbyBmcm9tICcuLi9pbnB1dC1yYWRpbyc7XHJcbmltcG9ydCB1bmlxdWVJZCBmcm9tICdsb2Rhc2gvdW5pcXVlSWQnO1xyXG5pbXBvcnQgaTE4bmV4dCBmcm9tICdpMThuZXh0JztcclxuXHJcbmNsYXNzIFNlbGVjdFJhZGlvIGV4dGVuZHMgQ29tcG9uZW50IHtcclxuICAgIGNvbnN0cnVjdG9yKHByb3BzKXtcclxuICAgICAgICBzdXBlcihwcm9wcyk7XHJcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgICAgICAgdW5pcXVlTmFtZTogdW5pcXVlSWQoJ29wdGlvbnNfJyksXHJcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnByb3BzLnJhd0lucHV0VmFsdWVcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV3UHJvcHMpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHt2YWx1ZTogbmV3UHJvcHMucmF3SW5wdXRWYWx1ZX0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBHZXQgdGhlIHZhbHVlIGZyb20gdGhlIHNlbGVjdCBpbiB0aGUgRE9NLlxyXG4gICAgKiBAcmV0dXJuIHtzdHJpbmcsIG51bWJlcn0gc2VsZWN0ZWQgdmFsdWVcclxuICAgICovXHJcbiAgICBnZXRWYWx1ZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIGhhbmRsZSBjbGljayBvbiByYWRpb1xyXG4gICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgLSB0aGUgY2xpY2sgZXZlbnRcclxuICAgICovXHJcbiAgICBfaGFuZGxlUmFkaW9DaGFuZ2UobmV3VmFsdWUpIHtcclxuICAgICAgICBjb25zdCB7b25DaGFuZ2V9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICBpZihvbkNoYW5nZSkge1xyXG4gICAgICAgICAgICBvbkNoYW5nZShuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9TZXQgdGhlIHN0YXRlIHRoZW4gY2FsbCB0aGUgY2hhbmdlIGhhbmRsZXIuXHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7dmFsdWU6IG5ld1ZhbHVlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIENsb3N1cmUgdG8gY2FwdHVyZSBrZXkgYW5kIHJhZGlvIHN0YXR1cy5cclxuICAgICogQHBhcmFtICB7c3RyaW5nfSBrZXkgdGhlIGtleSBvZiByYWRpb1xyXG4gICAgKiBAcmV0dXJuIHtmdW5jfSBzdGF0dXMgY2xvc3VyZVxyXG4gICAgKi9cclxuICAgIF9nZXRSYWRpb0NoYW5nZUhhbmRsZXIoa2V5KSB7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5faGFuZGxlUmFkaW9DaGFuZ2Uoa2V5KTtcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgKiBSZW5kZXIgcmFkaW8gZm9yIGVhY2ggdmFsdWVzXHJcbiAgICAqIEByZXR1cm4ge1hNTH0gdGhlIGRpZmZlcmVudCByYWRpbyB2YWx1ZXNcclxuICAgICovXHJcbiAgICByZW5kZXJTZWxlY3RSYWRpb3MoKSB7XHJcbiAgICAgICAgY29uc3Qge3VuaXF1ZU5hbWV9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy52YWx1ZXMubWFwKCh2YWwsIGlkeCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbFt0aGlzLnByb3BzLnZhbHVlS2V5XTtcclxuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSB2YWxbdGhpcy5wcm9wcy5sYWJlbEtleV07XHJcbiAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gdGhpcy5wcm9wcy5kaXNhYmxlZDtcclxuICAgICAgICAgICAgY29uc3QgaXNDaGVja2VkID0gdmFsdWUgPT09IHRoaXMuc3RhdGUudmFsdWU7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UmFkaW8ga2V5PXtpZHh9IGxhYmVsPXtpMThuZXh0LnQobGFiZWwpfSBuYW1lPXt1bmlxdWVOYW1lfSBvbkNoYW5nZT17dGhpcy5fZ2V0UmFkaW9DaGFuZ2VIYW5kbGVyKHZhbHVlKX0gcmF3SW5wdXRWYWx1ZT17aXNDaGVja2VkfSBkaXNhYmxlZD17ZGlzYWJsZWR9IC8+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgZGF0YS1mb2N1cz0nc2VsZWN0LXJhZGlvJyA+XHJcbiAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJTZWxlY3RSYWRpb3MoKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG5cclxuU2VsZWN0UmFkaW8uZGlzcGxheU5hbWUgPSAnU2VsZWN0UmFkaW8nO1xyXG5TZWxlY3RSYWRpby5kZWZhdWx0UHJvcHMgPSB7XHJcbiAgICB2YWx1ZXM6IFtdLFxyXG4gICAgdmFsdWVLZXk6ICdjb2RlJyxcclxuICAgIGxhYmVsS2V5OiAnbGFiZWwnLFxyXG4gICAgZGlzYWJsZWQ6IGZhbHNlXHJcbn07XHJcblNlbGVjdFJhZGlvLnByb3BUeXBlcyA9IHtcclxuICAgIHZhbHVlczogUHJvcFR5cGVzLmFycmF5LFxyXG4gICAgcmF3SW5wdXRWYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxyXG4gICAgdmFsdWVLZXk6IFByb3BUeXBlcy5zdHJpbmcsXHJcbiAgICBsYWJlbEtleTogUHJvcFR5cGVzLnN0cmluZyxcclxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcclxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxyXG59O1xyXG5leHBvcnQgZGVmYXVsdCBTZWxlY3RSYWRpbztcclxuIl19
;