xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 7.97 kB
Source Map (JSON)
{"version":3,"file":"steps.mjs","sources":["../../src/steps/steps.tsx"],"sourcesContent":["import { computed, defineComponent, provide, reactive, ref, toRefs, VNode } from 'vue';\nimport isObject from 'lodash/isObject';\nimport props from './props';\nimport stepItemProps from './step-item-props';\nimport { TdStepItemProps } from './type';\nimport StepItem from './step-item';\n\nimport { usePrefixClass } from '../hooks/useConfig';\nimport useVModel from '../hooks/useVModel';\nimport { useChildComponentSlots } from '../hooks';\n\nexport default defineComponent({\n name: 'XSteps',\n props: { ...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({});\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 < innerCurrent.value) return 'finish';\n // value 存在,找匹配位置\n if (itemProps.value !== undefined) {\n const matchIndex = 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[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":["name","props","innerCurrent","setInnerCurrent","provide","current","setCurrent","console","isObject","option","options","_createVNode","StepItem","_mergeProps","theme"],"mappings":"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"}