Steps.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _vue = require("vue");
  8. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  9. var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
  10. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  11. var _vueTypes = _interopRequireDefault(require("../_util/vue-types"));
  12. var _propsUtil = require("../_util/props-util");
  13. var _vnode = require("../_util/vnode");
  14. var _classNames2 = _interopRequireDefault(require("../_util/classNames"));
  15. var _excluded = ["prefixCls"];
  16. var _default = (0, _vue.defineComponent)({
  17. compatConfig: {
  18. MODE: 3
  19. },
  20. name: 'Steps',
  21. props: {
  22. type: _vueTypes.default.string.def('default'),
  23. prefixCls: _vueTypes.default.string.def('vc-steps'),
  24. iconPrefix: _vueTypes.default.string.def('vc'),
  25. direction: _vueTypes.default.string.def('horizontal'),
  26. labelPlacement: _vueTypes.default.string.def('horizontal'),
  27. status: _vueTypes.default.string.def('process'),
  28. size: _vueTypes.default.string.def(''),
  29. progressDot: _vueTypes.default.oneOfType([_vueTypes.default.looseBool, _vueTypes.default.func]).def(undefined),
  30. initial: _vueTypes.default.number.def(0),
  31. current: _vueTypes.default.number.def(0),
  32. icons: _vueTypes.default.shape({
  33. finish: _vueTypes.default.any,
  34. error: _vueTypes.default.any
  35. }).loose,
  36. stepIcon: Function
  37. },
  38. slots: ['stepIcon', 'progressDot'],
  39. emits: ['change'],
  40. setup: function setup(props, _ref) {
  41. var slots = _ref.slots,
  42. emit = _ref.emit;
  43. var onStepClick = function onStepClick(next) {
  44. var current = props.current;
  45. if (current !== next) {
  46. emit('change', next);
  47. }
  48. };
  49. return function () {
  50. var _classNames, _slots$default;
  51. var prefixCls = props.prefixCls,
  52. direction = props.direction,
  53. type = props.type,
  54. labelPlacement = props.labelPlacement,
  55. iconPrefix = props.iconPrefix,
  56. status = props.status,
  57. size = props.size,
  58. current = props.current,
  59. _props$progressDot = props.progressDot,
  60. progressDot = _props$progressDot === void 0 ? slots.progressDot : _props$progressDot,
  61. initial = props.initial,
  62. icons = props.icons,
  63. _props$stepIcon = props.stepIcon,
  64. stepIcon = _props$stepIcon === void 0 ? slots.stepIcon : _props$stepIcon;
  65. var isNav = type === 'navigation';
  66. var adjustedLabelPlacement = progressDot ? 'vertical' : labelPlacement;
  67. var classString = (0, _classNames2.default)(prefixCls, "".concat(prefixCls, "-").concat(direction), (_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-").concat(size), size), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-label-").concat(adjustedLabelPlacement), direction === 'horizontal'), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-dot"), !!progressDot), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-navigation"), isNav), _classNames));
  68. var children = (0, _propsUtil.filterEmpty)((_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots));
  69. return (0, _vue.createVNode)("div", {
  70. "class": classString
  71. }, [children.map(function (child, index) {
  72. // description: PropTypes.any,
  73. // icon: PropTypes.any,
  74. // status: PropTypes.oneOf(tuple('wait', 'process', 'finish', 'error')),
  75. // disabled: { type: Boolean, default: undefined },
  76. // title: PropTypes.any,
  77. // subTitle: PropTypes.any,
  78. var _ref2 = child.props || {},
  79. _ref2$prefixCls = _ref2.prefixCls,
  80. pre = _ref2$prefixCls === void 0 ? prefixCls : _ref2$prefixCls,
  81. restProps = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
  82. var stepNumber = initial + index;
  83. var stepProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
  84. stepNumber: stepNumber + 1,
  85. stepIndex: stepNumber,
  86. key: stepNumber,
  87. prefixCls: pre,
  88. iconPrefix: iconPrefix,
  89. progressDot: progressDot,
  90. icons: icons,
  91. stepIcon: stepIcon,
  92. onStepClick: onStepClick
  93. });
  94. // fix tail color
  95. if (status === 'error' && index === current - 1) {
  96. stepProps.class = "".concat(prefixCls, "-next-error");
  97. }
  98. if (!restProps.status) {
  99. if (stepNumber === current) {
  100. stepProps.status = status;
  101. } else if (stepNumber < current) {
  102. stepProps.status = 'finish';
  103. } else {
  104. stepProps.status = 'wait';
  105. }
  106. }
  107. stepProps.active = stepNumber === current;
  108. return (0, _vnode.cloneElement)(child, stepProps);
  109. })]);
  110. };
  111. }
  112. });
  113. exports.default = _default;