tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 10.4 kB
Source Map (JSON)
{"version":3,"file":"steps.mjs","sources":["../../../components/steps/steps.tsx"],"sourcesContent":["import { computed, defineComponent, provide, reactive, ref, toRefs, VNode } from 'vue';\nimport { isObject } from 'lodash-es';\nimport props from './props';\nimport stepItemProps from './step-item-props';\nimport { TdStepItemProps } from './type';\nimport StepItem from './step-item';\n\nimport { useVModel, usePrefixClass, useChildComponentSlots } from '@tdesign/shared-hooks';\n\nexport default defineComponent({\n name: 'TSteps',\n props,\n setup(props) {\n const COMPONENT_NAME = usePrefixClass('steps');\n\n const { current, modelValue } = toRefs(props);\n const [innerCurrent, setInnerCurrent] = useVModel(\n current,\n modelValue,\n props.defaultCurrent,\n props.onChange,\n 'current',\n );\n\n provide(\n 'StepsState',\n reactive({\n current: innerCurrent,\n setCurrent: setInnerCurrent,\n }),\n );\n\n provide('StepsProps', props);\n\n const indexMap = ref<Record<string | number, number>>({});\n\n const handleStatus = (itemProps: TdStepItemProps, index: number) => {\n if (itemProps.status && itemProps.status !== 'default') return itemProps.status;\n if (innerCurrent.value === 'FINISH') return 'finish';\n // value 不存在时,使用 index 进行区分每一个步骤\n if (itemProps.value === undefined && index < Number(innerCurrent.value)) return 'finish';\n // value 存在,找匹配位置\n if (itemProps.value !== undefined) {\n const matchIndex = Number(indexMap.value[innerCurrent.value]);\n if (matchIndex === undefined) {\n console.warn('TDesign Steps Warn: The current `value` is not exist.');\n return 'default';\n }\n if (props.sequence === 'positive' && index < matchIndex) return 'finish';\n if (props.sequence === 'reverse' && index > matchIndex) return 'finish';\n }\n const key = itemProps.value === undefined ? index : itemProps.value;\n if (key === innerCurrent.value) return 'process';\n return 'default';\n };\n\n const getChildComponentByName = useChildComponentSlots();\n\n const getOptionListBySlots = (nodes: VNode[]) => {\n const arr: Array<TdStepItemProps> = [];\n nodes?.forEach((node) => {\n const option = node?.props || {};\n const children = node?.children;\n if (!option && !children) return;\n if (children && isObject(children)) {\n for (const key in children) {\n if (key in stepItemProps && !option[key]) {\n option[key] = (children as Record<string, any>)[key];\n }\n }\n }\n props.sequence === 'reverse' ? arr.unshift(option as TdStepItemProps) : arr.push(option as TdStepItemProps);\n });\n return arr;\n };\n const getOptions = () => {\n let options: Array<TdStepItemProps>;\n if (props.options?.length) {\n options = props.sequence === 'reverse' ? props.options.slice().reverse() : props.options;\n } else {\n const nodes: VNode[] = getChildComponentByName('StepItem') as VNode[];\n options = getOptionListBySlots(nodes);\n }\n\n (options || []).forEach((item, index) => {\n if (item.value !== undefined) indexMap.value[item.value] = index;\n });\n return options;\n };\n\n const renderContent = () => {\n const options = getOptions();\n\n return options.map((item, index) => {\n const stepIndex = props.sequence === 'reverse' ? options.length - index - 1 : index;\n index = item.value !== undefined ? index : stepIndex;\n\n return <StepItem {...item} index={stepIndex} status={handleStatus(item, index)} key={item.value || index} />;\n });\n };\n\n /** class calculate */\n const handleTheme = () => {\n let { theme } = props;\n const options = getOptions();\n options.forEach((item) => {\n if (item?.icon !== undefined) {\n // icon > theme\n theme = 'default';\n }\n });\n return theme;\n };\n const baseClass = computed(() => {\n return [\n COMPONENT_NAME.value,\n `${COMPONENT_NAME.value}--${props.layout}`,\n `${COMPONENT_NAME.value}--${handleTheme()}-anchor`,\n `${COMPONENT_NAME.value}--${props.sequence}`,\n `${COMPONENT_NAME.value}--${props.separator}-separator`,\n ];\n });\n /** class calculate END */\n\n return () => <div class={baseClass.value}>{renderContent()}</div>;\n },\n});\n"],"names":["defineComponent","name","props","setup","COMPONENT_NAME","usePrefixClass","_toRefs","toRefs","current","modelValue","_useVModel","useVModel","defaultCurrent","onChange","_useVModel2","_slicedToArray","innerCurrent","setInnerCurrent","provide","reactive","setCurrent","indexMap","ref","handleStatus","itemProps","index","status","value","Number","matchIndex","console","warn","sequence","key","getChildComponentByName","useChildComponentSlots","getOptionListBySlots","nodes","arr","forEach","node","option","children","isObject","stepItemProps","unshift","push","getOptions","_props2$options","options","length","slice","reverse","item","renderContent","map","stepIndex","_createVNode","StepItem","_mergeProps","handleTheme","theme","icon","baseClass","computed","concat","layout","separator"],"mappings":"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"}