hongluan-ui
Version:
Hongluan Component Library for Vue 3
1 lines • 7.91 kB
Source Map (JSON)
{"version":3,"file":"item2.mjs","sources":["../../../../../../packages/components/steps/src/item.vue"],"sourcesContent":["<template>\n <div :class=\"[namespace, `is-${parent.props.dir}`, isCenter && !isVertical && !isInline && 'is-center', `is-${currentStatus}`]\">\n <template v-if=\"isInline\">\n <div\n :class=\"[\n 'step-icon',\n `is-${$slots.icon ? 'icon' : 'text'}`,\n parent.props.round ? 'round' : '',\n ]\"\n >\n <slot v-if=\"currentStatus !== 'success' && currentStatus !== 'error'\" name=\"icon\">\n <div v-if=\"!$slots.icon\" class=\"icon-inner\">{{ index + 1 }}</div>\n </slot>\n <slot v-else-if=\"currentStatus == 'success'\" name=\"success-icon\">\n <hl-icon :class=\"['icon-inner', 'is-status']\">\n <system-checked />\n </hl-icon>\n </slot>\n <slot v-else-if=\"currentStatus == 'error'\" name=\"error-icon\">\n <hl-icon :class=\"['icon-inner', 'is-status']\">\n <system-close />\n </hl-icon>\n </slot>\n </div>\n <div class=\"step-main\">\n <div class=\"step-head\">\n <div class=\"step-title\">\n <slot name=\"title\">{{ title }}</slot>\n </div>\n <div class=\"step-line\">\n <slot name=\"line\"><hr></slot>\n </div>\n </div>\n <div v-if=\"description || $slots.description\" class=\"step-description\">\n <slot name=\"description\">{{ description }}</slot>\n </div>\n </div>\n </template>\n\n <template v-else>\n <div class=\"step-head\">\n <div\n :class=\"[\n 'step-icon',\n `is-${$slots.icon ? 'icon' : 'text'}`,\n parent.props.round ? 'round' : '',\n ]\"\n >\n <slot v-if=\"currentStatus !== 'success' && currentStatus !== 'error'\" name=\"icon\">\n <div v-if=\"!$slots.icon\" class=\"icon-inner\">{{ index + 1 }}</div>\n </slot>\n <slot v-else-if=\"currentStatus == 'success'\" name=\"success-icon\">\n <hl-icon :class=\"['icon-inner', 'is-status']\">\n <system-checked />\n </hl-icon>\n </slot>\n <slot v-else-if=\"currentStatus == 'error'\" name=\"error-icon\">\n <hl-icon :class=\"['icon-inner', 'is-status']\">\n <system-close />\n </hl-icon>\n </slot>\n </div>\n <div class=\"step-line\">\n </div>\n </div>\n <!-- title & description -->\n <div class=\"step-main\">\n <div class=\"step-title\">\n <slot name=\"title\">{{ title }}</slot>\n </div>\n <div v-if=\"description || $slots.description\" class=\"step-description\">\n <slot name=\"description\">{{ description }}</slot>\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, inject, watch, onBeforeUnmount, onMounted, getCurrentInstance, reactive } from 'vue'\nimport { useNamespace } from '@hongluan-ui/hooks'\nimport HlIcon from '@hongluan-ui/components/icon'\nimport { SystemChecked, SystemClose } from '@hongluan-ui/components/system-icon'\nimport { stepProps } from './item'\n\nimport type { Ref } from 'vue'\n\nexport interface IStepsProps {\n active: number\n dir: string\n center: boolean\n finishStatus: string\n processStatus: string\n round: string\n}\n\nexport interface StepItemState {\n uid: number\n currentStatus: string\n setIndex: (val: number) => void\n // calcProgress: (status: string) => void\n}\n\nexport interface IStepsInject {\n props: IStepsProps\n steps: Ref<StepItemState[]>\n addStep: (item: StepItemState) => void\n removeStep: (uid: number) => void\n}\n\nexport default defineComponent({\n name: 'Step',\n components: {\n HlIcon,\n SystemChecked,\n SystemClose,\n },\n props: stepProps,\n setup(props) {\n const { namespace } = useNamespace('step')\n const index = ref(-1)\n const internalStatus = ref('')\n const parent: IStepsInject = inject('Steps')\n const currentInstance = getCurrentInstance()\n\n onMounted(() => {\n watch(\n [() => parent.props.active, () => parent.props.processStatus, () => parent.props.finishStatus],\n ([active]) => {\n updateStatus(active)\n },\n { immediate: true },\n )\n })\n\n onBeforeUnmount(() => {\n parent.removeStep(stepItemState.uid)\n })\n\n const currentStatus = computed(() => {\n return props.status || internalStatus.value\n })\n const prevStatus = computed(() => {\n const prevStep = parent.steps.value[index.value - 1]\n return prevStep ? prevStep.currentStatus : 'wait'\n })\n const isCenter = computed(() => {\n return parent.props.center\n })\n const isVertical = computed(() => {\n return parent.props.dir === 'vertical'\n })\n const isInline = computed(() => {\n return parent.props.dir === 'inline'\n })\n const stepsCount = computed(() => {\n return parent.steps.value.length\n })\n const isLast = computed(() => {\n return parent.steps.value[stepsCount.value - 1]?.uid === currentInstance.uid\n })\n\n const setIndex = (val: number) => {\n index.value = val\n }\n\n const updateStatus = (activeIndex: number) => {\n if (activeIndex > index.value) {\n internalStatus.value = parent.props.finishStatus\n } else if (activeIndex === index.value && prevStatus.value !== 'error') {\n internalStatus.value = parent.props.processStatus\n } else {\n internalStatus.value = 'wait'\n }\n }\n\n const stepItemState = reactive({\n uid: currentInstance!.uid,\n currentStatus,\n setIndex,\n })\n parent.addStep(stepItemState)\n\n return {\n namespace,\n index,\n currentStatus,\n isCenter,\n isVertical,\n isInline,\n isLast,\n parent,\n setIndex,\n updateStatus,\n }\n },\n})\n</script>\n"],"names":["_toDisplayString","_createCommentVNode"],"mappings":";;;;;;;;;;AA8GA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA;AACF,EACA,OAAO;AAAA,EACP,MAAM,OAAO;AACX,UAAM,EAAE,cAAc,aAAa,MAAM;AACzC,UAAM,QAAQ,IAAI,EAAE;AACpB,UAAM,iBAAiB,IAAI,EAAE;AAC7B,UAAM,SAAuB,OAAO,OAAO;AAC3C,UAAM,kBAAkB;AAExB,cAAU,MAAM;AACd,YACE,CAAC,MAAM,OAAO,MAAM,QAAQ,MAAM,OAAO,MAAM,eAAe,MAAM,OAAO,MAAM,YAAY,GAC7F,CAAC,CAAC,YAAY;AACZ,qBAAa,MAAM;AAAA,SAErB,EAAE,WAAW,MACf;AAAA,KACD;AAED,oBAAgB,MAAM;AACpB,aAAO,WAAW,cAAc,GAAG;AAAA,KACpC;AAED,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,UAAU,eAAe;AAAA,KACvC;AACD,UAAM,aAAa,SAAS,MAAM;AAChC,YAAM,WAAW,OAAO,MAAM,MAAM,MAAM,QAAQ;AAClD,aAAO,WAAW,SAAS,gBAAgB;AAAA,KAC5C;AACD,UAAM,WAAW,SAAS,MAAM;AAC9B,aAAO,OAAO,MAAM;AAAA,KACrB;AACD,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,OAAO,MAAM,QAAQ;AAAA,KAC7B;AACD,UAAM,WAAW,SAAS,MAAM;AAC9B,aAAO,OAAO,MAAM,QAAQ;AAAA,KAC7B;AACD,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,OAAO,MAAM,MAAM;AAAA,KAC3B;AACD,UAAM,SAAS,SAAS,MAAM;AAC5B,aAAO;AAAkE;AAG3E;AACE;AAAc;AAGhB;AACE,UAAI,2BAA2B;AAC7B;AAAoC;AAEpC,sCAA8B,MAAM;AAAA;AAEpC;AAAuB;AACzB;AAGF;AAA+B;AACP,MACtB;AAAA,MACA;AAAA;AAEF;AAEA,WAAO;AAAA;AACL,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ;;;;;;AAzHQ,gDA1EyB;AAA4F;;AAoC9G;AAdH;AAnBE;;AAAsD,UAAgC,kBAAa;AAAK;;;AAQvG;AAD4D;YAAxC;AAAM;aAEhBA,qBAAa,YAA9B;AAIO,UAHL;AAEU;AAFkC;;AACxB;AAAA;;;;AAOf,UAHL;AAEU;AAFkC;;AAC1B;AAAA;;;;;;AAIA;AACE,0DACG;AAAA;AACgB,+CAAf;AAAK;;;AAEP;AACS;AAAP;;;;AAKpB;UAFwC;AAAM;;AACD;AAAV;;;;AAwClC;AAlCa;AAqBd;AAnBE;;AAA0D,YAAkC,kBAAa;AAAK;;;AAQ7G;AAD4D;cAAxC;AAAM;eAEhBA,qBAAa,YAA9B;AAIO,YAHL;AAEU;AAFkC;;AACxB;AAAA;;;;AAOf,YAHL;AAEU;AAFkC;;AAC1B;AAAA;;;;;;AAIA;;AAGxB,MACAC,mBAOM;AAPgB,wDACG;AAAA;AACgB,6CAAf;AAAK;;;AAIvB;UAFwC;AAAM;;AACD;AAAV;;;;;;;;;;;"}