<template>
  <div class="kole-steplist" :class="{ 'is-horizontal': direction === 'horizontal' }">
    <div class="kole-steplist-item" v-for="(it, i) in steps" :key="i"
         :class="['is-' + it.status, { 'is-clickable': clickable }]" @click="clickable && emit('step-click', i)">
      <span class="kole-steplist-node">{{ nodeText(it, i) }}</span>
      <span class="kole-steplist-line"></span>
      <div class="kole-steplist-body">
        <div class="kole-steplist-title">{{ it.title }}</div>
        <div class="kole-steplist-desc" v-if="it.desc">{{ it.desc }}</div>
      </div>
    </div>
  </div>
</template>

<script setup>
const props = defineProps({
  steps: { type: Array, default: () => [] },
  direction: { type: String, default: 'vertical' },
  clickable: { type: Boolean, default: false }
});
const emit = defineEmits(['step-click']);

function nodeText(it, i) {
  if (it.status === 'done') return '✓';
  if (it.status === 'error') return '✕';
  return String(i + 1);
}
</script>

<style src="./StepList.css"></style>
