comic-plus
Version:
<p align="center"> <img width="200px" src="./logo.png"/> </p>
51 lines (50 loc) • 1.63 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const vue = require("vue");
const type = require("./type.js");
require("../../../utils/config.js");
const typescript = require("../../../utils/typescript.js");
require("@vueuse/core");
require("../../../icons/index.js");
const components = require("../../../icons/components/components.js");
const useStepItem = (props) => {
const instance = vue.getCurrentInstance();
const { props: injectProps, addItem, removeItem, itemList, maxWidth } = vue.inject(type.STEP_PROVIDE);
const isFinish = vue.computed(() => {
if (!injectProps.active) return false;
return itemList.value.findIndex((id) => id === instance.uid) < injectProps.active;
});
const isCurrent = vue.computed(() => {
if (injectProps.active === null || injectProps.active === void 0) return false;
return currentIndex.value === injectProps.active;
});
const currentIndex = vue.computed(() => {
return itemList.value.findIndex((id) => id === instance.uid);
});
const currentIcon = vue.computed(() => {
if (typescript.isVueComponent(props.icon)) return props.icon;
if (isCurrent.value) {
return props.error ? components.CloseFilled : null;
}
return isFinish.value ? components.CheckOne : null;
});
vue.onMounted(() => {
addItem(instance.uid);
});
vue.onBeforeUnmount(() => {
removeItem(instance.uid);
});
return {
instance,
injectProps,
addItem,
removeItem,
itemList,
isFinish,
isCurrent,
currentIndex,
currentIcon,
maxWidth
};
};
exports.useStepItem = useStepItem;