UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

108 lines (107 loc) 4.46 kB
import { _ as _define_property } from "@swc/helpers/_/_define_property"; import { _ as _object_spread } from "@swc/helpers/_/_object_spread"; import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props"; import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties"; import React, { useContext, useMemo, useCallback } from "react"; import classNames from "classnames"; import { DataContext } from "../steps/context"; import { ComponentDefaults } from "../../utils/typings"; var defaultProps = _object_spread_props(_object_spread({}, ComponentDefaults), { title: '', description: '', value: 0, icon: null }); export var Step = function(props) { var _ref = _object_spread({}, defaultProps, props), type = _ref.type, children = _ref.children, title = _ref.title, description = _ref.description, value = _ref.value, icon = _ref.icon, className = _ref.className, restProps = _object_without_properties(_ref, [ "type", "children", "title", "description", "value", "icon", "className" ]); var parent = useContext(DataContext); var _parent_propSteps = parent.propSteps, parentType = _parent_propSteps.type, parentValue = _parent_propSteps.value, status = _parent_propSteps.status, parentIcon = _parent_propSteps.icon, onStepClick = _parent_propSteps.onStepClick; var currentStatus = useMemo(function() { if ([ 'default', 'business' ].includes(status)) { return status; } if (value < +parentValue) return 'finish'; return value === +parentValue ? 'process' : 'wait'; }, [ value, parentValue ]); var handleClickStep = useCallback(function() { onStepClick === null || onStepClick === void 0 ? void 0 : onStepClick(value); }, [ onStepClick, value ]); var classPrefix = "nut-step"; // className计算 var classes = useMemo(function() { var _obj; return classNames(classPrefix, (_obj = {}, _define_property(_obj, "".concat(classPrefix, "-").concat(currentStatus), true), _define_property(_obj, "".concat(classPrefix, "-").concat(type || parentType), true), _define_property(_obj, "".concat(classPrefix, "-special"), description), _obj), className); }, [ currentStatus, type, className ]); // 头部渲染 var renderHeadType = useMemo(function() { switch(type || parentType){ case 'text': return /*#__PURE__*/ React.createElement("span", { className: "".concat(classPrefix, "-head-text") }, value); case 'dot': return /*#__PURE__*/ React.createElement("span", { className: "".concat(classPrefix, "-head-dot") }); case 'icon': return /*#__PURE__*/ React.createElement("span", { className: "".concat(classPrefix, "-head-icon") }, icon || parentIcon); default: return null; } }, [ type, value, icon ]); // 内容渲染 var renderContent = useMemo(function() { if (!title && !description) return null; return /*#__PURE__*/ React.createElement("div", { className: "".concat(classPrefix, "-main") }, title && /*#__PURE__*/ React.createElement("span", { className: "".concat(classPrefix, "-title") }, title), description && /*#__PURE__*/ React.createElement("span", { className: "".concat(classPrefix, "-description") }, description)); }, [ title, description ]); return /*#__PURE__*/ React.createElement("div", _object_spread_props(_object_spread({ className: classes }, restProps), { onClick: handleClickStep }), /*#__PURE__*/ React.createElement("div", { className: "".concat(classPrefix, "-head") }, /*#__PURE__*/ React.createElement("div", { className: "".concat(classPrefix, "-head-").concat(type || parentType, "-wrap") }, renderHeadType)), /*#__PURE__*/ React.createElement("div", { className: "".concat(classPrefix, "-line") }, /*#__PURE__*/ React.createElement("div", { className: "".concat(classPrefix, "-line-inner") })), renderContent); }; Step.displayName = 'NutStep';