index.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import _extends from 'babel-runtime/helpers/extends';
  2. import PropTypes from '../_util/vue-types';
  3. import { initDefaultProps, getOptionProps, getListeners } from '../_util/props-util';
  4. import VcSteps from '../vc-steps';
  5. import Icon from '../icon';
  6. import { ConfigConsumerProps } from '../config-provider/configConsumerProps';
  7. import Base from '../base';
  8. var getStepsProps = function getStepsProps() {
  9. var defaultProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  10. var props = {
  11. prefixCls: PropTypes.string,
  12. iconPrefix: PropTypes.string,
  13. current: PropTypes.number,
  14. initial: PropTypes.number,
  15. labelPlacement: PropTypes.oneOf(['horizontal', 'vertical']).def('horizontal'),
  16. status: PropTypes.oneOf(['wait', 'process', 'finish', 'error']),
  17. size: PropTypes.oneOf(['default', 'small']),
  18. direction: PropTypes.oneOf(['horizontal', 'vertical']),
  19. progressDot: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),
  20. type: PropTypes.oneOf(['default', 'navigation'])
  21. };
  22. return initDefaultProps(props, defaultProps);
  23. };
  24. var Steps = {
  25. name: 'ASteps',
  26. props: getStepsProps({
  27. current: 0
  28. }),
  29. inject: {
  30. configProvider: { 'default': function _default() {
  31. return ConfigConsumerProps;
  32. } }
  33. },
  34. model: {
  35. prop: 'current',
  36. event: 'change'
  37. },
  38. Step: _extends({}, VcSteps.Step, { name: 'AStep' }),
  39. render: function render() {
  40. var h = arguments[0];
  41. var props = getOptionProps(this);
  42. var customizePrefixCls = props.prefixCls,
  43. customizeIconPrefixCls = props.iconPrefix;
  44. var getPrefixCls = this.configProvider.getPrefixCls;
  45. var prefixCls = getPrefixCls('steps', customizePrefixCls);
  46. var iconPrefix = getPrefixCls('', customizeIconPrefixCls);
  47. var icons = {
  48. finish: h(Icon, {
  49. attrs: { type: 'check' },
  50. 'class': prefixCls + '-finish-icon' }),
  51. error: h(Icon, {
  52. attrs: { type: 'close' },
  53. 'class': prefixCls + '-error-icon' })
  54. };
  55. var stepsProps = {
  56. props: _extends({
  57. icons: icons,
  58. iconPrefix: iconPrefix,
  59. prefixCls: prefixCls
  60. }, props),
  61. on: getListeners(this),
  62. scopedSlots: this.$scopedSlots
  63. };
  64. return h(
  65. VcSteps,
  66. stepsProps,
  67. [this.$slots['default']]
  68. );
  69. }
  70. };
  71. /* istanbul ignore next */
  72. Steps.install = function (Vue) {
  73. Vue.use(Base);
  74. Vue.component(Steps.name, Steps);
  75. Vue.component(Steps.Step.name, Steps.Step);
  76. };
  77. export default Steps;