2FAuth/resources/js_vue3/components/Dots.vue

49 lines
950 B
Vue
Raw Normal View History

2023-10-19 11:40:19 +02:00
<script setup>
const props = defineProps({
stepCount: {
type: Number,
default: 10
},
initialIndex: {
type: Number,
default: null
},
})
const activeDot = ref(0)
const isOff = computed(() => {
return activeDot.value == -1
})
/**
* Turns On dots
*/
function turnOn(index) {
activeDot.value = index < props.stepCount ? index + 1 : 1
}
/**
* Turns Off all dots
*/
function turnOff() {
activeDot.value = -1
}
onMounted(() => {
if (props.initialIndex != null) {
turnOn(props.initialIndex)
}
})
defineExpose({
turnOn,
turnOff
})
</script>
<template>
<ul class="dots" :class="{'off' : isOff}">
<li v-for="n in stepCount" :key="n" :data-is-active="n == activeDot ? true : null"></li>
</ul>
</template>