zarm-web
Version:
基于 React 的桌面端UI库
58 lines (50 loc) • 2.39 kB
JavaScript
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import React, { PureComponent, Children, cloneElement } from 'react';
import classnames from 'classnames';
export default class Steps extends PureComponent {
render() {
const {
prefixCls,
className,
style,
direction,
children,
current,
onChange,
status
} = this.props;
const classStr = classnames(prefixCls, className, `${prefixCls}--${direction}`);
const filteredChildren = Children.toArray(children).filter(c => !!c);
const lastIndex = filteredChildren.length - 1;
return React.createElement("div", {
className: classStr,
style: style
}, Children.map(filteredChildren, (child, index) => {
if (!child) {
return null;
}
const childProps = _objectSpread({
prefixCls,
disabled: false,
stepIndex: index,
current,
isLastStep: lastIndex === index,
status: current === index ? status : 'wait',
onClick(currentIndex) {
onChange && onChange(currentIndex);
},
stepClick: typeof onChange === 'function'
}, child.props);
return cloneElement(child, childProps);
}));
}
}
Steps.Item = void 0;
Steps.defaultProps = {
prefixCls: 'zw-steps',
direction: 'horizontal',
current: 0,
status: 'process'
};