UNPKG

tdesign-react

Version:
137 lines (133 loc) 6.16 kB
/** * tdesign v1.15.1 * (c) 2025 tdesign * @license MIT */ import { _ as _defineProperty } from '../_chunks/dep-cb0a3966.js'; import React, { useContext, useMemo } from 'react'; import classNames from 'classnames'; import { omit } from 'lodash-es'; import useConfig from '../hooks/useConfig.js'; import StepsContext from './TimelineContext.js'; import parseTNode from '../_util/parseTNode.js'; import { useAlign } from './useAlign.js'; import { Loading } from '../loading/index.js'; import '../_chunks/dep-eca3a3de.js'; import '../config-provider/ConfigContext.js'; import '../locale/zh_CN.js'; import '../_chunks/dep-e29214cb.js'; import 'dayjs'; import '../_chunks/dep-3c9ab31a.js'; import '../_chunks/dep-f53c91cd.js'; import '../_chunks/dep-b908e1fe.js'; import '../loading/Loading.js'; import '../_chunks/dep-48805ab8.js'; import '../_chunks/dep-026a4c6b.js'; import '../_chunks/dep-3a09424a.js'; import '../common/Portal.js'; import 'react-dom'; import '../hooks/useLayoutEffect.js'; import '../loading/gradient.js'; import '../_chunks/dep-c48e2ca1.js'; import '../_chunks/dep-1630b9b4.js'; import '../_chunks/dep-87d110df.js'; import '../_chunks/dep-6b660ef0.js'; import '../hooks/useDomRefCallback.js'; import '../loading/defaultProps.js'; import '../hooks/useDefaultProps.js'; import '../loading/plugin.js'; import '../_util/react-render.js'; import '../_chunks/dep-a74cc5e4.js'; import '../common/PluginContainer.js'; import '../config-provider/index.js'; import '../config-provider/ConfigProvider.js'; import '../config-provider/type.js'; import '../loading/style/index.js'; import '../loading/type.js'; var DefaultTheme = ["default", "primary", "success", "warning", "error"]; var TimelineItem = function TimelineItem(props) { var className = props.className, _props$style = props.style, style = _props$style === void 0 ? {} : _props$style, dot = props.dot, _props$dotColor = props.dotColor, dotColor = _props$dotColor === void 0 ? "primary" : _props$dotColor, labelAlign = props.labelAlign, children = props.children, index = props.index, content = props.content, label = props.label, _props$loading = props.loading, loading = _props$loading === void 0 ? false : _props$loading, onClick = props.onClick; var _useContext = useContext(StepsContext), theme = _useContext.theme, reverse = _useContext.reverse, itemsStatus = _useContext.itemsStatus, layout = _useContext.layout, globalAlign = _useContext.globalAlign, mode = _useContext.mode; var _useConfig = useConfig(), classPrefix = _useConfig.classPrefix; var renderAlign = useAlign(globalAlign, layout); var getPositionClassName = function getPositionClassName(index2) { var left = layout === "horizontal" ? "top" : "left"; var right = layout === "horizontal" ? "bottom" : "right"; if (renderAlign === "alternate") { return labelAlign || index2 % 2 === 0 ? "".concat(classPrefix, "-timeline-item-").concat(left) : "".concat(classPrefix, "-timeline-item-").concat(right); } if (renderAlign === "left" || renderAlign === "top") { return "".concat(classPrefix, "-timeline-item-").concat(left); } if (renderAlign === "right" || renderAlign === "bottom") { return "".concat(classPrefix, "-timeline-item-").concat(right); } return ""; }; var dotElement = useMemo(function () { var ele = parseTNode(dot); if (/*#__PURE__*/React.isValidElement(ele)) { var _ele$props; return /*#__PURE__*/React.cloneElement(ele, { className: classNames(ele === null || ele === void 0 || (_ele$props = ele.props) === null || _ele$props === void 0 ? void 0 : _ele$props.className, "".concat(classPrefix, "-timeline-item__dot-content")) }); } return ele; }, [dot, classPrefix]); var handleClick = function handleClick(e) { onClick === null || onClick === void 0 || onClick({ e: e, item: omit(props, ["children", "index", "onClick"]) }); }; var itemClassName = classNames(_defineProperty(_defineProperty({}, "".concat(classPrefix, "-timeline-item"), true), "".concat(getPositionClassName(index)), true), className); var tailClassName = classNames(_defineProperty(_defineProperty(_defineProperty({}, "".concat(classPrefix, "-timeline-item__tail"), true), "".concat(classPrefix, "-timeline-item__tail--theme-").concat(theme), true), "".concat(classPrefix, "-timeline-item__tail--status-").concat(itemsStatus[index]), reverse)); var dotClassName = classNames(_defineProperty(_defineProperty(_defineProperty({}, "".concat(classPrefix, "-timeline-item__dot"), true), "".concat(classPrefix, "-timeline-item__dot--custom"), !!dotElement || !dotElement && loading), "".concat(classPrefix, "-timeline-item__dot--").concat(dotColor), DefaultTheme.includes(dotColor))); var labelClassName = classNames("".concat(classPrefix, "-timeline-item__label"), _defineProperty({}, "".concat(classPrefix, "-timeline-item__label--").concat(mode), true)); return /* @__PURE__ */React.createElement("li", { className: itemClassName, style: style, onClick: handleClick }, mode === "alternate" && label && /* @__PURE__ */React.createElement("div", { className: labelClassName }, label), /* @__PURE__ */React.createElement("div", { className: "".concat(classPrefix, "-timeline-item__wrapper") }, /* @__PURE__ */React.createElement("div", { className: dotClassName, style: { borderColor: !DefaultTheme.includes(dotColor) && dotColor } }, !dotElement && loading && /* @__PURE__ */React.createElement(Loading, { size: "12px", className: "".concat(classPrefix, "-timeline-item__dot-content") }), dotElement), /* @__PURE__ */React.createElement("div", { className: tailClassName })), /* @__PURE__ */React.createElement("div", { className: "".concat(classPrefix, "-timeline-item__content") }, content || children, mode === "same" && label && /* @__PURE__ */React.createElement("div", { className: labelClassName }, label))); }; TimelineItem.displayName = "TimelineItem"; export { TimelineItem as default }; //# sourceMappingURL=TimelineItem.js.map