gui-one-nutui-react-taro
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
89 lines (88 loc) • 4.88 kB
JavaScript
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
var _excluded = ["children", "title", "content", "activeIndex", "icon", "iconColor", "size", "className", "renderContent", "iconClassPrefix", "iconFontClassName"];
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
import React__default, { useContext } from 'react';
import classNames from 'classnames';
import { D as DataContext } from './UserContext-68f62e66.js';
import { c as cn } from './bem-893ad28d.js';
import { I as Icon } from './icon.taro-1d0d4fb7.js';
import { C as ComponentDefaults } from './typings-1c5f2628.js';
var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
title: '',
content: '',
activeIndex: 0,
icon: '',
iconColor: '',
size: '12px'
});
var Step = function Step(props) {
var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
children = _defaultProps$props.children,
title = _defaultProps$props.title,
content = _defaultProps$props.content,
activeIndex = _defaultProps$props.activeIndex,
icon = _defaultProps$props.icon,
iconColor = _defaultProps$props.iconColor,
size = _defaultProps$props.size,
className = _defaultProps$props.className,
renderContent = _defaultProps$props.renderContent,
iconClassPrefix = _defaultProps$props.iconClassPrefix,
iconFontClassName = _defaultProps$props.iconFontClassName,
restProps = _objectWithoutProperties(_defaultProps$props, _excluded);
var parent = useContext(DataContext);
var dot = parent.propSteps.progressDot;
var getCurrentStatus = function getCurrentStatus() {
var index = activeIndex;
if (index < +parent.propSteps.current) return 'finish';
return index === +parent.propSteps.current ? 'process' : 'wait';
};
var handleClickStep = function handleClickStep() {
var _parent$propSteps, _parent$propSteps2, _parent$propSteps3, _parent$propSteps4;
((_parent$propSteps = parent.propSteps) === null || _parent$propSteps === void 0 ? void 0 : _parent$propSteps.onClickStep) && ((_parent$propSteps2 = parent.propSteps) === null || _parent$propSteps2 === void 0 ? void 0 : _parent$propSteps2.onClickStep(activeIndex));
((_parent$propSteps3 = parent.propSteps) === null || _parent$propSteps3 === void 0 ? void 0 : _parent$propSteps3.clickStep) && ((_parent$propSteps4 = parent.propSteps) === null || _parent$propSteps4 === void 0 ? void 0 : _parent$propSteps4.clickStep(activeIndex));
};
var b = cn('step');
var classes = classNames(_defineProperty({}, "".concat(b(''), "-").concat(getCurrentStatus()), true), className, b(''));
var renderIconClass = function renderIconClass() {
if (!dot && icon) {
return 'nut-step-icon is-icon';
}
if (!dot && !icon) {
return 'nut-step-icon is-text';
}
return 'nut-step-icon';
};
return React__default.createElement("div", _objectSpread(_objectSpread({
className: classes
}, restProps), {}, {
onClick: handleClickStep
}), React__default.createElement("div", {
className: "nut-step-head"
}, React__default.createElement("div", {
className: "nut-step-line"
}), React__default.createElement("div", {
className: renderIconClass()
}, icon ? React__default.createElement(Icon, {
classPrefix: iconClassPrefix,
fontClassName: iconFontClassName,
className: "nut-step-icon-inner",
color: iconColor,
name: icon,
size: size
}) : !dot && React__default.createElement("span", {
className: "nut-step-inner"
}, activeIndex))), React__default.createElement("div", {
className: "nut-step-main"
}, React__default.createElement("span", {
className: "nut-step-title"
}, title), content && React__default.createElement("span", {
className: "nut-step-content"
}, content), renderContent && React__default.createElement("span", {
className: "nut-step-content"
}, renderContent())));
};
Step.defaultProps = defaultProps;
Step.displayName = 'NutStep';
export { Step as S };