Step.js 6.7 KB

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