choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
100 lines (81 loc) • 3.36 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _createReactClass = _interopRequireDefault(require("create-react-class"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames2 = _interopRequireDefault(require("classnames"));
var _utils = require("./utils");
var TabContent = (0, _createReactClass["default"])({
displayName: 'TabContent',
propTypes: {
animated: _propTypes["default"].bool,
animatedWithMargin: _propTypes["default"].bool,
prefixCls: _propTypes["default"].string,
children: _propTypes["default"].any,
activeKey: _propTypes["default"].string,
style: _propTypes["default"].any,
tabBarPosition: _propTypes["default"].string
},
getDefaultProps: function getDefaultProps() {
return {
animated: true
};
},
getTabPanes: function getTabPanes() {
var props = this.props;
var activeKey = props.activeKey;
var children = props.children;
var newChildren = [];
_react.Children.forEach(children, function (child, index) {
if (!child) {
return;
}
var key = (0, _utils.generateKey)(child.key, index);
var active = activeKey === key;
newChildren.push((0, _react.cloneElement)(child, {
key: key,
active: active,
destroyInactiveTabPane: props.destroyInactiveTabPane,
rootPrefixCls: props.prefixCls
}));
});
return newChildren;
},
render: function render() {
var _classnames;
var props = this.props;
var prefixCls = props.prefixCls,
children = props.children,
activeKey = props.activeKey,
tabBarPosition = props.tabBarPosition,
animated = props.animated,
animatedWithMargin = props.animatedWithMargin;
var style = props.style;
var classes = (0, _classnames2["default"])((_classnames = {}, (0, _defineProperty2["default"])(_classnames, "".concat(prefixCls, "-content"), true), (0, _defineProperty2["default"])(_classnames, animated ? "".concat(prefixCls, "-content-animated") : "".concat(prefixCls, "-content-no-animated"), true), _classnames));
if (animated) {
var activeIndex = (0, _utils.getActiveIndex)(children, activeKey);
if (activeIndex !== -1) {
var animatedStyle = animatedWithMargin ? (0, _utils.getMarginStyle)(activeIndex, tabBarPosition) : (0, _utils.getTransformPropValue)((0, _utils.getTransformByIndex)(activeIndex, tabBarPosition));
style = (0, _objectSpread2["default"])({}, style, {}, animatedStyle);
} else {
style = (0, _objectSpread2["default"])({}, style, {
display: 'none'
});
}
}
return _react["default"].createElement("div", {
className: classes,
style: style
}, this.getTabPanes());
}
});
var _default = TabContent;
exports["default"] = _default;
//# sourceMappingURL=TabContent.js.map