tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 9.79 kB
Source Map (JSON)
{"version":3,"file":"timeline-item.mjs","sources":["../../../components/timeline/timeline-item.tsx"],"sourcesContent":["import { defineComponent, inject } from 'vue';\nimport { omit } from 'lodash-es';\nimport props from './timeline-item-props';\nimport { useContent, useTNodeJSX, usePrefixClass } from '@tdesign/shared-hooks';\n\nimport { TimelineInjectKey, DEFAULT_PROVIDER } from './hooks';\nimport Loading from '../loading';\n\nconst DEFAULT_THEME = ['default', 'primary', 'success', 'warning', 'error'];\n\nexport default defineComponent({\n name: 'TTimelineItem',\n props: {\n ...props,\n index: {\n type: Number,\n },\n },\n setup(props) {\n const COMPONENT_NAME = usePrefixClass('timeline-item');\n // unit test need default value\n\n const TimelineProvider = inject(TimelineInjectKey, DEFAULT_PROVIDER);\n const renderContent = useContent();\n const renderTNodeJSX = useTNodeJSX();\n\n // 计算节点模式 CSS 类名\n const getPositionClassName = (index: number) => {\n const { layout, renderAlign } = TimelineProvider.value;\n // TimelineItem.labelAlign > Timeline.labelAlign\n const timelineItemAlign = props.labelAlign ?? renderAlign;\n // 横向布局 以及 纵向布局对应为不同的样式名\n const left = layout === 'horizontal' ? 'top' : 'left';\n const right = layout === 'horizontal' ? 'bottom' : 'right';\n // 单独设置则单独生效\n if (timelineItemAlign === 'alternate') {\n return index % 2 === 0 ? `${COMPONENT_NAME.value}-${left}` : `${COMPONENT_NAME.value}-${right}`;\n }\n if (timelineItemAlign === 'left' || timelineItemAlign === 'top') {\n return `${COMPONENT_NAME.value}-${left}`;\n }\n if (timelineItemAlign === 'right' || timelineItemAlign === 'bottom') {\n return `${COMPONENT_NAME.value}-${right}`;\n }\n return '';\n };\n const handleClick = (e: MouseEvent) => {\n props.onClick?.({ e, item: omit(props, ['index']) });\n };\n\n return () => {\n const { mode, theme, itemsStatus, reverse } = TimelineProvider.value;\n const { loading, dotColor, index } = props;\n\n const labelNode = renderTNodeJSX('label');\n const dotElement = renderTNodeJSX('dot');\n\n const dotContentClass = `${COMPONENT_NAME.value}__dot-content`;\n if (dotElement?.props) {\n const classes = dotElement?.props?.class;\n dotElement.props.class = classes ? [dotContentClass, classes].join(' ') : dotContentClass;\n }\n\n return (\n <li class={[`${COMPONENT_NAME.value}`, `${getPositionClassName(props.index)}`]} onClick={handleClick}>\n {mode === 'alternate' && labelNode && (\n <div class={[`${COMPONENT_NAME.value}__label`, `${COMPONENT_NAME.value}__label--${mode}`]}>{labelNode}</div>\n )}\n <div class={`${COMPONENT_NAME.value}__wrapper`}>\n <div\n class={{\n [`${COMPONENT_NAME.value}__dot`]: true,\n [`${COMPONENT_NAME.value}__dot--custom`]: !!dotElement || (!dotElement && loading),\n [`${COMPONENT_NAME.value}__dot--${dotColor}`]: DEFAULT_THEME.includes(dotColor),\n }}\n style={{ borderColor: !DEFAULT_THEME.includes(dotColor) && dotColor }}\n >\n {!dotElement && loading && <Loading size=\"12px\" class={dotContentClass} />}\n {dotElement}\n </div>\n <div\n class={{\n [`${COMPONENT_NAME.value}__tail`]: true,\n [`${COMPONENT_NAME.value}__tail--theme-${theme}`]: true,\n [`${COMPONENT_NAME.value}__tail--status-${itemsStatus[index]}`]: reverse,\n }}\n />\n </div>\n <div class={`${COMPONENT_NAME.value}__content`}>\n {renderContent('default', 'content')}\n {mode === 'same' && labelNode && (\n <div class={[`${COMPONENT_NAME.value}__label`, `${COMPONENT_NAME.value}__label--${mode}`]}>\n {labelNode}\n </div>\n )}\n </div>\n </li>\n );\n };\n },\n});\n"],"names":["DEFAULT_THEME","defineComponent","name","props","_objectSpread","index","type","Number","setup","COMPONENT_NAME","usePrefixClass","TimelineProvider","inject","TimelineInjectKey","DEFAULT_PROVIDER","renderContent","useContent","renderTNodeJSX","useTNodeJSX","getPositionClassName","_props2$labelAlign","_TimelineProvider$val","value","layout","renderAlign","timelineItemAlign","labelAlign","left","right","concat","handleClick","e","_props2$onClick","onClick","item","omit","_TimelineProvider$val2","mode","theme","itemsStatus","reverse","loading","dotColor","labelNode","dotElement","dotContentClass","_dotElement$props","classes","join","_createVNode","_defineProperty","includes","borderColor","Loading"],"mappings":"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"}