element-plus
Version:
A Component Library for Vue 3
1 lines • 13.4 kB
Source Map (JSON)
{"version":3,"file":"item.vue2.mjs","sources":["../../../../../../packages/components/steps/src/item.vue"],"sourcesContent":["<template>\n <div :style=\"style\" :class=\"containerKls\">\n <!-- icon & line -->\n <div :class=\"[ns.e('head'), ns.is(currentStatus)]\">\n <div v-if=\"!isSimple\" :class=\"ns.e('line')\">\n <i :class=\"ns.e('line-inner')\" :style=\"lineStyle\" />\n </div>\n\n <div\n :class=\"[ns.e('icon'), ns.is(icon || $slots.icon ? 'icon' : 'text')]\"\n >\n <slot name=\"icon\">\n <el-icon v-if=\"icon\" :class=\"ns.e('icon-inner')\">\n <component :is=\"icon\" />\n </el-icon>\n <el-icon\n v-else-if=\"currentStatus === 'success'\"\n :class=\"[ns.e('icon-inner'), ns.is('status')]\"\n >\n <Check />\n </el-icon>\n <el-icon\n v-else-if=\"currentStatus === 'error'\"\n :class=\"[ns.e('icon-inner'), ns.is('status')]\"\n >\n <Close />\n </el-icon>\n <div v-else-if=\"!isSimple\" :class=\"ns.e('icon-inner')\">\n {{ index + 1 }}\n </div>\n </slot>\n </div>\n </div>\n <!-- title & description -->\n <div :class=\"ns.e('main')\">\n <div :class=\"[ns.e('title'), ns.is(currentStatus)]\">\n <slot name=\"title\">{{ title }}</slot>\n </div>\n <div v-if=\"isSimple\" :class=\"ns.e('arrow')\" />\n <div v-else :class=\"[ns.e('description'), ns.is(currentStatus)]\">\n <slot name=\"description\">{{ description }}</slot>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n getCurrentInstance,\n inject,\n onBeforeUnmount,\n onMounted,\n ref,\n watch,\n} from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Check, Close } from '@element-plus/icons-vue'\nimport { isNumber } from '@element-plus/utils'\nimport { STEPS_INJECTION_KEY } from './tokens'\n\nimport type { StepProps } from './item'\nimport type { CSSProperties, ComputedRef, Ref, VNode } from 'vue'\nimport type { StepsProps } from './steps'\n\nexport interface StepItemState {\n uid: number\n getVnode: () => VNode\n currentStatus: ComputedRef<string>\n internalStatus: Ref<string>\n setIndex: (val: number) => void\n calcProgress: (status: string) => void\n}\n\nexport interface IStepsInject {\n props: Required<StepsProps>\n steps: Ref<StepItemState[]>\n addStep: (item: StepItemState) => void\n removeStep: (item: StepItemState) => void\n}\n\ndefineOptions({\n name: 'ElStep',\n})\n\nconst props = withDefaults(defineProps<StepProps>(), {\n title: '',\n description: '',\n icon: '',\n status: '',\n})\n\nconst ns = useNamespace('step')\nconst index = ref(-1)\nconst lineStyle = ref({})\nconst internalStatus = ref('')\nconst parent = inject(STEPS_INJECTION_KEY) as IStepsInject\nconst currentInstance = getCurrentInstance()!\nlet stepDiff = 0\nlet beforeActive = 0\n\nonMounted(() => {\n watch(\n [\n () => parent.props.active,\n () => parent.props.processStatus,\n () => parent.props.finishStatus,\n ],\n ([active], [oldActive]) => {\n beforeActive = oldActive || 0\n stepDiff = active - beforeActive\n\n updateStatus(active)\n },\n { immediate: true }\n )\n})\n\nconst currentStatus = computed(() => {\n return props.status || internalStatus.value\n})\n\nconst prevInternalStatus = computed(() => {\n const prevStep = parent.steps.value[index.value - 1]\n return prevStep ? prevStep.internalStatus.value : 'wait'\n})\n\nconst isCenter = computed(() => {\n return parent.props.alignCenter\n})\n\nconst isVertical = computed(() => {\n return parent.props.direction === 'vertical'\n})\n\nconst isSimple = computed(() => {\n return parent.props.simple\n})\n\nconst stepsCount = computed(() => {\n return parent.steps.value.length\n})\n\nconst isLast = computed(() => {\n return parent.steps.value[stepsCount.value - 1]?.uid === currentInstance.uid\n})\n\nconst space = computed(() => {\n return isSimple.value ? '' : parent.props.space\n})\n\nconst containerKls = computed(() => {\n return [\n ns.b(),\n ns.is(isSimple.value ? 'simple' : parent.props.direction),\n ns.is('flex', isLast.value && !space.value && !isCenter.value),\n ns.is('center', isCenter.value && !isVertical.value && !isSimple.value),\n ]\n})\n\nconst style = computed(() => {\n const style: CSSProperties = {\n flexBasis: isNumber(space.value)\n ? `${space.value}px`\n : space.value\n ? space.value\n : `${100 / (stepsCount.value - (isCenter.value ? 0 : 1))}%`,\n }\n if (isVertical.value) return style\n if (isLast.value) {\n style.maxWidth = `${100 / stepsCount.value}%`\n }\n return style\n})\n\nconst setIndex = (val: number) => {\n index.value = val\n}\n\nconst calcProgress = (status: string) => {\n const isWait = status === 'wait'\n const delayTimer =\n Math.abs(stepDiff) === 1\n ? 0\n : stepDiff > 0\n ? (index.value + 1 - beforeActive) * 150\n : -(index.value + 1 - parent.props.active) * 150\n\n const style: CSSProperties = {\n transitionDelay: `${delayTimer}ms`,\n }\n const step = status === parent.props.processStatus || isWait ? 0 : 100\n\n style.borderWidth = step && !isSimple.value ? '1px' : 0\n style[parent.props.direction === 'vertical' ? 'height' : 'width'] = `${step}%`\n lineStyle.value = style\n}\n\nconst updateStatus = (activeIndex: number) => {\n if (activeIndex > index.value) {\n internalStatus.value = parent.props.finishStatus\n } else if (\n activeIndex === index.value &&\n prevInternalStatus.value !== 'error'\n ) {\n internalStatus.value = parent.props.processStatus\n } else {\n internalStatus.value = 'wait'\n }\n const prevChild = parent.steps.value[index.value - 1]\n if (prevChild) prevChild.calcProgress(internalStatus.value)\n}\n\nconst stepItemState: StepItemState = {\n uid: currentInstance.uid,\n getVnode: () => currentInstance.vnode,\n currentStatus,\n internalStatus,\n setIndex,\n calcProgress,\n}\n\nparent.addStep(stepItemState)\n\nonBeforeUnmount(() => {\n parent.removeStep(stepItemState)\n})\n</script>\n"],"names":["style","_createElementBlock","_createCommentVNode","_createElementVNode","_normalizeClass","_unref","$slots","_renderSlot","_createBlock","_openBlock","_resolveDynamicComponent","_createVNode"],"mappings":"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"}