Step.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  3. import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
  4. import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
  5. var _excluded = ["className", "prefixCls", "style", "active", "status", "iconPrefix", "icon", "wrapperStyle", "stepNumber", "disabled", "description", "title", "subTitle", "progressDot", "stepIcon", "tailContent", "icons", "stepIndex", "onStepClick", "onClick", "render"];
  6. /* eslint react/prop-types: 0 */
  7. import * as React from 'react';
  8. import classNames from 'classnames';
  9. import KeyCode from "rc-util/es/KeyCode";
  10. function isString(str) {
  11. return typeof str === 'string';
  12. }
  13. function Step(props) {
  14. var _classNames2;
  15. var className = props.className,
  16. prefixCls = props.prefixCls,
  17. style = props.style,
  18. active = props.active,
  19. status = props.status,
  20. iconPrefix = props.iconPrefix,
  21. icon = props.icon,
  22. wrapperStyle = props.wrapperStyle,
  23. stepNumber = props.stepNumber,
  24. disabled = props.disabled,
  25. description = props.description,
  26. title = props.title,
  27. subTitle = props.subTitle,
  28. progressDot = props.progressDot,
  29. stepIcon = props.stepIcon,
  30. tailContent = props.tailContent,
  31. icons = props.icons,
  32. stepIndex = props.stepIndex,
  33. onStepClick = props.onStepClick,
  34. onClick = props.onClick,
  35. render = props.render,
  36. restProps = _objectWithoutProperties(props, _excluded);
  37. // ========================= Click ==========================
  38. var clickable = !!onStepClick && !disabled;
  39. var accessibilityProps = {};
  40. if (clickable) {
  41. accessibilityProps.role = 'button';
  42. accessibilityProps.tabIndex = 0;
  43. accessibilityProps.onClick = function (e) {
  44. onClick === null || onClick === void 0 ? void 0 : onClick(e);
  45. onStepClick(stepIndex);
  46. };
  47. accessibilityProps.onKeyDown = function (e) {
  48. var which = e.which;
  49. if (which === KeyCode.ENTER || which === KeyCode.SPACE) {
  50. onStepClick(stepIndex);
  51. }
  52. };
  53. }
  54. // ========================= Render =========================
  55. var renderIconNode = function renderIconNode() {
  56. var _classNames;
  57. var iconNode;
  58. var iconClassName = classNames("".concat(prefixCls, "-icon"), "".concat(iconPrefix, "icon"), (_classNames = {}, _defineProperty(_classNames, "".concat(iconPrefix, "icon-").concat(icon), icon && isString(icon)), _defineProperty(_classNames, "".concat(iconPrefix, "icon-check"), !icon && status === 'finish' && (icons && !icons.finish || !icons)), _defineProperty(_classNames, "".concat(iconPrefix, "icon-cross"), !icon && status === 'error' && (icons && !icons.error || !icons)), _classNames));
  59. var iconDot = /*#__PURE__*/React.createElement("span", {
  60. className: "".concat(prefixCls, "-icon-dot")
  61. });
  62. // `progressDot` enjoy the highest priority
  63. if (progressDot) {
  64. if (typeof progressDot === 'function') {
  65. iconNode = /*#__PURE__*/React.createElement("span", {
  66. className: "".concat(prefixCls, "-icon")
  67. }, progressDot(iconDot, {
  68. index: stepNumber - 1,
  69. status: status,
  70. title: title,
  71. description: description
  72. }));
  73. } else {
  74. iconNode = /*#__PURE__*/React.createElement("span", {
  75. className: "".concat(prefixCls, "-icon")
  76. }, iconDot);
  77. }
  78. } else if (icon && !isString(icon)) {
  79. iconNode = /*#__PURE__*/React.createElement("span", {
  80. className: "".concat(prefixCls, "-icon")
  81. }, icon);
  82. } else if (icons && icons.finish && status === 'finish') {
  83. iconNode = /*#__PURE__*/React.createElement("span", {
  84. className: "".concat(prefixCls, "-icon")
  85. }, icons.finish);
  86. } else if (icons && icons.error && status === 'error') {
  87. iconNode = /*#__PURE__*/React.createElement("span", {
  88. className: "".concat(prefixCls, "-icon")
  89. }, icons.error);
  90. } else if (icon || status === 'finish' || status === 'error') {
  91. iconNode = /*#__PURE__*/React.createElement("span", {
  92. className: iconClassName
  93. });
  94. } else {
  95. iconNode = /*#__PURE__*/React.createElement("span", {
  96. className: "".concat(prefixCls, "-icon")
  97. }, stepNumber);
  98. }
  99. if (stepIcon) {
  100. iconNode = stepIcon({
  101. index: stepNumber - 1,
  102. status: status,
  103. title: title,
  104. description: description,
  105. node: iconNode
  106. });
  107. }
  108. return iconNode;
  109. };
  110. var mergedStatus = status || 'wait';
  111. var classString = classNames("".concat(prefixCls, "-item"), "".concat(prefixCls, "-item-").concat(mergedStatus), className, (_classNames2 = {}, _defineProperty(_classNames2, "".concat(prefixCls, "-item-custom"), icon), _defineProperty(_classNames2, "".concat(prefixCls, "-item-active"), active), _defineProperty(_classNames2, "".concat(prefixCls, "-item-disabled"), disabled === true), _classNames2));
  112. var stepItemStyle = _objectSpread({}, style);
  113. var stepNode = /*#__PURE__*/React.createElement("div", _extends({}, restProps, {
  114. className: classString,
  115. style: stepItemStyle
  116. }), /*#__PURE__*/React.createElement("div", _extends({
  117. onClick: onClick
  118. }, accessibilityProps, {
  119. className: "".concat(prefixCls, "-item-container")
  120. }), /*#__PURE__*/React.createElement("div", {
  121. className: "".concat(prefixCls, "-item-tail")
  122. }, tailContent), /*#__PURE__*/React.createElement("div", {
  123. className: "".concat(prefixCls, "-item-icon")
  124. }, renderIconNode()), /*#__PURE__*/React.createElement("div", {
  125. className: "".concat(prefixCls, "-item-content")
  126. }, /*#__PURE__*/React.createElement("div", {
  127. className: "".concat(prefixCls, "-item-title")
  128. }, title, subTitle && /*#__PURE__*/React.createElement("div", {
  129. title: typeof subTitle === 'string' ? subTitle : undefined,
  130. className: "".concat(prefixCls, "-item-subtitle")
  131. }, subTitle)), description && /*#__PURE__*/React.createElement("div", {
  132. className: "".concat(prefixCls, "-item-description")
  133. }, description))));
  134. if (render) {
  135. stepNode = render(stepNode) || null;
  136. }
  137. return stepNode;
  138. }
  139. export default Step;