Steps.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  8. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  9. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  10. var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
  11. var _classnames = _interopRequireDefault(require("classnames"));
  12. var _react = _interopRequireDefault(require("react"));
  13. var _Step = _interopRequireDefault(require("./Step"));
  14. var _excluded = ["prefixCls", "style", "className", "children", "direction", "type", "labelPlacement", "iconPrefix", "status", "size", "current", "progressDot", "stepIcon", "initial", "icons", "onChange", "itemRender", "items"];
  15. /* eslint react/no-did-mount-set-state: 0, react/prop-types: 0 */
  16. function Steps(props) {
  17. var _classNames;
  18. var _props$prefixCls = props.prefixCls,
  19. prefixCls = _props$prefixCls === void 0 ? 'rc-steps' : _props$prefixCls,
  20. _props$style = props.style,
  21. style = _props$style === void 0 ? {} : _props$style,
  22. className = props.className,
  23. children = props.children,
  24. _props$direction = props.direction,
  25. direction = _props$direction === void 0 ? 'horizontal' : _props$direction,
  26. _props$type = props.type,
  27. type = _props$type === void 0 ? 'default' : _props$type,
  28. _props$labelPlacement = props.labelPlacement,
  29. labelPlacement = _props$labelPlacement === void 0 ? 'horizontal' : _props$labelPlacement,
  30. _props$iconPrefix = props.iconPrefix,
  31. iconPrefix = _props$iconPrefix === void 0 ? 'rc' : _props$iconPrefix,
  32. _props$status = props.status,
  33. status = _props$status === void 0 ? 'process' : _props$status,
  34. size = props.size,
  35. _props$current = props.current,
  36. current = _props$current === void 0 ? 0 : _props$current,
  37. _props$progressDot = props.progressDot,
  38. progressDot = _props$progressDot === void 0 ? false : _props$progressDot,
  39. stepIcon = props.stepIcon,
  40. _props$initial = props.initial,
  41. initial = _props$initial === void 0 ? 0 : _props$initial,
  42. icons = props.icons,
  43. onChange = props.onChange,
  44. itemRender = props.itemRender,
  45. _props$items = props.items,
  46. items = _props$items === void 0 ? [] : _props$items,
  47. restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
  48. var isNav = type === 'navigation';
  49. var isInline = type === 'inline';
  50. // inline type requires fixed progressDot direction size.
  51. var mergedProgressDot = isInline || progressDot;
  52. var mergedDirection = isInline ? 'horizontal' : direction;
  53. var mergedSize = isInline ? undefined : size;
  54. var adjustedLabelPlacement = mergedProgressDot ? 'vertical' : labelPlacement;
  55. var classString = (0, _classnames.default)(prefixCls, "".concat(prefixCls, "-").concat(mergedDirection), className, (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-").concat(mergedSize), mergedSize), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-label-").concat(adjustedLabelPlacement), mergedDirection === 'horizontal'), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-dot"), !!mergedProgressDot), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-navigation"), isNav), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-inline"), isInline), _classNames));
  56. var onStepClick = function onStepClick(next) {
  57. if (onChange && current !== next) {
  58. onChange(next);
  59. }
  60. };
  61. var renderStep = function renderStep(item, index) {
  62. var mergedItem = (0, _objectSpread2.default)({}, item);
  63. var stepNumber = initial + index;
  64. // fix tail color
  65. if (status === 'error' && index === current - 1) {
  66. mergedItem.className = "".concat(prefixCls, "-next-error");
  67. }
  68. if (!mergedItem.status) {
  69. if (stepNumber === current) {
  70. mergedItem.status = status;
  71. } else if (stepNumber < current) {
  72. mergedItem.status = 'finish';
  73. } else {
  74. mergedItem.status = 'wait';
  75. }
  76. }
  77. if (isInline) {
  78. mergedItem.icon = undefined;
  79. mergedItem.subTitle = undefined;
  80. }
  81. if (!mergedItem.render && itemRender) {
  82. mergedItem.render = function (stepItem) {
  83. return itemRender(mergedItem, stepItem);
  84. };
  85. }
  86. return /*#__PURE__*/_react.default.createElement(_Step.default, (0, _extends2.default)({}, mergedItem, {
  87. active: stepNumber === current,
  88. stepNumber: stepNumber + 1,
  89. stepIndex: stepNumber,
  90. key: stepNumber,
  91. prefixCls: prefixCls,
  92. iconPrefix: iconPrefix,
  93. wrapperStyle: style,
  94. progressDot: mergedProgressDot,
  95. stepIcon: stepIcon,
  96. icons: icons,
  97. onStepClick: onChange && onStepClick
  98. }));
  99. };
  100. return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
  101. className: classString,
  102. style: style
  103. }, restProps), items.filter(function (item) {
  104. return item;
  105. }).map(renderStep));
  106. }
  107. Steps.Step = _Step.default;
  108. var _default = Steps;
  109. exports.default = _default;