tdesign-react
Version:
TDesign Component for React
137 lines (133 loc) • 6.16 kB
JavaScript
/**
* 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