59 lines
1.0 KiB
Plaintext
59 lines
1.0 KiB
Plaintext
<script lang="ts">
|
|
export default {
|
|
name: "LayStep",
|
|
};
|
|
</script>
|
|
|
|
<script setup lang="ts">
|
|
import { ref, watch, provide, withDefaults } from "vue";
|
|
import "./index.less";
|
|
|
|
export interface StepProps {
|
|
active?: number;
|
|
center?: boolean;
|
|
direction?: string;
|
|
space?: string;
|
|
currentStatus?: string;
|
|
composition?: string;
|
|
simple?: boolean;
|
|
}
|
|
|
|
const props = withDefaults(defineProps<StepProps>(), {
|
|
active: 0,
|
|
center: false,
|
|
direction: "horizontal",
|
|
space: "auto",
|
|
currentStatus: "success",
|
|
composition: "default",
|
|
simple: false,
|
|
});
|
|
|
|
const steps = ref([]);
|
|
|
|
const emits = defineEmits(["onChange"]);
|
|
|
|
const change = (index: any) => {
|
|
emits("onChange", index - 1);
|
|
};
|
|
|
|
watch(steps, () => {
|
|
steps.value.forEach(
|
|
(instance: { setIndex: (arg0: any) => void }, index: any) => {
|
|
instance.setIndex(index);
|
|
}
|
|
);
|
|
});
|
|
|
|
provide("LayStep", {
|
|
props,
|
|
steps,
|
|
change,
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<div :class="['lay-step', direction !== 'vertical' ? '' : 'lay-step-column']">
|
|
<slot></slot>
|
|
</div>
|
|
</template>
|