rsuite
Version:
A suite of react components
87 lines (64 loc) • 3.05 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var React = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _recompose = require("recompose");
var _prefix = _interopRequireDefault(require("./prefix"));
var _extendReactStatics = _interopRequireDefault(require("./extendReactStatics"));
var _constants = require("../constants");
var _refType = _interopRequireDefault(require("./refType"));
function withStyleProps(options) {
if (options === void 0) {
options = {};
}
return function (BaseComponent) {
var _options = options,
hasSize = _options.hasSize,
hasStatus = _options.hasStatus,
hasColor = _options.hasColor,
defaultColor = _options.defaultColor;
var WithStyleComponent = React.forwardRef(function (props, ref) {
var _classNames;
var classPrefix = props.classPrefix,
size = props.size,
color = props.color,
status = props.status,
className = props.className,
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["classPrefix", "size", "color", "status", "className"]);
var addPrefix = (0, _prefix.default)(classPrefix);
var classes = (0, _classnames.default)(className, (_classNames = {}, _classNames[addPrefix(size)] = hasSize && size, _classNames[addPrefix(color)] = hasColor && color, _classNames[addPrefix(defaultColor)] = !color, _classNames[addPrefix(status)] = hasStatus && status, _classNames));
return React.createElement(BaseComponent, (0, _extends2.default)({}, rest, {
ref: ref,
classPrefix: classPrefix,
className: classes
}));
});
var propTypes = {
innerRef: _refType.default
};
if (hasSize) {
propTypes.size = _propTypes.default.oneOf(_constants.SIZE);
}
if (hasColor) {
propTypes.color = _propTypes.default.oneOf(_constants.COLOR);
}
if (hasStatus) {
propTypes.status = _propTypes.default.oneOf(_constants.STATUS);
}
(0, _extendReactStatics.default)(WithStyleComponent, BaseComponent);
(0, _recompose.setPropTypes)(propTypes)(WithStyleComponent);
if (process.env.RUN_ENV === 'test') {
return (0, _recompose.setDisplayName)((0, _recompose.wrapDisplayName)(BaseComponent, '__test__'))(WithStyleComponent);
}
return (0, _recompose.setDisplayName)((0, _recompose.wrapDisplayName)(BaseComponent, 'withStyleProps'))(WithStyleComponent);
};
}
var _default = withStyleProps;
exports.default = _default;
module.exports = exports.default;