antd
Version:
An enterprise-class UI design language and React-based implementation
135 lines (104 loc) • 4.46 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = undefined;
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _index = require('./index');
var _index2 = _interopRequireDefault(_index);
var _PureRenderMixin = require('rc-util/lib/PureRenderMixin');
var _PureRenderMixin2 = _interopRequireDefault(_PureRenderMixin);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var CheckboxGroup = function (_React$Component) {
(0, _inherits3["default"])(CheckboxGroup, _React$Component);
function CheckboxGroup(props) {
(0, _classCallCheck3["default"])(this, CheckboxGroup);
var _this = (0, _possibleConstructorReturn3["default"])(this, _React$Component.call(this, props));
_this.toggleOption = function (option) {
var optionIndex = _this.state.value.indexOf(option.value);
var value = [].concat((0, _toConsumableArray3["default"])(_this.state.value));
if (optionIndex === -1) {
value.push(option.value);
} else {
value.splice(optionIndex, 1);
}
if (!('value' in _this.props)) {
_this.setState({ value: value });
}
var onChange = _this.props.onChange;
if (onChange) {
onChange(value);
}
};
_this.state = {
value: props.value || props.defaultValue || []
};
return _this;
}
CheckboxGroup.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
if ('value' in nextProps) {
this.setState({
value: nextProps.value || []
});
}
};
CheckboxGroup.prototype.shouldComponentUpdate = function shouldComponentUpdate() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _PureRenderMixin2["default"].shouldComponentUpdate.apply(this, args);
};
CheckboxGroup.prototype.getOptions = function getOptions() {
var options = this.props.options;
// https://github.com/Microsoft/TypeScript/issues/7960
return options.map(function (option) {
if (typeof option === 'string') {
return {
label: option,
value: option
};
}
return option;
});
};
CheckboxGroup.prototype.render = function render() {
var _this2 = this;
var prefixCls = this.props.prefixCls;
var options = this.getOptions();
return _react2["default"].createElement(
'div',
{ className: prefixCls },
options.map(function (option) {
return _react2["default"].createElement(
_index2["default"],
{ disabled: 'disabled' in option ? option.disabled : _this2.props.disabled, checked: _this2.state.value.indexOf(option.value) !== -1, onChange: function onChange() {
return _this2.toggleOption(option);
}, className: prefixCls + '-item', key: option.value },
option.label
);
})
);
};
return CheckboxGroup;
}(_react2["default"].Component);
exports["default"] = CheckboxGroup;
CheckboxGroup.defaultProps = {
options: [],
prefixCls: 'ant-checkbox-group'
};
CheckboxGroup.propTypes = {
defaultValue: _react2["default"].PropTypes.array,
value: _react2["default"].PropTypes.array,
options: _react2["default"].PropTypes.array.isRequired,
onChange: _react2["default"].PropTypes.func
};
module.exports = exports['default'];
;