yqcloud-ui
Version:
An enterprise-class UI design language and React-based implementation
209 lines (162 loc) • 6.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
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 _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _PureRenderMixin = require('../util/PureRenderMixin');
var _PureRenderMixin2 = _interopRequireDefault(_PureRenderMixin);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var Checkbox = function (_React$Component) {
(0, _inherits3['default'])(Checkbox, _React$Component);
function Checkbox(props) {
(0, _classCallCheck3['default'])(this, Checkbox);
var _this = (0, _possibleConstructorReturn3['default'])(this, _React$Component.call(this, props));
_initialiseProps.call(_this);
var checked = 'checked' in props ? props.checked : props.defaultChecked;
_this.state = {
checked: checked
};
return _this;
}
Checkbox.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
if ('checked' in nextProps) {
this.setState({
checked: nextProps.checked
});
}
};
Checkbox.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);
};
Checkbox.prototype.focus = function focus() {
this.input.focus();
};
Checkbox.prototype.blur = function blur() {
this.input.blur();
};
Checkbox.prototype.render = function render() {
var _classNames;
var _props = this.props,
prefixCls = _props.prefixCls,
className = _props.className,
style = _props.style,
name = _props.name,
id = _props.id,
type = _props.type,
disabled = _props.disabled,
readOnly = _props.readOnly,
tabIndex = _props.tabIndex,
onClick = _props.onClick,
onFocus = _props.onFocus,
onBlur = _props.onBlur,
autoFocus = _props.autoFocus,
value = _props.value,
others = (0, _objectWithoutProperties3['default'])(_props, ['prefixCls', 'className', 'style', 'name', 'id', 'type', 'disabled', 'readOnly', 'tabIndex', 'onClick', 'onFocus', 'onBlur', 'autoFocus', 'value']);
var globalProps = Object.keys(others).reduce(function (prev, key) {
if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') {
prev[key] = others[key];
}
return prev;
}, {});
var checked = this.state.checked;
var classString = (0, _classnames2['default'])(prefixCls, className, (_classNames = {}, (0, _defineProperty3['default'])(_classNames, prefixCls + '-checked', checked), (0, _defineProperty3['default'])(_classNames, prefixCls + '-disabled', disabled), _classNames));
return _react2['default'].createElement('span', { className: classString, style: style }, _react2['default'].createElement('input', (0, _extends3['default'])({
name: name,
id: id,
type: type,
readOnly: readOnly,
disabled: disabled,
tabIndex: tabIndex,
className: prefixCls + '-input',
checked: !!checked,
onClick: onClick,
onFocus: onFocus,
onBlur: onBlur,
onChange: this.handleChange,
autoFocus: autoFocus,
ref: this.saveInput,
value: value
}, globalProps)), _react2['default'].createElement('span', { className: prefixCls + '-inner' }));
};
return Checkbox;
}(_react2['default'].Component);
Checkbox.propTypes = {
prefixCls: _propTypes2['default'].string,
className: _propTypes2['default'].string,
style: _propTypes2['default'].object,
name: _propTypes2['default'].string,
id: _propTypes2['default'].string,
type: _propTypes2['default'].string,
defaultChecked: _propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].bool]),
checked: _propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].bool]),
disabled: _propTypes2['default'].bool,
onFocus: _propTypes2['default'].func,
onBlur: _propTypes2['default'].func,
onChange: _propTypes2['default'].func,
onClick: _propTypes2['default'].func,
tabIndex: _propTypes2['default'].string,
readOnly: _propTypes2['default'].bool,
autoFocus: _propTypes2['default'].bool,
value: _propTypes2['default'].any
};
Checkbox.defaultProps = {
prefixCls: 'rc-checkbox',
className: '',
style: {},
type: 'checkbox',
defaultChecked: false,
onFocus: function onFocus() {},
onBlur: function onBlur() {},
onChange: function onChange() {}
};
var _initialiseProps = function _initialiseProps() {
var _this2 = this;
this.handleChange = function (e) {
var props = _this2.props;
if (props.disabled) {
return;
}
if (!('checked' in props)) {
_this2.setState({
checked: e.target.checked
});
}
props.onChange({
target: (0, _extends3['default'])({}, props, {
checked: e.target.checked
}),
stopPropagation: function stopPropagation() {
e.stopPropagation();
},
preventDefault: function preventDefault() {
e.preventDefault();
},
nativeEvent: e.nativeEvent
});
};
this.saveInput = function (node) {
_this2.input = node;
};
};
exports['default'] = Checkbox;
module.exports = exports['default'];